package hudson.plugins.cigame.util; import static org.hamcrest.Matchers.*; import static org.mockito.Mockito.*; import static org.junit.Assert.*; import java.util.Arrays; import java.util.List; import hudson.model.AbstractBuild; import hudson.model.Action; import hudson.model.Build; import org.junit.Test; @SuppressWarnings("unchecked") public class ActionSequenceRetrieverTest { @Test public void assertNullIsReturnedWithBuildWithoutRequestedAction() { Build<?,?> build = mock(Build.class); when(build.getActions(Action.class)).thenReturn(null); assertThat(new ActionSequenceRetriever(Action.class, 1).getSequence(build), is(nullValue())); } @Test public void assertNullIsReturnedWithSingleBuildWhenLongerSequenceIsRequested() { AbstractBuild build = mock(Build.class); Action action = mock(Action.class); when(build.getActions(Action.class)).thenReturn(Arrays.asList(action)); assertThat(new ActionSequenceRetriever(Action.class, 2).getSequence(build), is(nullValue())); } @Test public void assertNullIsReturnedWithLastBuildWithoutRequestedAction() { AbstractBuild build = mock(Build.class); AbstractBuild previousBuild = mock(Build.class); Action action = mock(Action.class); when(build.getActions(Action.class)).thenReturn(Arrays.asList(action)); when(build.getPreviousBuild()).thenReturn(previousBuild); when(previousBuild.getActions(Action.class)).thenReturn(null); assertThat(new ActionSequenceRetriever(Action.class, 2).getSequence(build), is(nullValue())); } @Test public void assertListIsReturnedForCompleteSequence() { AbstractBuild build = mock(Build.class); AbstractBuild previousBuild = mock(Build.class); Action action = mock(Action.class); when(build.getActions(Action.class)).thenReturn(Arrays.asList(action)); when(build.getPreviousBuild()).thenReturn(previousBuild); when(previousBuild.getActions(Action.class)).thenReturn(Arrays.asList(action)); List<List<Action>> actionList = new ActionSequenceRetriever(Action.class, 2).getSequence(build); assertThat(actionList, is(notNullValue())); assertThat(actionList.size(), is(2)); } }