1   package com.atlassian.maven.plugins.amps;
2   
3   import junit.framework.TestCase;
4   import org.apache.maven.model.Build;
5   import org.apache.maven.plugin.MojoExecutionException;
6   import org.apache.maven.plugin.MojoFailureException;
7   import org.apache.maven.plugin.PluginManager;
8   import org.apache.maven.project.MavenProject;
9   
10  import java.io.File;
11  import java.util.Collections;
12  import java.util.HashMap;
13  import java.util.Map;
14  
15  import static java.util.Arrays.asList;
16  import static org.mockito.Mockito.mock;
17  import static org.mockito.Mockito.when;
18  
19  public class TestAbstractProductHandlerMojo extends TestCase
20  {
21      public void testMakeProductsInheritDefaultConfiguration() throws Exception
22      {
23          SomeMojo mojo = new SomeMojo("foo");
24  
25          Product fooProd = new Product();
26          fooProd.setInstanceId("foo");
27          fooProd.setVersion("1.0");
28  
29          Product barProd = new Product();
30          barProd.setInstanceId("bar");
31          barProd.setVersion("2.0");
32  
33          Map<String,Product> prodMap = new HashMap<String, Product>();
34          mojo.makeProductsInheritDefaultConfiguration(asList(fooProd, barProd), prodMap);
35          assertEquals(2, prodMap.size());
36          assertEquals("1.0", prodMap.get("foo").getVersion());
37          assertEquals("/foo", prodMap.get("foo").getContextPath());
38          assertEquals("2.0", prodMap.get("bar").getVersion());
39          assertEquals("/foo", prodMap.get("bar").getContextPath());
40      }
41  
42      public void testMakeProductsInheritDefaultConfigurationDifferentInstanceIds() throws Exception
43      {
44          SomeMojo mojo = new SomeMojo("baz");
45  
46          Product fooProd = new Product();
47          fooProd.setInstanceId("foo");
48          fooProd.setVersion("1.0");
49  
50          Product barProd = new Product();
51          barProd.setInstanceId("bar");
52          barProd.setVersion("2.0");
53  
54          Map<String,Product> prodMap = new HashMap<String, Product>();
55          mojo.makeProductsInheritDefaultConfiguration(asList(fooProd, barProd), prodMap);
56          assertEquals(3, prodMap.size());
57          assertEquals("1.0", prodMap.get("foo").getVersion());
58          assertEquals("/foo", prodMap.get("foo").getContextPath());
59          assertEquals("2.0", prodMap.get("bar").getVersion());
60          assertEquals("/foo", prodMap.get("bar").getContextPath());
61          assertEquals(null, prodMap.get("baz").getVersion());
62          assertEquals("/foo", prodMap.get("baz").getContextPath());
63      }
64  
65      public void testMakeProductsInheritDefaultConfigurationNoProducts() throws Exception
66      {
67          SomeMojo mojo = new SomeMojo("foo");
68  
69          Map<String,Product> prodMap = new HashMap<String, Product>();
70          mojo.makeProductsInheritDefaultConfiguration(Collections.<Product>emptyList(), prodMap);
71          assertEquals(1, prodMap.size());
72          assertEquals("/foo", prodMap.get("foo").getContextPath());
73      }
74  
75      public static class SomeMojo extends AbstractProductHandlerMojo
76      {
77          private final String defaultProductId;
78  
79          public SomeMojo(String defaultProductId)
80          {
81              this.defaultProductId = defaultProductId;
82              contextPath = "/foo";
83          }
84  
85          @Override
86          protected String getDefaultProductId() throws MojoExecutionException
87          {
88              return defaultProductId;
89          }
90  
91          @Override
92          protected void doExecute() throws MojoExecutionException, MojoFailureException
93          {
94  
95          }
96  
97          @Override
98          protected MavenContext getMavenContext()
99          {
100             MavenProject project = mock(MavenProject.class);
101             Build build = mock(Build.class);
102             when(build.getTestOutputDirectory()).thenReturn(".");
103             when(project.getBuild()).thenReturn(build);
104             when(project.getBasedir()).thenReturn(new File("."));
105             MavenContext ctx = new MavenContext(project, null, null, (PluginManager) null, null);
106             return ctx;
107         }
108     }
109 }