package org.jenkinsci.plugins.github.util;
import com.cloudbees.jenkins.GitHubPushTrigger;
import hudson.model.FreeStyleProject;
import hudson.model.Item;
import org.jenkinsci.plugins.workflow.job.WorkflowJob;
import org.junit.ClassRule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;
import static org.jenkinsci.plugins.github.util.JobInfoHelpers.isAlive;
import static org.jenkinsci.plugins.github.util.JobInfoHelpers.isBuildable;
import static org.jenkinsci.plugins.github.util.JobInfoHelpers.triggerFrom;
import static org.jenkinsci.plugins.github.util.JobInfoHelpers.withTrigger;
import static org.junit.Assert.assertThat;
/**
* @author lanwen (Merkushev Kirill)
*/
public class JobInfoHelpersTest {
@ClassRule
public static JenkinsRule jenkins = new JenkinsRule();
@Test
public void shouldMatchForProjectWithTrigger() throws Exception {
FreeStyleProject prj = jenkins.createFreeStyleProject();
prj.addTrigger(new GitHubPushTrigger());
assertThat("with trigger", withTrigger(GitHubPushTrigger.class).apply(prj), is(true));
}
@Test
public void shouldSeeProjectWithTriggerIsAliveForCleaner() throws Exception {
FreeStyleProject prj = jenkins.createFreeStyleProject();
prj.addTrigger(new GitHubPushTrigger());
assertThat("with trigger", isAlive().apply(prj), is(true));
}
@Test
public void shouldNotMatchProjectWithoutTrigger() throws Exception {
FreeStyleProject prj = jenkins.createFreeStyleProject();
assertThat("without trigger", withTrigger(GitHubPushTrigger.class).apply(prj), is(false));
}
@Test
public void shouldNotMatchNullProject() throws Exception {
assertThat("null project", withTrigger(GitHubPushTrigger.class).apply(null), is(false));
}
@Test
public void shouldReturnNotBuildableOnNullProject() throws Exception {
assertThat("null project", isBuildable().apply(null), is(false));
}
@Test
public void shouldSeeProjectWithoutTriggerIsNotAliveForCleaner() throws Exception {
FreeStyleProject prj = jenkins.createFreeStyleProject();
assertThat("without trigger", isAlive().apply(prj), is(false));
}
@Test
public void shouldGetTriggerFromAbstractProject() throws Exception {
GitHubPushTrigger trigger = new GitHubPushTrigger();
FreeStyleProject prj = jenkins.createFreeStyleProject();
prj.addTrigger(trigger);
assertThat("with trigger in free style job", triggerFrom((Item) prj, GitHubPushTrigger.class), is(trigger));
}
@Test
public void shouldGetTriggerFromWorkflow() throws Exception {
GitHubPushTrigger trigger = new GitHubPushTrigger();
WorkflowJob job = jenkins.getInstance().createProject(WorkflowJob.class, "Test Workflow");
job.addTrigger(trigger);
assertThat("with trigger in workflow", triggerFrom((Item) job, GitHubPushTrigger.class), is(trigger));
}
@Test
public void shouldNotGetTriggerWhenNoOne() throws Exception {
FreeStyleProject prj = jenkins.createFreeStyleProject();
assertThat("without trigger in project", triggerFrom((Item) prj, GitHubPushTrigger.class), nullValue());
}
}