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.plugin.MojoExecutionException;
21 import org.apache.maven.project.MavenProject;
22 import org.apache.maven.shared.model.fileset.FileSet;
23 import org.codehaus.gmavenplus.model.internal.Version;
24 import org.codehaus.gmavenplus.util.ClassWrangler;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.mockito.MockitoAnnotations;
28 import org.mockito.Spy;
29
30 import java.io.File;
31 import java.lang.reflect.InvocationTargetException;
32 import java.net.MalformedURLException;
33 import java.util.Set;
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 GroovyDocMojoTest {
45 private static final String INTENTIONAL_EXCEPTION_MESSAGE = "Intentionally blowing up.";
46
47 @Spy
48 private GroovyDocMojo groovyDocMojo;
49
50 @Before
51 public void setup() {
52 MockitoAnnotations.openMocks(this);
53 Set<File> sources = new TreeSet<>();
54 sources.add(mock(File.class));
55 doReturn(sources).when(groovyDocMojo).getTestFiles(any(FileSet[].class), eq(false));
56 groovyDocMojo.groovyDocOutputDirectory = mock(File.class);
57 groovyDocMojo.project = mock(MavenProject.class);
58 doReturn(mock(File.class)).when(groovyDocMojo.project).getBasedir();
59 groovyDocMojo.classWrangler = mock(ClassWrangler.class);
60 doReturn(new Version(1, 5, 0)).when(groovyDocMojo.classWrangler).getGroovyVersion();
61 }
62
63 @Test
64 public void testCallsExpectedMethods() throws Exception {
65 doReturn(true).when(groovyDocMojo).groovyVersionSupportsAction();
66 doNothing().when(groovyDocMojo).doGroovyDocGeneration(any(FileSet[].class), anyList(), any(File.class));
67 groovyDocMojo.execute();
68 verify(groovyDocMojo, times(1)).doGroovyDocGeneration(any(FileSet[].class), anyList(), any(File.class));
69 groovyDocMojo.classWrangler = mock(ClassWrangler.class);
70 doReturn(new Version(1, 5, 0)).when(groovyDocMojo.classWrangler).getGroovyVersion();
71 }
72
73 @Test(expected = MojoExecutionException.class)
74 public void testClassNotFoundExceptionThrowsMojoExecutionException() throws Exception {
75 doReturn(true).when(groovyDocMojo).groovyVersionSupportsAction();
76 doThrow(new ClassNotFoundException(INTENTIONAL_EXCEPTION_MESSAGE)).when(groovyDocMojo).doGroovyDocGeneration(any(FileSet[].class), anyList(), any(File.class));
77 groovyDocMojo.execute();
78 }
79
80 @Test(expected = MojoExecutionException.class)
81 public void testInvocationTargetExceptionThrowsMojoExecutionException() throws Exception {
82 doReturn(true).when(groovyDocMojo).groovyVersionSupportsAction();
83 doThrow(new InvocationTargetException(mock(Exception.class), INTENTIONAL_EXCEPTION_MESSAGE)).when(groovyDocMojo).doGroovyDocGeneration(any(FileSet[].class), anyList(), any(File.class));
84 groovyDocMojo.execute();
85 }
86
87 @Test(expected = MojoExecutionException.class)
88 public void testInstantiationExceptionThrowsMojoExecutionException() throws Exception {
89 doReturn(true).when(groovyDocMojo).groovyVersionSupportsAction();
90 doThrow(new InstantiationException(INTENTIONAL_EXCEPTION_MESSAGE)).when(groovyDocMojo).doGroovyDocGeneration(any(FileSet[].class), anyList(), any(File.class));
91 groovyDocMojo.execute();
92 }
93
94 @Test(expected = MojoExecutionException.class)
95 public void testIllegalAccessExceptionThrowsMojoExecutionException() throws Exception {
96 doReturn(true).when(groovyDocMojo).groovyVersionSupportsAction();
97 doThrow(new IllegalAccessException(INTENTIONAL_EXCEPTION_MESSAGE)).when(groovyDocMojo).doGroovyDocGeneration(any(FileSet[].class), anyList(), any(File.class));
98 groovyDocMojo.execute();
99 }
100
101 @Test(expected = MojoExecutionException.class)
102 public void testDependencyResolutionRequiredExceptionThrowsMojoExecutionException() throws Exception {
103 doThrow(mock(DependencyResolutionRequiredException.class)).when(groovyDocMojo.project).getRuntimeClasspathElements();
104 groovyDocMojo.execute();
105 }
106
107 @Test(expected = MojoExecutionException.class)
108 public void testMalformedURLExceptionThrowsMojoExecutionException() throws Exception {
109 doReturn(true).when(groovyDocMojo).groovyVersionSupportsAction();
110 doThrow(new MalformedURLException(INTENTIONAL_EXCEPTION_MESSAGE)).when(groovyDocMojo).doGroovyDocGeneration(any(FileSet[].class), anyList(), any(File.class));
111 groovyDocMojo.execute();
112 }
113
114 @Test
115 public void testGroovyVersionSupportsActionTrue() {
116 doReturn(Version.parseFromString("1.5.0")).when(groovyDocMojo.classWrangler).getGroovyVersion();
117 assertTrue(groovyDocMojo.groovyVersionSupportsAction());
118 }
119
120 @Test
121 public void testGroovyVersionSupportsActionFalse() {
122 doReturn(Version.parseFromString("1.0")).when(groovyDocMojo.classWrangler).getGroovyVersion();
123 assertFalse(groovyDocMojo.groovyVersionSupportsAction());
124 }
125
126 }