Author: rfscholte
Date: Wed Feb 22 20:59:32 2012
New Revision: 1292500

URL: http://svn.apache.org/viewvc?rev=1292500&view=rev
Log:
MRELEASE-741: migrate to mockito
 

Modified:
    
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/InputVariablesPhaseTest.java

Modified: 
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/InputVariablesPhaseTest.java
URL: 
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/InputVariablesPhaseTest.java?rev=1292500&r1=1292499&r2=1292500&view=diff
==============================================================================
--- 
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/InputVariablesPhaseTest.java
 (original)
+++ 
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/InputVariablesPhaseTest.java
 Wed Feb 22 20:59:32 2012
@@ -19,6 +19,17 @@ package org.apache.maven.shared.release.
  * under the License.
  */
 
+import static org.mockito.Matchers.eq;
+import static org.mockito.Matchers.isA;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+import java.util.Collections;
+import java.util.List;
+
 import org.apache.maven.model.Model;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.release.ReleaseExecutionException;
@@ -27,16 +38,6 @@ import org.apache.maven.shared.release.e
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.components.interactivity.Prompter;
 import org.codehaus.plexus.components.interactivity.PrompterException;
-import org.jmock.Mock;
-import org.jmock.core.constraint.IsAnything;
-import org.jmock.core.constraint.IsEqual;
-import org.jmock.core.matcher.InvokeOnceMatcher;
-import org.jmock.core.matcher.TestFailureMatcher;
-import org.jmock.core.stub.ReturnStub;
-import org.jmock.core.stub.ThrowStub;
-
-import java.util.Collections;
-import java.util.List;
 
 /**
  * Test the variable input phase.
@@ -58,11 +59,10 @@ public class InputVariablesPhaseTest
     public void testInputVariablesInteractive()
         throws Exception
     {
-        Mock mockPrompter = new Mock( Prompter.class );
-        mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" 
).with( new IsAnything(),
-                                                                               
  new IsEqual( "artifactId-1.0" ) ).will(
-            new ReturnStub( "tag-value" ) );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        // prepare
+        Prompter mockPrompter = mock( Prompter.class );
+        when( mockPrompter.prompt( isA( String.class ), eq( "artifactId-1.0" ) 
) ).thenReturn( "tag-value", "simulated-tag-value" );
+        phase.setPrompter( mockPrompter );
 
         List<MavenProject> reactorProjects = Collections.singletonList( 
createProject( "artifactId", "1.0" ) );
 
@@ -70,22 +70,25 @@ public class InputVariablesPhaseTest
         releaseDescriptor.mapReleaseVersion( "groupId:artifactId", "1.0" );
         releaseDescriptor.setScmSourceUrl( 
"scm:svn:file://localhost/tmp/scm-repo" );
 
+        // execute
         phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
 
+        // verify
         assertEquals( "Check tag", "tag-value", 
releaseDescriptor.getScmReleaseLabel() );
 
+        // prepare
         releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.mapReleaseVersion( "groupId:artifactId", "1.0" );
         releaseDescriptor.setScmSourceUrl( 
"scm:svn:file://localhost/tmp/scm-repo" );
 
-        mockPrompter.reset();
-        mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" 
).with( new IsAnything(),
-                                                                               
  new IsEqual( "artifactId-1.0" ) ).will(
-            new ReturnStub( "simulated-tag-value" ) );
-
+        // execute
         phase.simulate( releaseDescriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
 
+        //verify
         assertEquals( "Check tag", "simulated-tag-value", 
releaseDescriptor.getScmReleaseLabel() );
+        
+        verify( mockPrompter, times( 2 ) ).prompt( isA( String.class ), eq( 
"artifactId-1.0" ) );
+        verifyNoMoreInteractions( mockPrompter );
     }
 
     public void testUnmappedVersion()
@@ -123,9 +126,9 @@ public class InputVariablesPhaseTest
     public void testInputVariablesNonInteractive()
         throws Exception
     {
-        Mock mockPrompter = new Mock( Prompter.class );
-        mockPrompter.expects( new TestFailureMatcher( "prompter should not be 
called" ) ).method( "prompt" );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        // prepare
+        Prompter mockPrompter = mock( Prompter.class );
+        phase.setPrompter( mockPrompter );
 
         List<MavenProject> reactorProjects = Collections.singletonList( 
createProject( "artifactId", "1.0" ) );
 
@@ -134,29 +137,34 @@ public class InputVariablesPhaseTest
         releaseDescriptor.mapReleaseVersion( "groupId:artifactId", "1.0" );
         releaseDescriptor.setScmSourceUrl( 
"scm:svn:file://localhost/tmp/scm-repo" );
 
+        // execute
         phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
 
+        // verify
         assertEquals( "Check tag", "artifactId-1.0", 
releaseDescriptor.getScmReleaseLabel() );
 
-        mockPrompter.reset();
-        mockPrompter.expects( new TestFailureMatcher( "prompter should not be 
called" ) ).method( "prompt" );
-
+        // prepare
         releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setInteractive( false );
         releaseDescriptor.mapReleaseVersion( "groupId:artifactId", "1.0" );
         releaseDescriptor.setScmSourceUrl( 
"scm:svn:file://localhost/tmp/scm-repo" );
 
+        // execute
         phase.simulate( releaseDescriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
 
+        // verify
         assertEquals( "Check tag", "artifactId-1.0", 
releaseDescriptor.getScmReleaseLabel() );
+        
+        // never use prompter
+        verifyNoMoreInteractions( mockPrompter );
     }
 
     public void testInputVariablesNonInteractiveConfigured()
         throws Exception
     {
-        Mock mockPrompter = new Mock( Prompter.class );
-        mockPrompter.expects( new TestFailureMatcher( "prompter should not be 
called" ) ).method( "prompt" );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        // prepare
+        Prompter mockPrompter = mock( Prompter.class );
+        phase.setPrompter( mockPrompter );
 
         List<MavenProject> reactorProjects = Collections.singletonList( 
createProject( "artifactId", "1.0" ) );
 
@@ -164,56 +172,66 @@ public class InputVariablesPhaseTest
         releaseDescriptor.setInteractive( false );
         releaseDescriptor.setScmReleaseLabel( "tag-value" );
 
+        // execute
         phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
 
+        // verify
         assertEquals( "Check tag", "tag-value", 
releaseDescriptor.getScmReleaseLabel() );
 
-        mockPrompter.reset();
-        mockPrompter.expects( new TestFailureMatcher( "prompter should not be 
called" ) ).method( "prompt" );
-
+        // prepare
         releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setInteractive( false );
         releaseDescriptor.setScmReleaseLabel( "simulated-tag-value" );
 
+        // execute
         phase.simulate( releaseDescriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
 
+        // verify
         assertEquals( "Check tag", "simulated-tag-value", 
releaseDescriptor.getScmReleaseLabel() );
+        
+        // never use prompter
+        verifyNoMoreInteractions( mockPrompter );
     }
 
     public void testInputVariablesInteractiveConfigured()
         throws Exception
     {
-        Mock mockPrompter = new Mock( Prompter.class );
-        mockPrompter.expects( new TestFailureMatcher( "prompter should not be 
called" ) ).method( "prompt" );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        // prepare
+        Prompter mockPrompter = mock( Prompter.class );
+        phase.setPrompter( mockPrompter );
 
         List<MavenProject> reactorProjects = Collections.singletonList( 
createProject( "artifactId", "1.0" ) );
 
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setScmReleaseLabel( "tag-value" );
 
+        // execute
         phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
 
+        // verify
         assertEquals( "Check tag", "tag-value", 
releaseDescriptor.getScmReleaseLabel() );
 
-        mockPrompter.reset();
-        mockPrompter.expects( new TestFailureMatcher( "prompter should not be 
called" ) ).method( "prompt" );
-
+        // prepare
         releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setScmReleaseLabel( "simulated-tag-value" );
 
+        // execute
         phase.simulate( releaseDescriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
 
+        // verify
         assertEquals( "Check tag", "simulated-tag-value", 
releaseDescriptor.getScmReleaseLabel() );
+        
+        // never use prompter
+        verifyNoMoreInteractions( mockPrompter );
     }
 
     public void testPrompterException()
         throws Exception
     {
-        Mock mockPrompter = new Mock( Prompter.class );
-        mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" 
).will(
-            new ThrowStub( new PrompterException( "..." ) ) );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        // prepare
+        Prompter mockPrompter = mock( Prompter.class );
+        when( mockPrompter.prompt( isA( String.class ), isA( String.class ) ) 
).thenThrow( new PrompterException( "..." ) );
+        phase.setPrompter( mockPrompter );
 
         List<MavenProject> reactorProjects = Collections.singletonList( 
createProject( "artifactId", "1.0" ) );
 
@@ -221,6 +239,7 @@ public class InputVariablesPhaseTest
         releaseDescriptor.mapReleaseVersion( "groupId:artifactId", "1.0" );
         releaseDescriptor.setScmSourceUrl( 
"scm:svn:file://localhost/tmp/scm-repo" );
 
+        // execute
         try
         {
             phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
@@ -232,14 +251,12 @@ public class InputVariablesPhaseTest
             assertEquals( "check cause", PrompterException.class, 
e.getCause().getClass() );
         }
 
+        // prepare
         releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.mapReleaseVersion( "groupId:artifactId", "1.0" );
         releaseDescriptor.setScmSourceUrl( 
"scm:svn:file://localhost/tmp/scm-repo" );
 
-        mockPrompter.reset();
-        mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" 
).will(
-            new ThrowStub( new PrompterException( "..." ) ) );
-
+        // execute
         try
         {
             phase.simulate( releaseDescriptor, new 
DefaultReleaseEnvironment(), reactorProjects );
@@ -250,15 +267,19 @@ public class InputVariablesPhaseTest
         {
             assertEquals( "check cause", PrompterException.class, 
e.getCause().getClass() );
         }
+        
+        //verify
+        verify( mockPrompter, times( 2 ) ).prompt( isA( String.class ), isA( 
String.class ) );
+        verifyNoMoreInteractions( mockPrompter );
     }
 
     //MRELEASE-110
     public void testCvsTag()
         throws Exception
     {
-        Mock mockPrompter = new Mock( Prompter.class );
-        mockPrompter.expects( new TestFailureMatcher( "prompter should not be 
called" ) ).method( "prompt" );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        // prepare
+        Prompter mockPrompter = mock( Prompter.class );
+        phase.setPrompter( mockPrompter );
 
         List<MavenProject> reactorProjects = Collections.singletonList( 
createProject( "artifactId", "1.0" ) );
 
@@ -267,30 +288,35 @@ public class InputVariablesPhaseTest
         releaseConfiguration.mapReleaseVersion( "groupId:artifactId", "1.0" );
         releaseConfiguration.setScmSourceUrl( 
"scm:cvs:pserver:anoncvs@localhost:/tmp/scm-repo:module" );
 
+        // execute
         phase.execute( releaseConfiguration, new DefaultReleaseEnvironment(), 
reactorProjects );
 
+        // verify
         assertEquals( "Check tag", "artifactId-1_0", 
releaseConfiguration.getScmReleaseLabel() );
 
-        mockPrompter.reset();
-        mockPrompter.expects( new TestFailureMatcher( "prompter should not be 
called" ) ).method( "prompt" );
-
+        // prepare
         releaseConfiguration = new ReleaseDescriptor();
         releaseConfiguration.setInteractive( false );
         releaseConfiguration.mapReleaseVersion( "groupId:artifactId", "1.0" );
         releaseConfiguration.setScmSourceUrl( 
"scm:cvs:pserver:anoncvs@localhost:/tmp/scm-repo:module" );
 
+        // execute
         phase.simulate( releaseConfiguration, new DefaultReleaseEnvironment(), 
reactorProjects );
 
+        // verify
         assertEquals( "Check tag", "artifactId-1_0", 
releaseConfiguration.getScmReleaseLabel() );
+        
+        // never use prompter
+        verifyNoMoreInteractions( mockPrompter );
     }
 
     //MRELEASE-159
     public void testCustomTagFormat()
         throws Exception
     {
-        Mock mockPrompter = new Mock( Prompter.class );
-        mockPrompter.expects( new TestFailureMatcher( "prompter should not be 
called" ) ).method( "prompt" );
-        phase.setPrompter( (Prompter) mockPrompter.proxy() );
+        // prepare
+        Prompter mockPrompter = mock( Prompter.class );
+        phase.setPrompter( mockPrompter );
 
         List<MavenProject> reactorProjects = Collections.singletonList( 
createProject( "artifactId", "1.0" ) );
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
@@ -298,22 +324,27 @@ public class InputVariablesPhaseTest
         releaseDescriptor.mapReleaseVersion( "groupId:artifactId", "1.0" );
         releaseDescriptor.setScmSourceUrl( 
"scm:svn:file://localhost/tmp/scm-repo" );
 
+        // execute
         phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
 
+        // verify
         assertEquals( "Check tag", "artifactId-1.0", 
releaseDescriptor.getScmReleaseLabel() );
 
-        mockPrompter.reset();
-        mockPrompter.expects( new TestFailureMatcher( "prompter should not be 
called" ) ).method( "prompt" );
-
+        // prepare
         releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setInteractive( false );
         releaseDescriptor.mapReleaseVersion( "groupId:artifactId", "1.0" );
         releaseDescriptor.setScmSourceUrl( 
"scm:svn:file://localhost/tmp/scm-repo" );
         releaseDescriptor.setScmTagNameFormat( 
"simulated-@{artifactId}-@{version}" );
 
+        // execute
         phase.simulate( releaseDescriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
 
+        // verify
         assertEquals( "Check tag", "simulated-artifactId-1.0", 
releaseDescriptor.getScmReleaseLabel() );
+        
+        // never use prompter
+        verifyNoMoreInteractions( mockPrompter );
     }
 
     private static MavenProject createProject( String artifactId, String 
version )
@@ -325,4 +356,4 @@ public class InputVariablesPhaseTest
         return new MavenProject( model );
     }
 
-}
+}
\ No newline at end of file


Reply via email to