1 package com.atlassian.maven.plugins.amps;
2
3 import org.apache.maven.model.Build;
4 import org.apache.maven.plugin.MojoExecutionException;
5 import org.apache.maven.plugin.MojoFailureException;
6 import org.apache.maven.plugin.PluginManager;
7 import org.apache.maven.project.MavenProject;
8 import org.junit.Test;
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.junit.Assert.assertEquals;
17 import static org.mockito.Mockito.mock;
18 import static org.mockito.Mockito.when;
19
20 public class TestAbstractProductHandlerMojo
21 {
22 @Test
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 @Test
45 public void testMakeProductsInheritDefaultConfigurationDifferentInstanceIds() throws Exception
46 {
47 SomeMojo mojo = new SomeMojo("baz");
48
49 Product fooProd = new Product();
50 fooProd.setInstanceId("foo");
51 fooProd.setVersion("1.0");
52
53 Product barProd = new Product();
54 barProd.setInstanceId("bar");
55 barProd.setVersion("2.0");
56
57 Map<String,Product> prodMap = new HashMap<String, Product>();
58 mojo.makeProductsInheritDefaultConfiguration(asList(fooProd, barProd), prodMap);
59 assertEquals(3, prodMap.size());
60 assertEquals("1.0", prodMap.get("foo").getVersion());
61 assertEquals("/foo", prodMap.get("foo").getContextPath());
62 assertEquals("2.0", prodMap.get("bar").getVersion());
63 assertEquals("/foo", prodMap.get("bar").getContextPath());
64 assertEquals(null, prodMap.get("baz").getVersion());
65 assertEquals("/foo", prodMap.get("baz").getContextPath());
66 }
67
68 @Test
69 public void testMakeProductsInheritDefaultConfigurationNoProducts() throws Exception
70 {
71 SomeMojo mojo = new SomeMojo("foo");
72
73 Map<String,Product> prodMap = new HashMap<String, Product>();
74 mojo.makeProductsInheritDefaultConfiguration(Collections.<Product>emptyList(), prodMap);
75 assertEquals(1, prodMap.size());
76 assertEquals("/foo", prodMap.get("foo").getContextPath());
77 }
78
79 public static class SomeMojo extends AbstractProductHandlerMojo
80 {
81 private final String defaultProductId;
82
83 public SomeMojo(String defaultProductId)
84 {
85 this.defaultProductId = defaultProductId;
86 contextPath = "/foo";
87 }
88
89 @Override
90 protected String getDefaultProductId() throws MojoExecutionException
91 {
92 return defaultProductId;
93 }
94
95 @Override
96 protected void doExecute() throws MojoExecutionException, MojoFailureException
97 {
98
99 }
100
101 @Override
102 protected MavenContext getMavenContext()
103 {
104 MavenProject project = mock(MavenProject.class);
105 Build build = mock(Build.class);
106 when(build.getTestOutputDirectory()).thenReturn(".");
107 when(project.getBuild()).thenReturn(build);
108 when(project.getBasedir()).thenReturn(new File("."));
109 return new MavenContext(project, null, null, (PluginManager) null, null);
110 }
111
112 @Override
113 protected PluginInformation getPluginInformation() {
114 return new PluginInformation("test-product", "Test SDK Version");
115 }
116 }
117 }