1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.codehaus.gmavenplus.mojo;
18
19 import org.apache.maven.artifact.DependencyResolutionRequiredException;
20 import org.apache.maven.model.Build;
21 import org.apache.maven.plugin.MojoExecutionException;
22 import org.apache.maven.project.MavenProject;
23 import org.apache.maven.shared.model.fileset.FileSet;
24 import org.codehaus.gmavenplus.model.internal.Version;
25 import org.codehaus.gmavenplus.util.ClassWrangler;
26 import org.junit.Before;
27 import org.junit.Test;
28 import org.mockito.MockitoAnnotations;
29 import org.mockito.Spy;
30
31 import java.io.File;
32 import java.lang.reflect.InvocationTargetException;
33 import java.net.MalformedURLException;
34 import java.util.TreeSet;
35
36 import static org.junit.Assert.assertFalse;
37 import static org.junit.Assert.assertTrue;
38 import static org.mockito.Mockito.*;
39
40
41
42
43
44 public class GenerateStubsMojoTest {
45 private static final String INTENTIONAL_EXCEPTION_MESSAGE = "Intentionally blowing up.";
46
47 @Spy
48 private GenerateStubsMojo generateStubsMojo;
49
50 @Before
51 public void setup() {
52 MockitoAnnotations.openMocks(this);
53 doReturn(new TreeSet<File>()).when(generateStubsMojo).getFiles(any(FileSet[].class), eq(false));
54 doReturn(new TreeSet<File>()).when(generateStubsMojo).getStubs(any(File.class));
55 generateStubsMojo.project = mock(MavenProject.class);
56 generateStubsMojo.stubsOutputDirectory = mock(File.class);
57 doReturn(mock(Build.class)).when(generateStubsMojo.project).getBuild();
58 generateStubsMojo.classWrangler = mock(ClassWrangler.class);
59 doReturn(new Version(1, 8, 2)).when(generateStubsMojo.classWrangler).getGroovyVersion();
60 }
61
62 @Test
63 public void testCallsExpectedMethods() throws Exception {
64 doReturn(true).when(generateStubsMojo).groovyVersionSupportsAction();
65 doNothing().when(generateStubsMojo).doStubGeneration(anySet(), anyList(), any(File.class));
66 generateStubsMojo.execute();
67 verify(generateStubsMojo, times(1)).doStubGeneration(anySet(), anyList(), any(File.class));
68 }
69
70 @Test(expected = MojoExecutionException.class)
71 public void testClassNotFoundExceptionThrowsMojoExecutionException() throws Exception {
72 doReturn(true).when(generateStubsMojo).groovyVersionSupportsAction();
73 doThrow(new ClassNotFoundException(INTENTIONAL_EXCEPTION_MESSAGE)).when(generateStubsMojo).doStubGeneration(anySet(), anyList(), any(File.class));
74 generateStubsMojo.execute();
75 }
76
77 @Test(expected = MojoExecutionException.class)
78 public void testInvocationTargetExceptionThrowsMojoExecutionException() throws Exception {
79 doReturn(true).when(generateStubsMojo).groovyVersionSupportsAction();
80 doThrow(new InvocationTargetException(mock(Exception.class), INTENTIONAL_EXCEPTION_MESSAGE)).when(generateStubsMojo).doStubGeneration(anySet(), anyList(), any(File.class));
81 generateStubsMojo.execute();
82 }
83
84 @Test(expected = MojoExecutionException.class)
85 public void testInstantiationExceptionThrowsMojoExecutionException() throws Exception {
86 doReturn(true).when(generateStubsMojo).groovyVersionSupportsAction();
87 doThrow(new InstantiationException(INTENTIONAL_EXCEPTION_MESSAGE)).when(generateStubsMojo).doStubGeneration(anySet(), anyList(), any(File.class));
88 generateStubsMojo.execute();
89 }
90
91 @Test(expected = MojoExecutionException.class)
92 public void testIllegalAccessExceptionThrowsMojoExecutionException() throws Exception {
93 doReturn(true).when(generateStubsMojo).groovyVersionSupportsAction();
94 doThrow(new IllegalAccessException(INTENTIONAL_EXCEPTION_MESSAGE)).when(generateStubsMojo).doStubGeneration(anySet(), anyList(), any(File.class));
95 generateStubsMojo.execute();
96 }
97
98 @Test(expected = MojoExecutionException.class)
99 public void testDependencyResolutionRequiredExceptionThrowsMojoExecutionException() throws Exception {
100 doThrow(mock(DependencyResolutionRequiredException.class)).when(generateStubsMojo.project).getCompileClasspathElements();
101 generateStubsMojo.execute();
102 }
103
104 @Test(expected = MojoExecutionException.class)
105 public void testMalformedURLExceptionThrowsMojoExecutionException() throws Exception {
106 doReturn(true).when(generateStubsMojo).groovyVersionSupportsAction();
107 doThrow(new MalformedURLException(INTENTIONAL_EXCEPTION_MESSAGE)).when(generateStubsMojo).doStubGeneration(anySet(), anyList(), any(File.class));
108 generateStubsMojo.execute();
109 }
110
111 @Test
112 public void testGroovyVersionSupportsActionTrue() {
113 doReturn(Version.parseFromString("1.5.0")).when(generateStubsMojo.classWrangler).getGroovyVersion();
114 assertTrue(generateStubsMojo.groovyVersionSupportsAction());
115 }
116
117 @Test
118 public void testGroovyVersionSupportsActionFalse() {
119 doReturn(Version.parseFromString("1.0")).when(generateStubsMojo.classWrangler).getGroovyVersion();
120 assertFalse(generateStubsMojo.groovyVersionSupportsAction());
121 }
122
123 }