Skip to content

Commit e23c6b4

Browse files
committed
Stop flagging documented field beneath option null field as missing
Closes spring-projectsgh-557
1 parent eb03213 commit e23c6b4

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/JsonContentHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ private boolean isMissing(FieldDescriptor candidate, Object payload) {
8686
}
8787
ExtractedField extracted = this.fieldProcessor.extract(candidate.getPath(),
8888
payload);
89-
return isEmptyCollection(extracted.getValue());
89+
return extracted.getValue() == null || isEmptyCollection(extracted.getValue());
9090
}
9191

9292
private boolean isEmptyCollection(Object value) {

spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/JsonContentHandlerTests.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,4 +183,13 @@ public void describedMissingFieldThatIsChildOfNestedOptionalArrayThatContainsAnO
183183
assertThat(missingFields.get(0).getPath()).isEqualTo("a.[].b.[].c");
184184
}
185185

186+
@Test
187+
public void describedMissingFieldThatIsChildOfOptionalObjectThatIsNullIsNotConsideredMissing() {
188+
List<FieldDescriptor> missingFields = new JsonContentHandler(
189+
"{\"a\":null}".getBytes()).findMissingFields(
190+
Arrays.asList(new FieldDescriptor("a").optional(),
191+
new FieldDescriptor("a.b")));
192+
assertThat(missingFields.size()).isEqualTo(0);
193+
}
194+
186195
}

0 commit comments

Comments
 (0)