/plugin-module-codegen-engine/src/test/java/com/atlassian/plugins/codegen/modules/jira/ReportTest.java

https://bitbucket.org/mmeinhold/amps · Java · 272 lines · 209 code · 60 blank · 3 comment · 0 complexity · ed747dd30918a272efa0021cc3e02e7a MD5 · raw file

  1. package com.atlassian.plugins.codegen.modules.jira;
  2. import com.atlassian.plugins.codegen.AbstractModuleCreatorTestCase;
  3. import com.atlassian.plugins.codegen.modules.common.Resource;
  4. import org.junit.Before;
  5. import org.junit.Test;
  6. import static junit.framework.Assert.assertEquals;
  7. import static junit.framework.Assert.assertNotNull;
  8. import static org.junit.Assert.assertNull;
  9. /**
  10. * @since 3.6
  11. */
  12. public class ReportTest extends AbstractModuleCreatorTestCase<ReportProperties>
  13. {
  14. public ReportTest()
  15. {
  16. super("report", new ReportModuleCreator());
  17. }
  18. @Before
  19. public void setupProps() throws Exception
  20. {
  21. setProps(new ReportProperties(PACKAGE_NAME + ".MyReport"));
  22. props.setIncludeExamples(false);
  23. }
  24. @Test
  25. public void classFileIsGenerated() throws Exception
  26. {
  27. getSourceFile(PACKAGE_NAME, "MyReport");
  28. }
  29. @Test
  30. public void unitTestFileIsGenerated() throws Exception
  31. {
  32. getTestSourceFile(TEST_PACKAGE_NAME, "MyReportTest");
  33. }
  34. @Test
  35. public void moduleHasDefaultKey() throws Exception
  36. {
  37. assertEquals("my-report",
  38. getGeneratedModule().attributeValue("key"));
  39. }
  40. @Test
  41. public void moduleHasClass() throws Exception
  42. {
  43. assertEquals(PACKAGE_NAME + ".MyReport",
  44. getGeneratedModule().attributeValue("class"));
  45. }
  46. @Test
  47. public void i18nResourceIsGenerated() throws Exception
  48. {
  49. Resource resource = new Resource();
  50. resource.setName("i18n");
  51. resource.setLocation("MyReport");
  52. resource.setType("i18n");
  53. props.getResources().add(resource);
  54. getResourceFile("", "MyReport.properties");
  55. }
  56. @Test
  57. public void labelIsAdded() throws Exception
  58. {
  59. props.setLabel(label);
  60. assertNotNull(getGeneratedModule().selectSingleNode("label"));
  61. }
  62. @Test
  63. public void labelHasI18nKey() throws Exception
  64. {
  65. props.setLabel(label);
  66. assertEquals(label.getKey(), getGeneratedModule().selectSingleNode("label/@key").getText());
  67. }
  68. @Test
  69. public void labelHasParams() throws Exception
  70. {
  71. props.setLabel(label);
  72. assertEquals(2, getGeneratedModule().selectNodes("label/param").size());
  73. }
  74. @Test
  75. public void labelParam0HasName() throws Exception
  76. {
  77. props.setLabel(label);
  78. assertEquals("param0", getGeneratedModule().selectSingleNode("label/param[1]/@name").getText());
  79. }
  80. @Test
  81. public void labelParam0HasValue() throws Exception
  82. {
  83. props.setLabel(label);
  84. assertEquals(label.getParams().get("param0"), getGeneratedModule().selectSingleNode("label/param[1]/@value").getText());
  85. }
  86. @Test
  87. public void labelParam1HasName() throws Exception
  88. {
  89. props.setLabel(label);
  90. assertEquals("param1", getGeneratedModule().selectSingleNode("label/param[2]/@name").getText());
  91. }
  92. @Test
  93. public void labelParam1HasValue() throws Exception
  94. {
  95. props.setLabel(label);
  96. assertEquals(label.getParams().get("param1"), getGeneratedModule().selectSingleNode("label/param[2]/@value").getText());
  97. }
  98. @Test
  99. public void labelStringIsAddedToI18nProperties() throws Exception
  100. {
  101. props.setLabel(label);
  102. getI18nString(label.getKey(), label.getValue());
  103. }
  104. @Test
  105. public void resourceIsAdded() throws Exception
  106. {
  107. props.getResources().add(cssResource);
  108. assertNotNull(getGeneratedModule().selectSingleNode("resource"));
  109. }
  110. @Test
  111. public void resourceHasName() throws Exception
  112. {
  113. props.getResources().add(cssResource);
  114. assertEquals("style.css", getGeneratedModule().selectSingleNode("resource/@name").getText());
  115. }
  116. @Test
  117. public void resourceHasLocation() throws Exception
  118. {
  119. props.getResources().add(cssResource);
  120. assertEquals("com/example/plugin/style.css", getGeneratedModule().selectSingleNode("resource/@location").getText());
  121. }
  122. @Test
  123. public void resourceHasType() throws Exception
  124. {
  125. props.getResources().add(cssResource);
  126. assertEquals("download", getGeneratedModule().selectSingleNode("resource/@type").getText());
  127. }
  128. @Test
  129. public void namePatternResourceAdded() throws Exception
  130. {
  131. props.getResources().add(cssNamePatternResource);
  132. assertNotNull(getGeneratedModule().selectSingleNode("resource"));
  133. }
  134. @Test
  135. public void namePatternResourceHasNamePattern() throws Exception
  136. {
  137. props.getResources().add(cssNamePatternResource);
  138. assertEquals("*.css", getGeneratedModule().selectSingleNode("resource/@namePattern").getText());
  139. }
  140. @Test
  141. public void namePatternResourceHasLocation() throws Exception
  142. {
  143. props.getResources().add(cssNamePatternResource);
  144. assertEquals("com/example/plugin", getGeneratedModule().selectSingleNode("resource/@location").getText());
  145. }
  146. @Test
  147. public void namePatternResourceHasType() throws Exception
  148. {
  149. props.getResources().add(cssNamePatternResource);
  150. assertEquals("download", getGeneratedModule().selectSingleNode("resource/@type").getText());
  151. }
  152. @Test
  153. public void resourceNameChosenOverPattern() throws Exception
  154. {
  155. cssResource.setNamePattern("*.css");
  156. props.getResources().add(cssResource);
  157. assertNull(getGeneratedModule().selectSingleNode("resource/@namePattern"));
  158. }
  159. @Test
  160. public void resourceParamHasName() throws Exception
  161. {
  162. cssResource.getParams().put("content-type", "text/css");
  163. props.getResources().add(cssResource);
  164. assertEquals("content-type", getGeneratedModule().selectSingleNode("resource/param/@name").getText());
  165. }
  166. @Test
  167. public void resourceParamHasValue() throws Exception
  168. {
  169. cssResource.getParams().put("content-type", "text/css");
  170. props.getResources().add(cssResource);
  171. assertEquals("text/css", getGeneratedModule().selectSingleNode("resource/param/@value").getText());
  172. }
  173. @Test
  174. public void secondResourceParamAdded() throws Exception
  175. {
  176. cssResource.getParams().put("content-type", "text/css");
  177. cssResource.getParams().put("awesome", "me");
  178. props.getResources().add(cssResource);
  179. assertEquals("me", getGeneratedModule().selectSingleNode("resource/param[@name='awesome']/@value").getText());
  180. }
  181. @Test
  182. public void allResourceParamsAdded() throws Exception
  183. {
  184. cssResource.getParams().put("content-type", "text/css");
  185. cssResource.getParams().put("awesome", "me");
  186. props.getResources().add(cssResource);
  187. assertEquals(2, getGeneratedModule().selectNodes("resource/param").size());
  188. }
  189. @Test
  190. public void secondResourceAdded() throws Exception
  191. {
  192. Resource resource2 = new Resource();
  193. resource2.setName("custom.js");
  194. resource2.setLocation("com/example/plugin/custom.js");
  195. resource2.setType("download");
  196. props.getResources().add(cssResource);
  197. props.getResources().add(resource2);
  198. assertEquals("com/example/plugin/custom.js",
  199. getGeneratedModule().selectSingleNode("resource[@name='custom.js']/@location").getText());
  200. }
  201. @Test
  202. public void allResourcesAdded() throws Exception
  203. {
  204. Resource resource2 = new Resource();
  205. resource2.setName("custom.js");
  206. resource2.setLocation("com/example/plugin/custom.js");
  207. resource2.setType("download");
  208. props.getResources().add(cssResource);
  209. props.getResources().add(resource2);
  210. assertEquals(2, getGeneratedModule().selectNodes("resource").size());
  211. }
  212. }