package org.jenkinsci.plugins.ghprb.extensions.status;
import org.jenkinsci.plugins.ghprb.GhprbPullRequest;
import org.jenkinsci.plugins.ghprb.GhprbTestUtil;
import org.jenkinsci.plugins.ghprb.GhprbTrigger;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.jvnet.hudson.test.JenkinsRule;
import org.kohsuke.github.GHCommitState;
import org.kohsuke.github.GHRepository;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Matchers.eq;
import static org.mockito.Matchers.isNull;
import static org.mockito.BDDMockito.given;
@RunWith(MockitoJUnitRunner.class)
public class GhprbSimpleStatusTest {
@Rule
public JenkinsRule jenkinsRule = new JenkinsRule();
@Mock
private GHRepository ghRepository;
@Mock
private GhprbPullRequest ghprbPullRequest;
private GhprbTrigger trigger;
@Before
public void setUp() throws Exception {
trigger = GhprbTestUtil.getTrigger(null);
}
@Test
public void testMergedMessage() throws Exception {
String mergedMessage = "Build triggered. sha1 is merged.";
given(ghprbPullRequest.getHead()).willReturn("sha");
given(ghprbPullRequest.isMergeable()).willReturn(true);
GhprbSimpleStatus status = spy(new GhprbSimpleStatus("default"));
status.onBuildTriggered(trigger.getActualProject(), "sha", true, 1, ghRepository);
verify(ghRepository).createCommitStatus(eq("sha"), eq(GHCommitState.PENDING), eq(""), eq(mergedMessage), eq("default"));
verifyNoMoreInteractions(ghRepository);
verifyNoMoreInteractions(ghprbPullRequest);
}
@Test
public void testMergeConflictMessage() throws Exception {
String mergedMessage = "Build triggered. sha1 is original commit.";
given(ghprbPullRequest.getHead()).willReturn("sha");
given(ghprbPullRequest.isMergeable()).willReturn(false);
GhprbSimpleStatus status = spy(new GhprbSimpleStatus("default"));
status.onBuildTriggered(trigger.getActualProject(), "sha", false, 1, ghRepository);
verify(ghRepository).createCommitStatus(eq("sha"), eq(GHCommitState.PENDING), eq(""), eq(mergedMessage), eq("default"));
verifyNoMoreInteractions(ghRepository);
verifyNoMoreInteractions(ghprbPullRequest);
}
@Test
public void testDoesNotSendEmptyContext() throws Exception {
String mergedMessage = "Build triggered. sha1 is original commit.";
given(ghprbPullRequest.getHead()).willReturn("sha");
given(ghprbPullRequest.isMergeable()).willReturn(false);
GhprbSimpleStatus status = spy(new GhprbSimpleStatus(""));
status.onBuildTriggered(trigger.getActualProject(), "sha", false, 1, ghRepository);
verify(ghRepository).createCommitStatus(eq("sha"), eq(GHCommitState.PENDING), eq(""), eq(mergedMessage), isNull(String.class));
verifyNoMoreInteractions(ghRepository);
verifyNoMoreInteractions(ghprbPullRequest);
}
}