package hudson.plugins.chucknorris; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import hudson.Launcher; import hudson.model.AbstractBuild; import hudson.model.AbstractProject; import hudson.model.Action; import hudson.model.Build; import hudson.model.BuildListener; import hudson.model.Result; import java.util.ArrayList; import java.util.List; import junit.framework.TestCase; public class CordellWalkerRecorderTest extends TestCase { private FactGenerator mockGenerator; private CordellWalkerRecorder recorder; @Override public void setUp() { mockGenerator = mock(FactGenerator.class); recorder = new CordellWalkerRecorder(mockGenerator); } public void testGetProjectActionWithNoLastBuildGivesNullAction() { AbstractProject mockProject = mock(AbstractProject.class); when(mockProject.getLastBuild()).thenReturn(null); assertNull(recorder.getProjectAction(mockProject)); } public void testGetProjectActionHavingLastBuildGivesRoundhouseAction() { AbstractProject mockProject = mock(AbstractProject.class); Build mockBuild = mock(Build.class); when(mockProject.getLastBuild()).thenReturn(mockBuild); when(mockBuild.getResult()).thenReturn(Result.SUCCESS); when(mockGenerator.random()).thenReturn( "Chuck Norris burst the dot com bubble."); Action action = recorder.getProjectAction(mockProject); assertTrue(action instanceof RoundhouseAction); assertEquals(Style.THUMB_UP, ((RoundhouseAction) action).getStyle()); assertNotNull(((RoundhouseAction) action).getFact()); } public void testPerformWithFailureResultAddsRoundHouseActionWithBadAssStyleAndExpectedFact() throws Exception { List<Action> actions = new ArrayList<Action>(); AbstractBuild mockBuild = mock(AbstractBuild.class); when(mockBuild.getResult()).thenReturn(Result.FAILURE); when(mockBuild.getActions()).thenReturn(actions); when(mockGenerator.random()).thenReturn( "Chuck Norris burst the dot com bubble."); assertEquals(0, actions.size()); recorder.perform(mockBuild, mock(Launcher.class), mock(BuildListener.class)); assertEquals(1, actions.size()); assertTrue(actions.get(0) instanceof RoundhouseAction); assertEquals(Style.BAD_ASS, ((RoundhouseAction) actions.get(0)) .getStyle()); assertEquals("Chuck Norris burst the dot com bubble.", ((RoundhouseAction) actions.get(0)).getFact()); } }