1 package com.atlassian.plugins.codegen.annotations.asm;
2
3 import java.util.Map;
4
5 import com.atlassian.plugins.codegen.PluginModuleCreatorRegistryImpl;
6 import com.atlassian.plugins.codegen.modules.PluginModuleCreator;
7 import com.atlassian.plugins.codegen.modules.PluginModuleCreatorRegistry;
8
9 import org.junit.Before;
10 import org.junit.Test;
11
12 import fake.jar.annotation.parser.modules.JARInheritedValidJira;
13 import fake.jar.annotation.parser.modules.JARJiraAndConfluenceCreator;
14 import fake.jar.annotation.parser.modules.JARJiraAnnotatedWithoutInterface;
15 import fake.jar.annotation.parser.modules.JARValidJiraModuleCreator;
16 import fake.jar.annotation.parser.modules.nested.JARNestedValidJira;
17
18 import static org.junit.Assert.assertNotNull;
19 import static org.junit.Assert.assertTrue;
20
21
22
23
24 public class JARAnnotationParserTest
25 {
26 private static final String MODULES_PACKAGE = "fake.jar.annotation.parser.modules";
27
28 private PluginModuleCreatorRegistry registry;
29 private ModuleCreatorAnnotationParser parser;
30
31 @Before
32 public void setup()
33 {
34 registry = new PluginModuleCreatorRegistryImpl();
35 parser = new ModuleCreatorAnnotationParser(registry);
36 }
37
38 @Test
39 public void hasJiraModule() throws Exception
40 {
41
42 parser.parse(MODULES_PACKAGE);
43
44 Map<Class, PluginModuleCreator> modules = registry.getModuleCreatorsForProduct(PluginModuleCreatorRegistry.JIRA);
45 assertNotNull("module map is null", modules);
46 assertTrue("no testmodules registered", modules.size() > 0);
47 assertTrue("jira module not found", modules.containsKey(JARValidJiraModuleCreator.class));
48 }
49
50 @Test
51 public void annotatedWithoutInterfaceIsNotRegistered() throws Exception
52 {
53 parser.parse(MODULES_PACKAGE);
54
55 Map<Class, PluginModuleCreator> modules = registry.getModuleCreatorsForProduct(PluginModuleCreatorRegistry.JIRA);
56 assertNotNull("module map is null", modules);
57 assertTrue("no testmodules registered", modules.size() > 0);
58 assertTrue("non-module found", !modules.containsKey(JARJiraAnnotatedWithoutInterface.class));
59 }
60
61 @Test
62 public void nestedCreatorsAreRegistered() throws Exception
63 {
64 parser.parse(MODULES_PACKAGE);
65
66 Map<Class, PluginModuleCreator> modules = registry.getModuleCreatorsForProduct(PluginModuleCreatorRegistry.JIRA);
67 assertNotNull("module map is null", modules);
68 assertTrue("no testmodules registered", modules.size() > 0);
69 assertTrue("nested jira module not found", modules.containsKey(JARNestedValidJira.class));
70 }
71
72 @Test
73 public void inheritedCreatorsAreRegistered() throws Exception
74 {
75 parser.parse(MODULES_PACKAGE);
76
77 Map<Class, PluginModuleCreator> modules = registry.getModuleCreatorsForProduct(PluginModuleCreatorRegistry.JIRA);
78 assertNotNull("module map is null", modules);
79 assertTrue("no testmodules registered", modules.size() > 0);
80 assertTrue("inherited jira module not found", modules.containsKey(JARInheritedValidJira.class));
81 }
82
83 @Test
84 public void muiltipleProductsHaveSameCreator() throws Exception
85 {
86 parser.parse(MODULES_PACKAGE);
87
88 Map<Class, PluginModuleCreator> jiraModules = registry.getModuleCreatorsForProduct(PluginModuleCreatorRegistry.JIRA);
89 Map<Class, PluginModuleCreator> confluenceModules = registry.getModuleCreatorsForProduct(PluginModuleCreatorRegistry.CONFLUENCE);
90
91 assertTrue("jiraAndConfluence not found for jira", jiraModules.containsKey(JARJiraAndConfluenceCreator.class));
92 assertTrue("jiraAndConfluence not found for confluence", confluenceModules.containsKey(JARJiraAndConfluenceCreator.class));
93 }
94 }