package dbfit.test.matchers; import dbfit.util.MatchResult; import dbfit.util.MatchStatus; import org.hamcrest.FeatureMatcher; import org.hamcrest.Matcher; import org.hamcrest.Factory; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.contains; import java.util.ArrayList; public class HasMatchStatus extends FeatureMatcher<MatchResult, MatchStatus> { public HasMatchStatus(Matcher<? super MatchStatus> matcher) { super(matcher, "with status", "status"); } @Override public MatchStatus featureValueOf(MatchResult result) { return result.getStatus(); } @Factory public static Matcher<MatchResult> hasMatchStatus(Matcher<? super MatchStatus> statusMatcher) { return new HasMatchStatus(statusMatcher); } @Factory public static Matcher<MatchResult> hasMatchStatus(MatchStatus expectedStatus) { return new HasMatchStatus(equalTo(expectedStatus)); } @Factory public static Matcher<Iterable<? extends MatchResult>> haveItemsStatuses( Iterable<MatchStatus> expectedStatuses) { ArrayList<Matcher<? super MatchResult>> matchers = new ArrayList<>(); for (MatchStatus status : expectedStatuses) { matchers.add(hasMatchStatus(status)); } return contains(matchers); } }