From c83f6ebaa2734c23707418c003ed7a0a99d2076c Mon Sep 17 00:00:00 2001 From: Berchris Requiao Date: Wed, 18 Aug 2021 16:33:45 +0100 Subject: [PATCH 1/2] Document how to parameterize REST Docs' output dir with WebTestClient See gh-27755 --- .../docs/asciidoc/spring-boot-features.adoc | 10 ++++++ ...tClientBuilderCustomizerConfiguration.java | 33 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/test/autoconfigure/restdocs/webclient/MyWebTestClientBuilderCustomizerConfiguration.java diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc index f5abf27b5221..bc8b76e60db1 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc @@ -8063,6 +8063,16 @@ If you require more control over Spring REST Docs configuration than offered by include::{code-examples}/test/autoconfigure/restdocs/webclient/AdvancedConfigurationExample.java[tag=configuration] ---- +If you want to make use of Spring REST Docs support for a parameterized output directory, you can create a `WebTestClientBuilderCustomizer` bean. +The auto-configuration calls this `WebTestClientBuilderCustomizer` in order to create the `WebTestClient` bean for the current context +with the consumer provided in the parameter of the method `entityExchangeResultConsumer`. +The following example shows a `WebTestClientBuilderCustomizer` being defined: + +[source,java,indent=0,subs="verbatim"] +---- +include::{code-examples}/test/autoconfigure/restdocs/webclient/MyWebTestClientBuilderCustomizerConfiguration.java[] +---- + [[boot-features-testing-spring-boot-applications-testing-autoconfigured-rest-docs-rest-assured]] diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/test/autoconfigure/restdocs/webclient/MyWebTestClientBuilderCustomizerConfiguration.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/test/autoconfigure/restdocs/webclient/MyWebTestClientBuilderCustomizerConfiguration.java new file mode 100644 index 000000000000..8713104daacd --- /dev/null +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/test/autoconfigure/restdocs/webclient/MyWebTestClientBuilderCustomizerConfiguration.java @@ -0,0 +1,33 @@ +/* + * Copyright 2012-2021 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.docs.features.testing.springbootapplications.autoconfiguredspringrestdocs.withwebtestclient; + +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.boot.test.web.reactive.server.WebTestClientBuilderCustomizer; +import org.springframework.context.annotation.Bean; + +import static org.springframework.restdocs.webtestclient.WebTestClientRestDocumentation.document; + +@TestConfiguration(proxyBeanMethods = false) +public class MyWebTestClientBuilderCustomizerConfiguration { + + @Bean + public WebTestClientBuilderCustomizer restDocumentation() { + return (builder) -> builder.entityExchangeResultConsumer(document("{method-name}")); + } + +} From 990b766847653955331b578079a91f0f87dac3cc Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 23 Aug 2021 15:36:16 +0100 Subject: [PATCH 2/2] Polish "Document how to parameterize REST Docs' output dir with WebTestClient" See gh-27755 --- .../docs/asciidoc/spring-boot-features.adoc | 10 ++++------ ...rameterizedOutputConfigurationExample.java} | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 12 deletions(-) rename spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/test/autoconfigure/restdocs/webclient/{MyWebTestClientBuilderCustomizerConfiguration.java => ParameterizedOutputConfigurationExample.java} (68%) diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc index bc8b76e60db1..4f0a9fef4f5f 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc @@ -8063,14 +8063,12 @@ If you require more control over Spring REST Docs configuration than offered by include::{code-examples}/test/autoconfigure/restdocs/webclient/AdvancedConfigurationExample.java[tag=configuration] ---- -If you want to make use of Spring REST Docs support for a parameterized output directory, you can create a `WebTestClientBuilderCustomizer` bean. -The auto-configuration calls this `WebTestClientBuilderCustomizer` in order to create the `WebTestClient` bean for the current context -with the consumer provided in the parameter of the method `entityExchangeResultConsumer`. -The following example shows a `WebTestClientBuilderCustomizer` being defined: +If you want to make use of Spring REST Docs support for a parameterized output directory, you can use a `WebTestClientBuilderCustomizer` to configure a consumer for every entity exchange result. +The following example shows such a `WebTestClientBuilderCustomizer` being defined: -[source,java,indent=0,subs="verbatim"] +[source,java,indent=0] ---- -include::{code-examples}/test/autoconfigure/restdocs/webclient/MyWebTestClientBuilderCustomizerConfiguration.java[] +include::{code-examples}/test/autoconfigure/restdocs/webclient/ParameterizedOutputConfigurationExample.java[tag=configuration] ---- diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/test/autoconfigure/restdocs/webclient/MyWebTestClientBuilderCustomizerConfiguration.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/test/autoconfigure/restdocs/webclient/ParameterizedOutputConfigurationExample.java similarity index 68% rename from spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/test/autoconfigure/restdocs/webclient/MyWebTestClientBuilderCustomizerConfiguration.java rename to spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/test/autoconfigure/restdocs/webclient/ParameterizedOutputConfigurationExample.java index 8713104daacd..950676501230 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/test/autoconfigure/restdocs/webclient/MyWebTestClientBuilderCustomizerConfiguration.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/test/autoconfigure/restdocs/webclient/ParameterizedOutputConfigurationExample.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.docs.features.testing.springbootapplications.autoconfiguredspringrestdocs.withwebtestclient; +package org.springframework.boot.docs.test.autoconfigure.restdocs.webclient; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.test.web.reactive.server.WebTestClientBuilderCustomizer; @@ -22,12 +22,18 @@ import static org.springframework.restdocs.webtestclient.WebTestClientRestDocumentation.document; -@TestConfiguration(proxyBeanMethods = false) -public class MyWebTestClientBuilderCustomizerConfiguration { +class ParameterizedOutputConfigurationExample { + + // tag::configuration[] + @TestConfiguration(proxyBeanMethods = false) + static class ParameterizedOutputConfiguration { + + @Bean + WebTestClientBuilderCustomizer restDocumentation() { + return (builder) -> builder.entityExchangeResultConsumer(document("{method-name}")); + } - @Bean - public WebTestClientBuilderCustomizer restDocumentation() { - return (builder) -> builder.entityExchangeResultConsumer(document("{method-name}")); } + // end::configuration[] }