package hudson.plugins.claim.tasks;
import hudson.plugins.claim.user_interface.ClaimableBuildDetailsPage;
import net.serenitybdd.screenplay.Actor;
import net.serenitybdd.screenplay.Task;
import net.serenitybdd.screenplay.actions.Click;
import net.serenitybdd.screenplay.actions.Enter;
import net.serenitybdd.screenplay.jenkins.targets.Link;
import net.serenitybdd.screenplay.jenkins.user_interface.ProjectDetailsPage;
import net.thucydides.core.annotations.Step;
import static net.serenitybdd.screenplay.Tasks.instrumented;
public class Claim implements Task {
public static Claim lastBrokenBuildOf(String project) {
return instrumented(Claim.class, project);
}
public Claim saying(String reason) {
this.reason = reason;
return this;
}
@Step("{0} claims the last broken build of '#project' saying: '#reason'")
@Override
public <T extends Actor> void performAs(T actor) {
actor.attemptsTo(
Click.on(Link.called(project)),
Click.on(ProjectDetailsPage.Last_Failed_Build_Link),
Click.on(ClaimableBuildDetailsPage.Claim_It_Link),
Enter.theValue(reason).into(ClaimableBuildDetailsPage.Reason_Field),
Click.on(ClaimableBuildDetailsPage.Claim_Button)
);
}
private final String project;
private String reason = "";
public Claim(String project) {
this.project = project;
}
}