blob: 397701519e09ba6505aab860334e34da1b02d355 [file] [log] [blame]
package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.plugins;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.plugins.bfa.Analysed;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.plugins.bfa.Analysis;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.plugins.bfa.NotAnalysed;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.plugins.claim.Claim;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.plugins.claim.Claimed;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.plugins.claim.NotClaimed;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.syntacticsugar.BuildStateRecipe;
import hudson.model.Result;
import hudson.model.Run;
import org.hamcrest.Matchers;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
public class BuildAugmentorTest {
private static final String AUTHOR = "Adam";
private static final String REASON = "Sorry, I broke it, fixing now";
private static final String FLUX_CAPACITOR_FAILED_AGAIN = "Flux capacitor failed again";
private BuildAugmentor augmentor = new BuildAugmentor();
private Run<?, ?> plainBuild = a(build());
private Run<?, ?> claimedBuild = a(build().finishedWith(Result.FAILURE).andWasClaimedBy(AUTHOR, REASON));
private Run<?, ?> failedBuild = a(build().finishedWith(Result.FAILURE).andKnownFailures(FLUX_CAPACITOR_FAILED_AGAIN));
/*
* Claim tests
*/
@Test
public void should_recognise_any_build_as_not_claimed_by_default() {
assertThat(augmentor.detailsOf(plainBuild, Claim.class), instanceOf(NotClaimed.class));
assertThat(augmentor.detailsOf(claimedBuild, Claim.class), instanceOf(NotClaimed.class));
}
@Test
public void should_recognise_a_claimed_build_once_you_ask_him_to_do_it() throws Exception {
augmentor.support(Claim.class);
Claim claim = augmentor.detailsOf(claimedBuild, Claim.class);
assertThat(claim, instanceOf(Claimed.class));
assertThat(claim.wasMade(), is(true));
assertThat(claim.author(), is(AUTHOR));
assertThat(claim.reason(), is(REASON));
}
/*
* Analysis tests
*/
@Test
public void should_recognise_any_build_as_not_analysed_by_default() {
assertThat(augmentor.detailsOf(plainBuild, Analysis.class), instanceOf(NotAnalysed.class));
assertThat(augmentor.detailsOf(failedBuild, Analysis.class), instanceOf(NotAnalysed.class));
}
@Test
public void should_recognise_a_failed_build_once_you_ask_him_to_do_it() throws Exception {
augmentor.support(Analysis.class);
Analysis analysis = augmentor.detailsOf(failedBuild, Analysis.class);
assertThat(analysis, instanceOf(Analysed.class));
assertThat(analysis.foundKnownFailures(), is(true));
assertThat(analysis.failures(), Matchers.contains(FLUX_CAPACITOR_FAILED_AGAIN));
}
/*
* Syntactic sugar
*/
private Run<?, ?> a(BuildStateRecipe recipe) {
return recipe.execute();
}
private BuildStateRecipe build() {
return new BuildStateRecipe();
}
}