View Javadoc
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   * @author Keegan Witt
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 }