package hudson.plugins.cigame.util;
import static org.hamcrest.Matchers.*;
import static org.mockito.Mockito.*;
import static org.junit.Assert.*;
import hudson.model.AbstractBuild;
import hudson.model.Result;
import org.junit.Test;
@SuppressWarnings("unchecked")
public class ResultSequenceValidatorTest {
@Test
public void assertResultBelowThresholdIsNotValidated() {
AbstractBuild build = mock(AbstractBuild.class);
when(build.getResult()).thenReturn(Result.FAILURE);
assertThat(new ResultSequenceValidator(Result.SUCCESS, 1).isValid(build), is(false));
}
@Test
public void assertShortSequenceIsNotValidated() {
AbstractBuild build = mock(AbstractBuild.class);
when(build.getResult()).thenReturn(Result.SUCCESS);
when(build.getPreviousBuild()).thenReturn(null);
assertThat(new ResultSequenceValidator(Result.SUCCESS, 2).isValid(build), is(false));
}
@Test
public void assertLastBuildIsBelowThresholdIsNotValidated() {
AbstractBuild build = mock(AbstractBuild.class);
AbstractBuild previousBuild = mock(AbstractBuild.class);
when(build.getResult()).thenReturn(Result.SUCCESS);
when(build.getPreviousBuild()).thenReturn(previousBuild);
when(previousBuild.getResult()).thenReturn(Result.UNSTABLE);
assertThat(new ResultSequenceValidator(Result.SUCCESS, 2).isValid(build), is(false));
}
@Test
public void assertBuildSequenceAboveThresholdIsValidated() {
AbstractBuild build = mock(AbstractBuild.class);
AbstractBuild previousBuild = mock(AbstractBuild.class);
when(build.getResult()).thenReturn(Result.SUCCESS);
when(build.getPreviousBuild()).thenReturn(previousBuild);
when(previousBuild.getResult()).thenReturn(Result.UNSTABLE);
assertThat(new ResultSequenceValidator(Result.UNSTABLE, 2).isValid(build), is(true));
}
}