package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.headline.HeadlineConfig;
import org.junit.Test;
import static com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.Sugar.*;
import static org.hamcrest.Matchers.isEmptyString;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
public class HasHeadlineShowingRunningBuildDetailsTest {
private JobView view;
@Test
public void should_say_nothing_if_no_builds_were_executed_and_one_is_running_now() throws Exception {
view = a(jobView().which(hasHeadlineThatShowsCommitters()).of(
a(job().whereTheLast(build().isStillBuilding()))));
assertThat(headlineOf(view), isEmptyString());
}
@Test
public void should_tell_whose_changes_are_being_built() throws Exception {
view = a(jobView().which(hasHeadlineThatShowsCommitters()).of(
a(job().whereTheLast(build().isStillBuilding().withChangesFrom("Adam")))));
assertThat(headlineOf(view), is("Building Adam's changes"));
}
@Test
public void should_tell_whose_changes_are_being_built_when_there_are_multiple_committers() throws Exception {
view = a(jobView().which(hasHeadlineThatShowsCommitters()).of(
a(job().whereTheLast(build().isStillBuilding().withChangesFrom("Ben", "Adam")))));
assertThat(headlineOf(view), is("Building Adam and Ben's changes"));
}
@Test
public void should_not_tell_whose_changes_are_being_built_if_commiters_are_not_to_be_displayed() throws Exception {
view = a(jobView().which(hasHeadlineThatDoesNotShowCommitters()).of(
a(job().whereTheLast(build().isStillBuilding().withChangesFrom("Adam")))));
assertThat(headlineOf(view), isEmptyString());
}
// --
private Feature hasHeadlineThatShowsCommitters() {
return new HasHeadline(new HeadlineConfig(true));
}
private Feature hasHeadlineThatDoesNotShowCommitters() {
return new HasHeadline(new HeadlineConfig(false));
}
private String headlineOf(JobView job) {
return job.which(HasHeadline.class).asJson().value();
}
}