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