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   * @since 3.5
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  }