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