1 package com.atlassian.maven.plugins.amps.codegen.annotations.asm;
2
3 import com.atlassian.maven.plugins.amps.codegen.prompter.PluginModulePrompter;
4 import com.atlassian.maven.plugins.amps.codegen.prompter.PluginModulePrompterRegistry;
5 import com.atlassian.maven.plugins.amps.codegen.prompter.PluginModulePrompterRegistryImpl;
6
7 import org.apache.maven.plugin.logging.Log;
8 import org.apache.maven.plugin.logging.SystemStreamLog;
9 import org.codehaus.plexus.components.interactivity.Prompter;
10 import org.junit.Before;
11 import org.junit.Test;
12
13 import fake.annotation.parser.creators.NoSuperFakeCreator;
14 import fake.annotation.parser.creators.ValidFakeCreator;
15 import fake.annotation.parser.prompters.ValidPrompter;
16
17 import static org.junit.Assert.assertEquals;
18 import static org.junit.Assert.assertNull;
19 import static org.mockito.Mockito.mock;
20
21
22
23
24
25 public class PrompterAnnotationParserTest
26 {
27 private static final String PROMPTERS_PACKAGE = "fake.annotation.parser.prompters";
28 private Log log;
29 private Prompter mavenPrompter;
30 private PluginModulePrompterRegistry prompterRegistry;
31 private ModulePrompterAnnotationParser annotationParser;
32
33 @Before
34 public void setup()
35 {
36 mavenPrompter = mock(Prompter.class);
37 log = new SystemStreamLog();
38
39 prompterRegistry = new PluginModulePrompterRegistryImpl();
40 annotationParser = new ModulePrompterAnnotationParser(prompterRegistry);
41 annotationParser.setLog(log);
42 annotationParser.setMavenPrompter(mavenPrompter);
43 }
44
45 @Test
46 public void validPrompterRegistered() throws Exception
47 {
48 annotationParser.parse(PROMPTERS_PACKAGE);
49 PluginModulePrompter modulePrompter = prompterRegistry.getPrompterForCreatorClass(ValidFakeCreator.class);
50
51 assertEquals("module prompter does not match valid prompter", ValidPrompter.class, modulePrompter.getClass());
52 }
53
54 @Test
55 public void prompterWithoutSuperclassNotRegistered() throws Exception
56 {
57 annotationParser.parse(PROMPTERS_PACKAGE);
58 PluginModulePrompter modulePrompter = prompterRegistry.getPrompterForCreatorClass(NoSuperFakeCreator.class);
59
60 assertNull("prompter retured but doesn't extend AbstractPrompter", modulePrompter);
61 }
62 }