From c28a95ec9310748f5cf38ed5b1575aabb10d0d65 Mon Sep 17 00:00:00 2001 From: John Smart Date: Fri, 5 Feb 2016 17:41:33 +0000 Subject: [PATCH] Support for multiple matchers in Consequences You can now make multiple assertions against a single question --- .../webtests/WhenDanaBrowsesTheWeb.java | 20 +++++++++++++++++++ .../serenitybdd/screenplay/GivenWhenThen.java | 12 +++++++++++ 2 files changed, 32 insertions(+) diff --git a/browse-the-web/src/test/java/net/serenitybdd/screenplay/webtests/WhenDanaBrowsesTheWeb.java b/browse-the-web/src/test/java/net/serenitybdd/screenplay/webtests/WhenDanaBrowsesTheWeb.java index 9047c12010..d638e6367f 100644 --- a/browse-the-web/src/test/java/net/serenitybdd/screenplay/webtests/WhenDanaBrowsesTheWeb.java +++ b/browse-the-web/src/test/java/net/serenitybdd/screenplay/webtests/WhenDanaBrowsesTheWeb.java @@ -66,6 +66,23 @@ public void danaCanMakeAssertionsAboutWebElements() { and(dana).should(seeThat(the(ProfilePage.NAME), isCurrentlyEnabled())); } + @Test + public void danaCanMakeAssertionsAboutWebElementsInTheSameAssertion() { + + Actor dana = new Actor("Dana"); + dana.can(BrowseTheWeb.with(firstBrowser)); + + givenThat(dana).has(openedTheApplication); + + when(dana).attemptsTo(viewHerProfile); + and(dana).attemptsTo(UpdateHerProfile.withName("Dana").andCountryOfResidence("France")); + + then(dana).should(seeThat(the(ProfilePage.NAME), + isVisible(), + isCurrentlyVisible(), + isEnabled())); + } + @Test public void multipleUsersCanUpdateTheirProfilesSimultaneously() { @@ -141,6 +158,9 @@ public void shouldSeeCorrectClientDetails() { seeThat(Client.country(), is(equalTo("France")))); } + + + @Steps OpenTheApplication openedTheApplication; diff --git a/serenity-journey/src/main/java/net/serenitybdd/screenplay/GivenWhenThen.java b/serenity-journey/src/main/java/net/serenitybdd/screenplay/GivenWhenThen.java index 7cb20ff4f5..67ebf26dd1 100644 --- a/serenity-journey/src/main/java/net/serenitybdd/screenplay/GivenWhenThen.java +++ b/serenity-journey/src/main/java/net/serenitybdd/screenplay/GivenWhenThen.java @@ -1,7 +1,10 @@ package net.serenitybdd.screenplay; +import com.beust.jcommander.internal.Lists; import org.hamcrest.Matcher; +import java.util.List; + import static org.hamcrest.MatcherAssert.assertThat; public class GivenWhenThen { @@ -22,4 +25,13 @@ public static void then(T actual, Matcher matcher) { public static Consequence seeThat(Question actual, Matcher expected) { return new QuestionConsequence(actual, expected); } + + public static Consequence[] seeThat(Question actual, Matcher... expectedMatchers) { + List> consequences = Lists.newArrayList(); + for(Matcher matcher : expectedMatchers) { + consequences.add(new QuestionConsequence(actual, matcher)); + } + return consequences.toArray(new Consequence[]{}); + } + }