package org.example.integration;
import javax.ws.rs.core.Response;
import org.hamcrest.Description;
import org.hamcrest.Factory;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeDiagnosingMatcher;
public class StatusMatcher extends TypeSafeDiagnosingMatcher<Response.StatusType> {
@Factory
public static Matcher<Response.StatusType> NotFound() {
return new StatusMatcher(Response.Status.NOT_FOUND);
}
private final Response.StatusType expected;
public StatusMatcher(Response.StatusType expected) {
this.expected = expected;
}
@Override
protected boolean matchesSafely(Response.StatusType item, Description mismatchDescription) {
boolean match = expected.getStatusCode() == item.getStatusCode();
append(mismatchDescription, item);
return match;
}
@Override
public void describeTo(Description description) {
Response.StatusType status = expected;
append(description, status);
}
private void append(Description description, Response.StatusType status) {
description.appendValue(status.getStatusCode() + " (" + status.getReasonPhrase() + ")");
}
}