Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,16 @@ class MapMatchersGroovyExamplesTest {
} should throwException(AssertionError)
}

@Test
void containsMismatch() {
code {
// maps-contain-mismatch
Map<String, ?> generated = generate()
generated.should contain(firstName: "G-FN", lastName: "G-LN", middleName: "G-MN")
// maps-contain-mismatch
} should throwException(AssertionError)
}

private static Map<String, ?> generate() {
return map("firstName", "G-FN", "lastName", "G-LN",
"address", map("street", "generated-street", "city", "GenSity"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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": **<missing>**
}""", () -> {
// maps-contain-mismatch
Map<String, ?> generated = generate();
actual(generated).should(contain(
map("firstName", "G-FN", "lastName", "G-LN", "middleName", "G-MD")));
// maps-contain-mismatch
});
}

private static Map<String, ?> generate() {
return map("firstName", "G-FN", "lastName", "G-LN",
"address", map("street", "generated-street", "city", "GenSity"));
Expand Down
19 changes: 19 additions & 0 deletions webtau-docs/znai/matchers/maps.md
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
* Add: [Map Comparison](matchers/maps) displays missing keys inlined
* Add: [Map Equal](matchers/maps#equality-comparison) displays missing keys inlined
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* Add: [Map Contain](matchers/maps#contain) displays missing keys inlined