package org.jenkinsci.plugins.github.status.sources; import com.tngtech.java.junit.dataprovider.DataProvider; import com.tngtech.java.junit.dataprovider.DataProviderRunner; import com.tngtech.java.junit.dataprovider.UseDataProvider; import hudson.model.Result; import hudson.model.Run; import hudson.model.TaskListener; import org.jenkinsci.plugins.github.extension.status.GitHubStatusResultSource; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.kohsuke.github.GHCommitState; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.mockito.Mockito.when; /** * @author lanwen (Merkushev Kirill) */ @RunWith(DataProviderRunner.class) public class DefaultStatusResultSourceTest { @Rule public MockitoRule mockitoRule = MockitoJUnit.rule(); @Mock(answer = Answers.RETURNS_MOCKS) private Run run; @Mock(answer = Answers.RETURNS_MOCKS) private TaskListener listener; @DataProvider public static Object[][] results() { return new Object[][]{ {Result.SUCCESS, GHCommitState.SUCCESS}, {Result.UNSTABLE, GHCommitState.FAILURE}, {Result.FAILURE, GHCommitState.ERROR}, {null, GHCommitState.PENDING}, }; } @Test @UseDataProvider("results") public void shouldReturnConditionalResult(Result actual, GHCommitState expected) throws Exception { when(run.getResult()).thenReturn(actual); GitHubStatusResultSource.StatusResult result = new DefaultStatusResultSource().get(run, listener); assertThat("state", result.getState(), is(expected)); } }