1   package com.atlassian.maven.plugins.amps.codegen.prompter.common;
2   
3   import com.atlassian.maven.plugins.amps.codegen.prompter.AbstractPrompterTest;
4   import com.atlassian.maven.plugins.amps.codegen.prompter.PluginModulePrompter;
5   import com.atlassian.plugins.codegen.modules.common.DownloadablePluginResourceProperties;
6   import com.atlassian.plugins.codegen.modules.common.Resource;
7   
8   import org.apache.commons.lang.StringUtils;
9   import org.codehaus.plexus.components.interactivity.PrompterException;
10  import org.junit.Test;
11  
12  import static org.junit.Assert.assertEquals;
13  import static org.junit.Assert.assertTrue;
14  import static org.mockito.Mockito.when;
15  
16  /**
17   * @since 3.6
18   */
19  public class DownloadablePluginResourcePrompterTest extends AbstractPrompterTest
20  {
21      public static final String RESOURCE_NAME = "resourceCSS";
22      public static final String RESOURCE_NAME_PATTERN = "templates/*.vm";
23      public static final String DOWNLOAD_TYPE = "download";
24      public static final String VELOCITY_TYPE = "velocity";
25      public static final String RESOURCE_CSS_PATH = "templates/resource.css";
26      public static final String RESOURCE_VM_PATH = "templates/resource.vm";
27      public static final String PARAM_KEY = "paramKey";
28      public static final String PARAM_VAL = "paramVal";
29  
30  
31      @Test
32      public void resourceWithNameIsValid() throws PrompterException
33      {
34          when(prompter.prompt("Enter Resource Name (leave blank to use namePattern)")).thenReturn(RESOURCE_NAME);
35          when(prompter.prompt("Enter Resource Type", "download")).thenReturn(DOWNLOAD_TYPE);
36          when(prompter.prompt("Enter Location (path to resource file)")).thenReturn(RESOURCE_CSS_PATH);
37          when(prompter.prompt("Add Resource Parameter?", PluginModulePrompter.YN_ANSWERS, "N")).thenReturn("Y");
38          when(prompter.prompt("params:\nparamKey->paramVal\nAdd Resource Parameter?", PluginModulePrompter.YN_ANSWERS, "N")).thenReturn("N");
39          when(prompter.prompt("param name")).thenReturn(PARAM_KEY);
40          when(prompter.prompt("param value")).thenReturn(PARAM_VAL);
41          when(prompter.prompt("Include Example Code?", PluginModulePrompter.YN_ANSWERS, "N")).thenReturn("N");
42  
43          DownloadablePluginResourcePrompter modulePrompter = new DownloadablePluginResourcePrompter(prompter);
44          modulePrompter.setUseAnsiColor(false);
45          DownloadablePluginResourceProperties props = (DownloadablePluginResourceProperties) modulePrompter.getModulePropertiesFromInput(moduleLocation);
46  
47          Resource cssResource = props.getResource();
48  
49          assertEquals("wrong css resource name", RESOURCE_NAME, cssResource.getName());
50          assertTrue("css name pattern found when name is set", StringUtils.isBlank(cssResource.getNamePattern()));
51          assertEquals("wrong css resource type", DOWNLOAD_TYPE, cssResource.getType());
52          assertEquals("wrong css resource location", RESOURCE_CSS_PATH, cssResource.getLocation());
53          assertEquals("wrong number of css resource params", 1, cssResource.getParams()
54                  .size());
55          assertTrue("css resource param key not found", cssResource.getParams()
56                  .containsKey(PARAM_KEY));
57          assertEquals("wrong css resource param value", PARAM_VAL, cssResource.getParams()
58                  .get(PARAM_KEY));
59      }
60  
61      @Test
62      public void resourceWithNamePatternIsValid() throws PrompterException
63      {
64          when(prompter.prompt("Enter Resource Name (leave blank to use namePattern)")).thenReturn("");
65          when(prompter.prompt("Enter Resource Name Pattern")).thenReturn(RESOURCE_NAME_PATTERN);
66          when(prompter.prompt("Enter Resource Type", "download")).thenReturn(VELOCITY_TYPE);
67          when(prompter.prompt("Enter Location (path to resource file)")).thenReturn(RESOURCE_VM_PATH);
68          when(prompter.prompt("Add Resource Parameter?", PluginModulePrompter.YN_ANSWERS, "N")).thenReturn("N");
69          when(prompter.prompt("Include Example Code?", PluginModulePrompter.YN_ANSWERS, "N")).thenReturn("N");
70  
71          DownloadablePluginResourcePrompter modulePrompter = new DownloadablePluginResourcePrompter(prompter);
72          modulePrompter.setUseAnsiColor(false);
73          DownloadablePluginResourceProperties props = (DownloadablePluginResourceProperties) modulePrompter.getModulePropertiesFromInput(moduleLocation);
74  
75          Resource vmResource = props.getResource();
76  
77          assertTrue("vm name found when name pattern is set", StringUtils.isBlank(vmResource.getName()));
78          assertEquals("wrong vm resource name pattern", RESOURCE_NAME_PATTERN, vmResource.getNamePattern());
79          assertEquals("wrong vm resource type", VELOCITY_TYPE, vmResource.getType());
80          assertEquals("wrong vm resource location", RESOURCE_VM_PATH, vmResource.getLocation());
81          assertEquals("wrong number of vm resource params", 0, vmResource.getParams()
82                  .size());
83      }
84  }