1   package com.atlassian.maven.plugins.amps.codegen.prompter.jira;
2   
3   import com.atlassian.maven.plugins.amps.codegen.prompter.AbstractModulePrompter;
4   import com.atlassian.maven.plugins.amps.codegen.prompter.AbstractPrompterTest;
5   import com.atlassian.maven.plugins.amps.codegen.prompter.PluginModulePrompter;
6   import com.atlassian.plugins.codegen.modules.jira.TabPanelProperties;
7   import com.atlassian.plugins.codegen.modules.jira.VersionTabPanelModuleCreator;
8   
9   import org.codehaus.plexus.components.interactivity.Prompter;
10  import org.codehaus.plexus.components.interactivity.PrompterException;
11  import org.junit.Before;
12  import org.junit.Test;
13  
14  import static com.atlassian.maven.plugins.amps.codegen.prompter.AbstractModulePrompter.MODULE_DESCRIP_PROMPT;
15  import static com.atlassian.maven.plugins.amps.codegen.prompter.AbstractModulePrompter.MODULE_KEY_PROMPT;
16  import static com.atlassian.maven.plugins.amps.codegen.prompter.AbstractModulePrompter.MODULE_NAME_PROMPT;
17  import static org.junit.Assert.*;
18  import static org.mockito.Mockito.mock;
19  import static org.mockito.Mockito.when;
20  
21  /**
22   * @since 3.6
23   */
24  public class VersionTabPanelPrompterTest extends AbstractPrompterTest
25  {
26      public static final String PACKAGE = "com.atlassian.plugins.jira.tabpanels";
27      public static final String CLASSNAME = "MyVersionTabPanel";
28      public static final String MODULE_NAME = "My Version Tab Panel";
29      public static final String MODULE_KEY = "my-version-tab-panel";
30      public static final String DESCRIPTION = "The My Version Tab Panel Plugin";
31      public static final String I18N_NAME_KEY = "my-version-tab-panel.name";
32      public static final String I18N_DESCRIPTION_KEY = "my-version-tab-panel.description";
33  
34      public static final String ADV_MODULE_NAME = "My Awesome Plugin";
35      public static final String ADV_MODULE_KEY = "awesome-module";
36      public static final String ADV_DESCRIPTION = "The Awesomest Plugin Ever";
37      public static final String ADV_I18N_NAME_KEY = "awesome-plugin.name";
38      public static final String ADV_I18N_DESCRIPTION_KEY = "pluginus-awesomeous.description";
39  
40      public static final String ORDER = "22";
41      public static final String LABEL_KEY = "item.label";
42      public static final String LABEL_VALUE = "this is my label";
43  
44      Prompter prompter;
45  
46      @Before
47      public void setup()
48      {
49          prompter = mock(Prompter.class);
50      }
51  
52      @Test
53      public void basicCustomPropertiesAreValid() throws PrompterException
54      {
55          when(prompter.prompt("Use " + VersionTabPanelModuleCreator.GENERIC_CLASS + "?", PluginModulePrompter.YN_ANSWERS, "Y")).thenReturn("n");
56          when(prompter.prompt("Enter New Classname", "MyVersionTabPanel")).thenReturn(CLASSNAME);
57          when(prompter.prompt("Enter Package Name", AbstractModulePrompter.DEFAULT_BASE_PACKAGE + ".jira.tabpanels")).thenReturn(PACKAGE);
58          when(prompter.prompt("Show Advanced Setup?", PluginModulePrompter.YN_ANSWERS, "N")).thenReturn("N");
59          when(prompter.prompt("Include Example Code?", PluginModulePrompter.YN_ANSWERS, "N")).thenReturn("N");
60  
61          VersionTabPanelPrompter modulePrompter = new VersionTabPanelPrompter(prompter);
62          modulePrompter.setUseAnsiColor(false);
63          TabPanelProperties props = modulePrompter.getModulePropertiesFromInput(moduleLocation);
64  
65          assertEquals("wrong class", CLASSNAME, props.getClassId().getName());
66          assertEquals("wrong class package", PACKAGE, props.getClassId().getPackage());
67          assertEquals("wrong module name", MODULE_NAME, props.getModuleName());
68          assertEquals("wrong module key", MODULE_KEY, props.getModuleKey());
69          assertEquals("wrong description", DESCRIPTION, props.getDescription());
70          assertEquals("wrong i18n name key", I18N_NAME_KEY, props.getNameI18nKey());
71          assertEquals("wrong i18n desc key", I18N_DESCRIPTION_KEY, props.getDescriptionI18nKey());
72          assertEquals("wrong order", "10", props.getOrder());
73          assertEquals("wrong label key", MODULE_KEY + ".label", props.getLabel()
74                  .getKey());
75          assertEquals("wrong label value", MODULE_NAME, props.getLabel()
76                  .getValue());
77          assertTrue("use custom class should be true", props.isUseCustomClass());
78      }
79  
80      @Test
81      public void basicGenericPropertiesAreValid() throws PrompterException
82      {
83          when(prompter.prompt("Use " + VersionTabPanelModuleCreator.GENERIC_CLASS + "?", PluginModulePrompter.YN_ANSWERS, "Y")).thenReturn("y");
84          when(prompter.prompt("Enter Plugin Module Name", "My Version Tab Panel")).thenReturn(MODULE_NAME);
85          when(prompter.prompt("Show Advanced Setup?", PluginModulePrompter.YN_ANSWERS, "N")).thenReturn("N");
86          when(prompter.prompt("Include Example Code?", PluginModulePrompter.YN_ANSWERS, "N")).thenReturn("N");
87  
88          VersionTabPanelPrompter modulePrompter = new VersionTabPanelPrompter(prompter);
89          modulePrompter.setUseAnsiColor(false);
90          TabPanelProperties props = modulePrompter.getModulePropertiesFromInput(moduleLocation);
91  
92          assertEquals("wrong class", VersionTabPanelModuleCreator.GENERIC_CLASS, props.getClassId().getName());
93          assertEquals("wrong class package", VersionTabPanelModuleCreator.GENERIC_PACKAGE, props.getClassId().getPackage());
94          assertEquals("wrong module name", MODULE_NAME, props.getModuleName());
95          assertEquals("wrong module key", MODULE_KEY, props.getModuleKey());
96          assertEquals("wrong description", DESCRIPTION, props.getDescription());
97          assertEquals("wrong i18n name key", I18N_NAME_KEY, props.getNameI18nKey());
98          assertEquals("wrong i18n desc key", I18N_DESCRIPTION_KEY, props.getDescriptionI18nKey());
99          assertEquals("wrong order", "10", props.getOrder());
100         assertEquals("wrong label key", MODULE_KEY + ".label", props.getLabel()
101                 .getKey());
102         assertEquals("wrong label value", MODULE_NAME, props.getLabel()
103                 .getValue());
104         assertFalse("use custom class should be false", props.isUseCustomClass());
105     }
106 
107     @Test
108     public void advancedCustomPropertiesAreValid() throws PrompterException
109     {
110         when(prompter.prompt("Use " + VersionTabPanelModuleCreator.GENERIC_CLASS + "?", PluginModulePrompter.YN_ANSWERS, "Y")).thenReturn("n");
111         when(prompter.prompt("Enter New Classname", "MyVersionTabPanel")).thenReturn(CLASSNAME);
112         when(prompter.prompt("Enter Package Name", AbstractModulePrompter.DEFAULT_BASE_PACKAGE + ".jira.tabpanels")).thenReturn(PACKAGE);
113         when(prompter.prompt("Show Advanced Setup?", PluginModulePrompter.YN_ANSWERS, "N")).thenReturn("y");
114 
115         when(prompter.prompt(MODULE_NAME_PROMPT, MODULE_NAME)).thenReturn(ADV_MODULE_NAME);
116         when(prompter.prompt(MODULE_KEY_PROMPT, MODULE_KEY)).thenReturn(ADV_MODULE_KEY);
117         when(prompter.prompt(MODULE_DESCRIP_PROMPT, DESCRIPTION)).thenReturn(ADV_DESCRIPTION);
118         when(prompter.prompt("i18n Name Key", I18N_NAME_KEY)).thenReturn(ADV_I18N_NAME_KEY);
119         when(prompter.prompt("i18n Description Key", I18N_DESCRIPTION_KEY)).thenReturn(ADV_I18N_DESCRIPTION_KEY);
120 
121         when(prompter.prompt("Order", "10")).thenReturn(ORDER);
122         when(prompter.prompt("Enter Label Key", MODULE_KEY + ".label")).thenReturn(LABEL_KEY);
123         when(prompter.prompt("Enter Label Value", MODULE_NAME)).thenReturn(LABEL_VALUE);
124 
125         when(prompter.prompt("Include Example Code?", PluginModulePrompter.YN_ANSWERS, "N")).thenReturn("N");
126 
127         VersionTabPanelPrompter modulePrompter = new VersionTabPanelPrompter(prompter);
128         modulePrompter.setUseAnsiColor(false);
129         TabPanelProperties props = modulePrompter.getModulePropertiesFromInput(moduleLocation);
130 
131         assertEquals("wrong adv class", CLASSNAME, props.getClassId().getName());
132         assertEquals("wrong adv package", PACKAGE, props.getClassId().getPackage());
133         assertEquals("wrong adv module name", ADV_MODULE_NAME, props.getModuleName());
134         assertEquals("wrong adv module key", ADV_MODULE_KEY, props.getModuleKey());
135         assertEquals("wrong adv description", ADV_DESCRIPTION, props.getDescription());
136         assertEquals("wrong adv i18n name key", ADV_I18N_NAME_KEY, props.getNameI18nKey());
137         assertEquals("wrong adv i18n desc key", ADV_I18N_DESCRIPTION_KEY, props.getDescriptionI18nKey());
138         assertEquals("wrong order", ORDER, props.getOrder());
139         assertEquals("wrong label key", LABEL_KEY, props.getLabel()
140                 .getKey());
141         assertEquals("wrong label value", LABEL_VALUE, props.getLabel()
142                 .getValue());
143         assertTrue("use custom class should be true", props.isUseCustomClass());
144     }
145 
146     @Test
147     public void advancedGenericPropertiesAreValid() throws PrompterException
148     {
149         when(prompter.prompt("Use " + VersionTabPanelModuleCreator.GENERIC_CLASS + "?", PluginModulePrompter.YN_ANSWERS, "Y")).thenReturn("y");
150         when(prompter.prompt("Enter Plugin Module Name", "My Version Tab Panel")).thenReturn(ADV_MODULE_NAME);
151         when(prompter.prompt("Show Advanced Setup?", PluginModulePrompter.YN_ANSWERS, "N")).thenReturn("y");
152 
153         when(prompter.prompt(MODULE_KEY_PROMPT, "my-awesome-plugin")).thenReturn(ADV_MODULE_KEY);
154         when(prompter.prompt(MODULE_DESCRIP_PROMPT, "The My Awesome Plugin Plugin")).thenReturn(ADV_DESCRIPTION);
155         when(prompter.prompt("i18n Name Key", "my-awesome-plugin.name")).thenReturn(ADV_I18N_NAME_KEY);
156         when(prompter.prompt("i18n Description Key", "my-awesome-plugin.description")).thenReturn(ADV_I18N_DESCRIPTION_KEY);
157 
158         when(prompter.prompt("Order", "10")).thenReturn(ORDER);
159         when(prompter.prompt("Enter Label Key", "my-awesome-plugin.label")).thenReturn(LABEL_KEY);
160         when(prompter.prompt("Enter Label Value", ADV_MODULE_NAME)).thenReturn(LABEL_VALUE);
161 
162         when(prompter.prompt("Include Example Code?", PluginModulePrompter.YN_ANSWERS, "N")).thenReturn("N");
163 
164         VersionTabPanelPrompter modulePrompter = new VersionTabPanelPrompter(prompter);
165         modulePrompter.setUseAnsiColor(false);
166         TabPanelProperties props = modulePrompter.getModulePropertiesFromInput(moduleLocation);
167 
168         assertEquals("wrong adv class", VersionTabPanelModuleCreator.GENERIC_CLASS, props.getClassId().getName());
169         assertEquals("wrong adv class package", VersionTabPanelModuleCreator.GENERIC_PACKAGE, props.getClassId().getPackage());
170         assertEquals("wrong adv module name", ADV_MODULE_NAME, props.getModuleName());
171         assertEquals("wrong adv module key", ADV_MODULE_KEY, props.getModuleKey());
172         assertEquals("wrong adv description", ADV_DESCRIPTION, props.getDescription());
173         assertEquals("wrong adv i18n name key", ADV_I18N_NAME_KEY, props.getNameI18nKey());
174         assertEquals("wrong adv i18n desc key", ADV_I18N_DESCRIPTION_KEY, props.getDescriptionI18nKey());
175         assertEquals("wrong order", ORDER, props.getOrder());
176         assertEquals("wrong label key", LABEL_KEY, props.getLabel()
177                 .getKey());
178         assertEquals("wrong label value", LABEL_VALUE, props.getLabel()
179                 .getValue());
180         assertFalse("use custom class should be false", props.isUseCustomClass());
181     }
182 }