diff --git a/webtau-core-groovy/src/test/groovy/org/testingisdocumenting/webtau/expectation/equality/handlers/MapMatchersGroovyExamplesTest.groovy b/webtau-core-groovy/src/test/groovy/org/testingisdocumenting/webtau/expectation/equality/handlers/MapMatchersGroovyExamplesTest.groovy index 6a33f1f3d..5b9397ef6 100644 --- a/webtau-core-groovy/src/test/groovy/org/testingisdocumenting/webtau/expectation/equality/handlers/MapMatchersGroovyExamplesTest.groovy +++ b/webtau-core-groovy/src/test/groovy/org/testingisdocumenting/webtau/expectation/equality/handlers/MapMatchersGroovyExamplesTest.groovy @@ -33,6 +33,16 @@ class MapMatchersGroovyExamplesTest { } should throwException(AssertionError) } + @Test + void containsMismatch() { + code { + // maps-contain-mismatch + Map generated = generate() + generated.should contain(firstName: "G-FN", lastName: "G-LN", middleName: "G-MN") + // maps-contain-mismatch + } should throwException(AssertionError) + } + private static Map generate() { return map("firstName", "G-FN", "lastName", "G-LN", "address", map("street", "generated-street", "city", "GenSity")) diff --git a/webtau-core/src/test/java/org/testingisdocumenting/webtau/expectation/equality/handlers/MapMatchersJavaExamplesTest.java b/webtau-core/src/test/java/org/testingisdocumenting/webtau/expectation/equality/handlers/MapMatchersJavaExamplesTest.java index 5058a13c8..79248f746 100644 --- a/webtau-core/src/test/java/org/testingisdocumenting/webtau/expectation/equality/handlers/MapMatchersJavaExamplesTest.java +++ b/webtau-core/src/test/java/org/testingisdocumenting/webtau/expectation/equality/handlers/MapMatchersJavaExamplesTest.java @@ -56,6 +56,25 @@ public void equalityMismatch() { }); } + @Test + public void containMismatch() { + runExpectExceptionCaptureAndValidateOutput(AssertionError.class, "maps-contain-console-output", """ + X failed expecting [value] to contain {"firstName": "G-FN", "lastName": "G-LN", "middleName": "G-MD"}: no match found (Xms) + \s + { + "firstName": "G-FN", + "lastName": "G-LN", + "address": {"street": "generated-street", "city": "GenSity"}, + "middleName": **** + }""", () -> { + // maps-contain-mismatch + Map generated = generate(); + actual(generated).should(contain( + map("firstName", "G-FN", "lastName", "G-LN", "middleName", "G-MD"))); + // maps-contain-mismatch + }); + } + private static Map generate() { return map("firstName", "G-FN", "lastName", "G-LN", "address", map("street", "generated-street", "city", "GenSity")); diff --git a/webtau-docs/znai/matchers/maps.md b/webtau-docs/znai/matchers/maps.md index e07d8443b..639ea0263 100644 --- a/webtau-docs/znai/matchers/maps.md +++ b/webtau-docs/znai/matchers/maps.md @@ -16,3 +16,22 @@ Java: :include-cli-output: doc-artifacts/maps-equal-console-output.txt { title: "console output" } + +# Contain + +Use `contain` matcher to check if one map is a subset of another: + +```tabs +Groovy: +:include-file: org/testingisdocumenting/webtau/expectation/equality/handlers/MapMatchersGroovyExamplesTest.groovy { + surroundedBy: "maps-contain-mismatch" +} +Java: +:include-file: org/testingisdocumenting/webtau/expectation/equality/handlers/MapMatchersJavaExamplesTest.java { + surroundedBy: "maps-contain-mismatch" +} +``` + +:include-cli-output: doc-artifacts/maps-contain-console-output.txt { + title: "console output" +} diff --git a/webtau-docs/znai/release-notes/2.1/add-2023-08-02-map-equality-missing-display.md b/webtau-docs/znai/release-notes/2.1/add-2023-08-02-map-equality-missing-display.md index b71997ee5..35be2ee97 100644 --- a/webtau-docs/znai/release-notes/2.1/add-2023-08-02-map-equality-missing-display.md +++ b/webtau-docs/znai/release-notes/2.1/add-2023-08-02-map-equality-missing-display.md @@ -1 +1 @@ -* Add: [Map Comparison](matchers/maps) displays missing keys inlined +* Add: [Map Equal](matchers/maps#equality-comparison) displays missing keys inlined diff --git a/webtau-docs/znai/release-notes/2.1/add-2023-08-03-map-contain-missing-display.md b/webtau-docs/znai/release-notes/2.1/add-2023-08-03-map-contain-missing-display.md new file mode 100644 index 000000000..c6077478f --- /dev/null +++ b/webtau-docs/znai/release-notes/2.1/add-2023-08-03-map-contain-missing-display.md @@ -0,0 +1 @@ +* Add: [Map Contain](matchers/maps#contain) displays missing keys inlined