Utility matchers for testing.

This commit is contained in:
JesseBrault0709 2024-07-01 10:00:39 +02:00
parent 6dd0d1483e
commit 0f8012134e
3 changed files with 88 additions and 0 deletions

View File

@ -0,0 +1,43 @@
package app.mealsmadeeasy.api.matchers;
import app.mealsmadeeasy.api.recipe.Recipe;
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import java.util.List;
import java.util.Objects;
public final class ContainsRecipesMatcher extends BaseMatcher<List<Recipe>> {
private final Recipe[] allExpected;
public ContainsRecipesMatcher(Recipe[] allExpected) {
this.allExpected = allExpected;
}
@Override
public boolean matches(Object actual) {
if (actual instanceof List<?> list) {
checkExpected:
for (final Recipe expected : allExpected) {
for (final Object item : list) {
if (item instanceof Recipe o && Objects.equals(o.getId(), expected.getId())) {
continue checkExpected;
}
}
// Did not find the expected in the list
return false;
}
// Found all expected in list
return true;
}
// actual is not a List
return false;
}
@Override
public void describeTo(Description description) {
description.appendText("Expected ").appendValue(List.of(this.allExpected));
}
}

View File

@ -0,0 +1,27 @@
package app.mealsmadeeasy.api.matchers;
import app.mealsmadeeasy.api.user.User;
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import java.util.Objects;
public final class IsUserMatcher extends BaseMatcher<User> {
private final User expected;
public IsUserMatcher(User expected) {
this.expected = expected;
}
@Override
public boolean matches(Object actual) {
return actual instanceof User o && Objects.equals(o.getId(), this.expected.getId());
}
@Override
public void describeTo(Description description) {
description.appendText("Expected ").appendValue(this.expected);
}
}

View File

@ -0,0 +1,18 @@
package app.mealsmadeeasy.api.matchers;
import app.mealsmadeeasy.api.recipe.Recipe;
import app.mealsmadeeasy.api.user.User;
public final class Matchers {
public static ContainsRecipesMatcher containsRecipes(Recipe... expected) {
return new ContainsRecipesMatcher(expected);
}
public static IsUserMatcher isUser(User expected) {
return new IsUserMatcher(expected);
}
private Matchers() {}
}