From 5033bcf716dec2b0f7f15e7e00feec42b36e1662 Mon Sep 17 00:00:00 2001 From: Lukas Krecan Date: Wed, 22 May 2019 15:42:56 +0200 Subject: [PATCH] Fixes #181 - correct formatting of multiple error messages --- .../jsonunit/core/internal/JsonDifference.java | 2 +- .../jsonunit/test/base/AbstractAssertJTest.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/json-unit-core/src/main/java/net/javacrumbs/jsonunit/core/internal/JsonDifference.java b/json-unit-core/src/main/java/net/javacrumbs/jsonunit/core/internal/JsonDifference.java index fcf7ceea6..04acaf4c5 100644 --- a/json-unit-core/src/main/java/net/javacrumbs/jsonunit/core/internal/JsonDifference.java +++ b/json-unit-core/src/main/java/net/javacrumbs/jsonunit/core/internal/JsonDifference.java @@ -35,7 +35,7 @@ private JsonDifference(String message, Object[] args, Node expected, Node actual } AssertionFailedError getError() { - return new AssertionFailedError(message, expected.getValue(), actual.getValue()); + return new AssertionFailedError(getMessage(), expected.getValue(), actual.getValue()); } public Node getExpected() { 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 8038c4daf..4470cefa5 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 @@ -18,8 +18,10 @@ import net.javacrumbs.jsonunit.assertj.JsonAssert.ConfigurableJsonAssert; import net.javacrumbs.jsonunit.core.Option; import org.junit.jupiter.api.Test; +import org.opentest4j.MultipleFailuresError; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import static java.math.BigDecimal.valueOf; @@ -33,6 +35,7 @@ import static net.javacrumbs.jsonunit.core.Option.TREATING_NULL_AS_ABSENT; import static net.javacrumbs.jsonunit.core.internal.JsonUtils.jsonSource; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.Assertions.entry; import static org.hamcrest.Matchers.greaterThan; @@ -396,6 +399,18 @@ void arraySimpleIgnoringOrderComparisonError() { "Different value found in node \"a[1].c\", expected: <2> but was: <1>.\n"); } + @Test + void multipleFailuresErrorShouldbeCorrectlyFormatted() { + assertThatExceptionOfType(MultipleFailuresError.class) + .isThrownBy(() -> assertThatJson("{\"a\":[{\"b\": 1}, {\"c\": 1}, {\"d\": 1}]}").when(Option.IGNORING_ARRAY_ORDER).node("a").isArray() + .isEqualTo(json("[{\"c\": 2}, {\"b\": 1} ,{\"d\": 1}]"))) + .satisfies(e -> { + List failures = e.getFailures(); + assertThat(failures.get(0).getMessage()).isEqualTo("Different value found when comparing expected array element a[0] to actual element a[1]."); + assertThat(failures.get(1).getMessage()).isEqualTo("Different value found in node \"a[1].c\", expected: <2> but was: <1>."); + }); + } + @Test void arraySimpleIgnoringOrderNotEqualComparison() { assertThatJson("{\"a\":[{\"b\": 1}, {\"c\": 1}, {\"d\": 1}]}").when(Option.IGNORING_ARRAY_ORDER).node("a").isArray()