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