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

https://bitbucket.org/mmeinhold/amps · Java · 228 lines · 175 code · 50 blank · 3 comment · 0 complexity · 0e937d393ca9066687e0c1375847578f MD5 · raw file

  1. package com.atlassian.plugins.codegen.modules.jira;
  2. import com.atlassian.plugins.codegen.AbstractModuleCreatorTestCase;
  3. import com.atlassian.plugins.codegen.SourceFile;
  4. import com.atlassian.plugins.codegen.modules.common.Resource;
  5. import org.junit.Before;
  6. import org.junit.Test;
  7. import static junit.framework.Assert.assertEquals;
  8. import static junit.framework.Assert.assertNotNull;
  9. import static org.junit.Assert.assertNull;
  10. import static org.junit.Assert.assertTrue;
  11. /**
  12. * @since 3.6
  13. */
  14. public class CustomFieldSearcherTest extends AbstractModuleCreatorTestCase<CustomFieldSearcherProperties>
  15. {
  16. public CustomFieldSearcherTest()
  17. {
  18. super("customfield-searcher", new CustomFieldSearcherModuleCreator());
  19. }
  20. @Before
  21. public void setupProps() throws Exception
  22. {
  23. setProps(new CustomFieldSearcherProperties(PACKAGE_NAME + ".MyCustomFieldSearcher"));
  24. props.setIncludeExamples(false);
  25. }
  26. @Test
  27. public void customClassFileIsGenerated() throws Exception
  28. {
  29. props.setGenerateClass(true);
  30. getSourceFile(PACKAGE_NAME, "MyCustomFieldSearcher");
  31. }
  32. @Test
  33. public void customUnitTestFileIsGenerated() throws Exception
  34. {
  35. props.setGenerateClass(true);
  36. getTestSourceFile(TEST_PACKAGE_NAME, "MyCustomFieldSearcherTest");
  37. }
  38. @Test
  39. public void genericClassFilesAreNotGenerated() throws Exception
  40. {
  41. props.setGenerateClass(false);
  42. assertTrue(getChangesetForModule(SourceFile.class).isEmpty());
  43. }
  44. @Test
  45. public void moduleHasDefaultKey() throws Exception
  46. {
  47. assertEquals("my-custom-field-searcher",
  48. getGeneratedModule().attributeValue("key"));
  49. }
  50. @Test
  51. public void moduleHasClass() throws Exception
  52. {
  53. assertEquals(PACKAGE_NAME + ".MyCustomFieldSearcher",
  54. getGeneratedModule().attributeValue("class"));
  55. }
  56. @Test
  57. public void moduleHasValidCustomFieldPackage() throws Exception
  58. {
  59. props.setValidCustomFieldPackage("com.atlassian.customfields");
  60. props.setValidCustomFieldKey("some-searcher");
  61. assertEquals("com.atlassian.customfields", getGeneratedModule().selectSingleNode("valid-customfield-type/@package").getText());
  62. }
  63. @Test
  64. public void moduleHasValidCustomFieldKey() throws Exception
  65. {
  66. props.setValidCustomFieldPackage("com.atlassian.customfields");
  67. props.setValidCustomFieldKey("some-searcher");
  68. assertEquals("some-searcher", getGeneratedModule().selectSingleNode("valid-customfield-type/@key").getText());
  69. }
  70. @Test
  71. public void resourceIsAdded() throws Exception
  72. {
  73. props.getResources().add(cssResource);
  74. assertNotNull(getGeneratedModule().selectSingleNode("resource"));
  75. }
  76. @Test
  77. public void resourceHasName() throws Exception
  78. {
  79. props.getResources().add(cssResource);
  80. assertEquals("style.css", getGeneratedModule().selectSingleNode("resource/@name").getText());
  81. }
  82. @Test
  83. public void resourceHasLocation() throws Exception
  84. {
  85. props.getResources().add(cssResource);
  86. assertEquals("com/example/plugin/style.css", getGeneratedModule().selectSingleNode("resource/@location").getText());
  87. }
  88. @Test
  89. public void resourceHasType() throws Exception
  90. {
  91. props.getResources().add(cssResource);
  92. assertEquals("download", getGeneratedModule().selectSingleNode("resource/@type").getText());
  93. }
  94. @Test
  95. public void namePatternResourceAdded() throws Exception
  96. {
  97. props.getResources().add(cssNamePatternResource);
  98. assertNotNull(getGeneratedModule().selectSingleNode("resource"));
  99. }
  100. @Test
  101. public void namePatternResourceHasNamePattern() throws Exception
  102. {
  103. props.getResources().add(cssNamePatternResource);
  104. assertEquals("*.css", getGeneratedModule().selectSingleNode("resource/@namePattern").getText());
  105. }
  106. @Test
  107. public void namePatternResourceHasLocation() throws Exception
  108. {
  109. props.getResources().add(cssNamePatternResource);
  110. assertEquals("com/example/plugin", getGeneratedModule().selectSingleNode("resource/@location").getText());
  111. }
  112. @Test
  113. public void namePatternResourceHasType() throws Exception
  114. {
  115. props.getResources().add(cssNamePatternResource);
  116. assertEquals("download", getGeneratedModule().selectSingleNode("resource/@type").getText());
  117. }
  118. @Test
  119. public void resourceNameChosenOverPattern() throws Exception
  120. {
  121. cssResource.setNamePattern("*.css");
  122. props.getResources().add(cssResource);
  123. assertNull(getGeneratedModule().selectSingleNode("resource/@namePattern"));
  124. }
  125. @Test
  126. public void resourceParamHasName() throws Exception
  127. {
  128. cssResource.getParams().put("content-type", "text/css");
  129. props.getResources().add(cssResource);
  130. assertEquals("content-type", getGeneratedModule().selectSingleNode("resource/param/@name").getText());
  131. }
  132. @Test
  133. public void resourceParamHasValue() throws Exception
  134. {
  135. cssResource.getParams().put("content-type", "text/css");
  136. props.getResources().add(cssResource);
  137. assertEquals("text/css", getGeneratedModule().selectSingleNode("resource/param/@value").getText());
  138. }
  139. @Test
  140. public void secondResourceParamAdded() throws Exception
  141. {
  142. cssResource.getParams().put("content-type", "text/css");
  143. cssResource.getParams().put("awesome", "me");
  144. props.getResources().add(cssResource);
  145. assertEquals("me", getGeneratedModule().selectSingleNode("resource/param[@name='awesome']/@value").getText());
  146. }
  147. @Test
  148. public void allResourceParamsAdded() throws Exception
  149. {
  150. cssResource.getParams().put("content-type", "text/css");
  151. cssResource.getParams().put("awesome", "me");
  152. props.getResources().add(cssResource);
  153. assertEquals(2, getGeneratedModule().selectNodes("resource/param").size());
  154. }
  155. @Test
  156. public void secondResourceAdded() throws Exception
  157. {
  158. Resource resource2 = new Resource();
  159. resource2.setName("custom.js");
  160. resource2.setLocation("com/example/plugin/custom.js");
  161. resource2.setType("download");
  162. props.getResources().add(cssResource);
  163. props.getResources().add(resource2);
  164. assertEquals("com/example/plugin/custom.js",
  165. getGeneratedModule().selectSingleNode("resource[@name='custom.js']/@location").getText());
  166. }
  167. @Test
  168. public void allResourcesAdded() throws Exception
  169. {
  170. Resource resource2 = new Resource();
  171. resource2.setName("custom.js");
  172. resource2.setLocation("com/example/plugin/custom.js");
  173. resource2.setType("download");
  174. props.getResources().add(cssResource);
  175. props.getResources().add(resource2);
  176. assertEquals(2, getGeneratedModule().selectNodes("resource").size());
  177. }
  178. }