Skip to content

Commit f140ae1

Browse files
matchers: map contains display missing keys (#1524)
1 parent b47cfe7 commit f140ae1

5 files changed

Lines changed: 50 additions & 1 deletion

File tree

webtau-core-groovy/src/test/groovy/org/testingisdocumenting/webtau/expectation/equality/handlers/MapMatchersGroovyExamplesTest.groovy

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@ class MapMatchersGroovyExamplesTest {
3333
} should throwException(AssertionError)
3434
}
3535

36+
@Test
37+
void containsMismatch() {
38+
code {
39+
// maps-contain-mismatch
40+
Map<String, ?> generated = generate()
41+
generated.should contain(firstName: "G-FN", lastName: "G-LN", middleName: "G-MN")
42+
// maps-contain-mismatch
43+
} should throwException(AssertionError)
44+
}
45+
3646
private static Map<String, ?> generate() {
3747
return map("firstName", "G-FN", "lastName", "G-LN",
3848
"address", map("street", "generated-street", "city", "GenSity"))

webtau-core/src/test/java/org/testingisdocumenting/webtau/expectation/equality/handlers/MapMatchersJavaExamplesTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,25 @@ public void equalityMismatch() {
5656
});
5757
}
5858

59+
@Test
60+
public void containMismatch() {
61+
runExpectExceptionCaptureAndValidateOutput(AssertionError.class, "maps-contain-console-output", """
62+
X failed expecting [value] to contain {"firstName": "G-FN", "lastName": "G-LN", "middleName": "G-MD"}: no match found (Xms)
63+
\s
64+
{
65+
"firstName": "G-FN",
66+
"lastName": "G-LN",
67+
"address": {"street": "generated-street", "city": "GenSity"},
68+
"middleName": **<missing>**
69+
}""", () -> {
70+
// maps-contain-mismatch
71+
Map<String, ?> generated = generate();
72+
actual(generated).should(contain(
73+
map("firstName", "G-FN", "lastName", "G-LN", "middleName", "G-MD")));
74+
// maps-contain-mismatch
75+
});
76+
}
77+
5978
private static Map<String, ?> generate() {
6079
return map("firstName", "G-FN", "lastName", "G-LN",
6180
"address", map("street", "generated-street", "city", "GenSity"));

webtau-docs/znai/matchers/maps.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,22 @@ Java:
1616
:include-cli-output: doc-artifacts/maps-equal-console-output.txt {
1717
title: "console output"
1818
}
19+
20+
# Contain
21+
22+
Use `contain` matcher to check if one map is a subset of another:
23+
24+
```tabs
25+
Groovy:
26+
:include-file: org/testingisdocumenting/webtau/expectation/equality/handlers/MapMatchersGroovyExamplesTest.groovy {
27+
surroundedBy: "maps-contain-mismatch"
28+
}
29+
Java:
30+
:include-file: org/testingisdocumenting/webtau/expectation/equality/handlers/MapMatchersJavaExamplesTest.java {
31+
surroundedBy: "maps-contain-mismatch"
32+
}
33+
```
34+
35+
:include-cli-output: doc-artifacts/maps-contain-console-output.txt {
36+
title: "console output"
37+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
* Add: [Map Comparison](matchers/maps) displays missing keys inlined
1+
* Add: [Map Equal](matchers/maps#equality-comparison) displays missing keys inlined
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* Add: [Map Contain](matchers/maps#contain) displays missing keys inlined

0 commit comments

Comments
 (0)