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.model.Plugin;
6   import org.apache.maven.plugin.MojoExecutionException;
7   import org.apache.maven.plugin.MojoFailureException;
8   import org.apache.maven.project.MavenProject;
9   
10  import java.lang.reflect.Field;
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 java.util.Collections.emptyList;
17  
18  public class TestAbstractProductHandlerMojo extends TestCase
19  {
20      public void testMakeProductsInheritDefaultConfiguration() throws Exception
21      {
22          SomeMojo mojo = new SomeMojo("foo");
23  
24          Product fooProd = new Product();
25          fooProd.setInstanceId("foo");
26          fooProd.setVersion("1.0");
27  
28          Product barProd = new Product();
29          barProd.setInstanceId("bar");
30          barProd.setVersion("2.0");
31  
32          Map<String,Product> prodMap = new HashMap<String, Product>();
33          mojo.makeProductsInheritDefaultConfiguration(asList(fooProd, barProd), prodMap);
34          assertEquals(2, prodMap.size());
35          assertEquals("1.0", prodMap.get("foo").getVersion());
36          assertEquals("/foo", prodMap.get("foo").getContextPath());
37          assertEquals("2.0", prodMap.get("bar").getVersion());
38          assertEquals("/foo", prodMap.get("bar").getContextPath());
39      }
40  
41      public void testMakeProductsInheritDefaultConfigurationDifferentInstanceIds() throws Exception
42      {
43          SomeMojo mojo = new SomeMojo("baz");
44  
45          Product fooProd = new Product();
46          fooProd.setInstanceId("foo");
47          fooProd.setVersion("1.0");
48  
49          Product barProd = new Product();
50          barProd.setInstanceId("bar");
51          barProd.setVersion("2.0");
52  
53          Map<String,Product> prodMap = new HashMap<String, Product>();
54          mojo.makeProductsInheritDefaultConfiguration(asList(fooProd, barProd), prodMap);
55          assertEquals(3, prodMap.size());
56          assertEquals("1.0", prodMap.get("foo").getVersion());
57          assertEquals("/foo", prodMap.get("foo").getContextPath());
58          assertEquals("2.0", prodMap.get("bar").getVersion());
59          assertEquals("/foo", prodMap.get("bar").getContextPath());
60          assertEquals(null, prodMap.get("baz").getVersion());
61          assertEquals("/foo", prodMap.get("baz").getContextPath());
62      }
63  
64      public void testMakeProductsInheritDefaultConfigurationNoProducts() throws Exception
65      {
66          SomeMojo mojo = new SomeMojo("foo");
67  
68          Map<String,Product> prodMap = new HashMap<String, Product>();
69          mojo.makeProductsInheritDefaultConfiguration(Collections.<Product>emptyList(), prodMap);
70          assertEquals(1, prodMap.size());
71          assertEquals("/foo", prodMap.get("foo").getContextPath());
72      }
73  
74      public static class SomeMojo extends AbstractProductHandlerMojo
75      {
76          private final String defaultProductId;
77  
78          public SomeMojo(String defaultProductId)
79          {
80              this.defaultProductId = defaultProductId;
81              contextPath = "/foo";
82          }
83  
84          @Override
85          protected String getDefaultProductId() throws MojoExecutionException
86          {
87              return defaultProductId;
88          }
89  
90          @Override
91          protected void doExecute() throws MojoExecutionException, MojoFailureException
92          {
93  
94          }
95      }
96  }