package org.jenkinsci.plugins.ghprb;
import hudson.model.Build;
import hudson.model.TaskListener;
import org.jenkinsci.plugins.ghprb.extensions.comments.GhprbBuildStatus;
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.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import java.io.PrintStream;
import static org.mockito.BDDMockito.given;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
/**
* Unit test for {@link org.jenkinsci.plugins.ghprb.GhprbBuilds}.
*/
@RunWith(MockitoJUnitRunner.class)
public class GhprbBuildsTest {
@Mock
private GhprbRepository repo;
@Mock
private GhprbCause cause;
@Mock
private GhprbBuildStatus appender;
@Mock
private TaskListener listener;
@Mock
private Build build;
@Mock
private PrintStream stream;
@Rule
public JenkinsRule jenkinsRule = new JenkinsRule();
private GhprbTrigger trigger;
private GHCommitState state = GHCommitState.SUCCESS;
@Before
public void setup() throws Exception {
// Mock trigger and add a mocked appender.
trigger = GhprbTestUtil.getTrigger();
trigger.getExtensions().add(appender);
// Mocks for GhprbRepository
doNothing().when(repo).addComment(anyInt(), anyString());
// Mock out the logger.
given(listener.getLogger()).willReturn(stream);
doNothing().when(stream).println(anyString());
}
@Test
public void testCommentOnBuildResultWithSkip() {
String testMessage = "--none--";
given(appender.postBuildComment(build, listener)).willReturn(testMessage);
// WHEN
GhprbBuilds builds = new GhprbBuilds(trigger, repo);
builds.commentOnBuildResult(build, listener, state, cause);
// THEN
verify(repo, never()).addComment(Mockito.anyInt(), anyString());
}
@Test
public void testCommentOnBuildResultNoSkip() {
String testMessage = "test";
given(appender.postBuildComment(build, listener)).willReturn(testMessage);
// WHEN
GhprbBuilds builds = new GhprbBuilds(trigger, repo);
builds.commentOnBuildResult(build, listener, state, cause);
// THEN
verify(repo, times(1)).addComment(cause.getPullID(), testMessage, build, listener);
}
}