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