forked from ePages-de/restdocs-api-spec
-
Notifications
You must be signed in to change notification settings - Fork 0
/
WebTestClientRestDocumentationWrapper.kt
116 lines (104 loc) · 4.31 KB
/
WebTestClientRestDocumentationWrapper.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package com.epages.restdocs.apispec
import org.springframework.restdocs.operation.preprocess.OperationRequestPreprocessor
import org.springframework.restdocs.operation.preprocess.OperationResponsePreprocessor
import org.springframework.restdocs.snippet.Snippet
import org.springframework.restdocs.webtestclient.WebTestClientRestDocumentation
import org.springframework.test.web.reactive.server.EntityExchangeResult
import java.util.function.Consumer
import java.util.function.Function
object WebTestClientRestDocumentationWrapper : RestDocumentationWrapper() {
@JvmOverloads
@JvmStatic
fun <T> document(
identifier: String,
resourceDetails: ResourceSnippetDetails,
requestPreprocessor: OperationRequestPreprocessor? = null,
responsePreprocessor: OperationResponsePreprocessor? = null,
snippetFilter: Function<List<Snippet>, List<Snippet>> = Function.identity(),
vararg snippets: Snippet
): Consumer<EntityExchangeResult<T>> {
val enhancedSnippets =
enhanceSnippetsWithResourceSnippet(
resourceDetails = resourceDetails,
snippetFilter = snippetFilter,
snippets = snippets
)
if (requestPreprocessor != null && responsePreprocessor != null) {
return WebTestClientRestDocumentation.document(
identifier,
requestPreprocessor,
responsePreprocessor,
*enhancedSnippets
)
} else if (requestPreprocessor != null) {
return WebTestClientRestDocumentation.document(identifier, requestPreprocessor, *enhancedSnippets)
} else if (responsePreprocessor != null) {
return WebTestClientRestDocumentation.document(identifier, responsePreprocessor, *enhancedSnippets)
}
return WebTestClientRestDocumentation.document(identifier, *enhancedSnippets)
}
@JvmOverloads
@JvmStatic
fun <T> document(
identifier: String,
description: String? = null,
summary: String? = null,
privateResource: Boolean = false,
deprecated: Boolean = false,
requestPreprocessor: OperationRequestPreprocessor? = null,
responsePreprocessor: OperationResponsePreprocessor? = null,
snippetFilter: Function<List<Snippet>, List<Snippet>> = Function.identity(),
vararg snippets: Snippet
): Consumer<EntityExchangeResult<T>> {
return document(
identifier = identifier,
resourceDetails = resourceDetails()
.description(description)
.summary(summary)
.privateResource(privateResource)
.deprecated(deprecated),
requestPreprocessor = requestPreprocessor,
responsePreprocessor = responsePreprocessor,
snippetFilter = snippetFilter,
snippets = snippets
)
}
@JvmStatic
fun <T> document(
identifier: String,
requestPreprocessor: OperationRequestPreprocessor,
vararg snippets: Snippet
): Consumer<EntityExchangeResult<T>> {
return document(identifier, null, null, false, false, requestPreprocessor, snippets = snippets)
}
@JvmStatic
fun <T> document(
identifier: String,
description: String,
privateResource: Boolean,
vararg snippets: Snippet
): Consumer<EntityExchangeResult<T>> {
return document(identifier, description, null, privateResource, snippets = snippets)
}
@JvmStatic
fun <T> document(
identifier: String,
responsePreprocessor: OperationResponsePreprocessor,
vararg snippets: Snippet
): Consumer<EntityExchangeResult<T>> {
return document(identifier, null, null, false, false, responsePreprocessor = responsePreprocessor, snippets = snippets)
}
@JvmStatic
fun <T> document(
identifier: String,
requestPreprocessor: OperationRequestPreprocessor,
responsePreprocessor: OperationResponsePreprocessor,
vararg snippets: Snippet
): Consumer<EntityExchangeResult<T>> {
return document(identifier, null, null, false, false, requestPreprocessor, responsePreprocessor, snippets = snippets)
}
@JvmStatic
fun resourceDetails(): ResourceSnippetDetails {
return ResourceSnippetParametersBuilder()
}
}