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 }