From 8c8530e66e50af510eaf5dd863572d56fedfc1df Mon Sep 17 00:00:00 2001 From: DavJaveiro Date: Sat, 1 Aug 2026 14:52:00 -0300 Subject: [PATCH] Improve missing field description validation Signed-off-by: DavJaveiro --- .../restdocs/payload/AbstractFieldsSnippet.java | 4 ++-- .../restdocs/payload/ResponseFieldsSnippetTests.java | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/AbstractFieldsSnippet.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/AbstractFieldsSnippet.java index 67360bd8..9ac049aa 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/AbstractFieldsSnippet.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/AbstractFieldsSnippet.java @@ -136,8 +136,8 @@ protected AbstractFieldsSnippet(String name, String type, List for (FieldDescriptor descriptor : descriptors) { Assert.notNull(descriptor.getPath(), "Field descriptors must have a path"); if (!descriptor.isIgnored()) { - Assert.notNull(descriptor.getDescription() != null, "The descriptor for '" + descriptor.getPath() - + "' must have a" + " description or it must be marked as ignored"); + Assert.notNull(descriptor.getDescription(), "The descriptor for '" + descriptor.getPath() + + "' must have a description or it must be marked as ignored"); } } this.fieldDescriptors = descriptors; diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/ResponseFieldsSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/ResponseFieldsSnippetTests.java index 555897f2..2dd06097 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/ResponseFieldsSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/ResponseFieldsSnippetTests.java @@ -395,6 +395,15 @@ void typeDeterminationDoesNotSetTypeOnDescriptor(OperationBuilder operationBuild .isTable((table) -> table.withHeader("Path", "Type", "Description").row("`id`", "`Number`", "one")); } + @SnippetTest + void undocumentedResponseFieldDescriptorMustHaveADescription() { + assertThatExceptionOfType(IllegalArgumentException.class) + .isThrownBy(() -> new ResponseFieldsSnippet( + Arrays.asList(fieldWithPath("input_data_type").type(JsonFieldType.STRING)))) + .withMessage( + "The descriptor for 'input_data_type' must have a description or it must be marked as ignored"); + } + @SnippetTest void attemptToDocumentFieldsWithNoResponseBody(OperationBuilder operationBuilder) { assertThatExceptionOfType(SnippetException.class)