diff --git a/json-unit-assertj/src/main/java/net/javacrumbs/jsonunit/assertj/JsonMapAssert.java b/json-unit-assertj/src/main/java/net/javacrumbs/jsonunit/assertj/JsonMapAssert.java index be2c2bb5..02193355 100644 --- a/json-unit-assertj/src/main/java/net/javacrumbs/jsonunit/assertj/JsonMapAssert.java +++ b/json-unit-assertj/src/main/java/net/javacrumbs/jsonunit/assertj/JsonMapAssert.java @@ -31,6 +31,7 @@ import static java.util.Arrays.stream; import static java.util.Objects.deepEquals; import static java.util.stream.Collectors.toList; +import static net.javacrumbs.jsonunit.assertj.JsonAssertions.json; import static net.javacrumbs.jsonunit.core.internal.JsonUtils.wrapDeserializedObject; import static org.assertj.core.api.Assertions.entry; import static org.assertj.core.error.ShouldContain.shouldContain; @@ -184,11 +185,15 @@ private boolean doesContainEntry(Entry entry) { return false; } Object actualValue = actual.get(key); - if (entry.getValue() instanceof Node) { - Node value = (Node) entry.getValue(); + Object expectedValue = entry.getValue(); + if (expectedValue instanceof Number) { + expectedValue = json(expectedValue); + } + if (expectedValue instanceof Node) { + Node value = (Node) expectedValue; return isSimilar(actualValue, value); } else { - return deepEquals(actualValue, entry.getValue()); + return deepEquals(actualValue, expectedValue); } } diff --git a/tests/test-base/src/main/java/net/javacrumbs/jsonunit/test/base/AbstractAssertJTest.java b/tests/test-base/src/main/java/net/javacrumbs/jsonunit/test/base/AbstractAssertJTest.java index b1d8fc2c..5f5d5fd6 100644 --- a/tests/test-base/src/main/java/net/javacrumbs/jsonunit/test/base/AbstractAssertJTest.java +++ b/tests/test-base/src/main/java/net/javacrumbs/jsonunit/test/base/AbstractAssertJTest.java @@ -1153,12 +1153,28 @@ void testEqualsToArray() { } @Test - void assertTolerance() { + void assertContainsEntryNumber() { assertThatJson("{\"a\":1, \"b\":2.0}") .withTolerance(0) .isObject() - .containsEntry("a", json(1)) - .containsEntry("b", json(2)); + .containsEntry("a", 1) + .containsEntry("b", 2); + } + + @Test + void assertContainsEntryNumberFailure() { + assertThatThrownBy(() -> + assertThatJson("{\"a\":1, \"b\":2.0}") + .isObject() + .containsEntry("a", 1) + .containsEntry("b", 2) + ).hasMessage("[Different value found in node \"\"] \n" + + "Expecting map:\n" + + " {\"a\":1,\"b\":2.0}\n" + + "to contain:\n" + + " [\"b\"=2]\n" + + "but could not find the following map entries:\n" + + " [\"b\"=2]\n"); } @Test