Skip to content

Commit e489003

Browse files
committed
Tidied up WebServerRule.
1 parent d7b2c12 commit e489003

1 file changed

Lines changed: 34 additions & 40 deletions

File tree

  • architecture/instrumentation-test/src/main/java/com/mitteloupe/whoami/test/rule

architecture/instrumentation-test/src/main/java/com/mitteloupe/whoami/test/rule/WebServerRule.kt

Lines changed: 34 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -12,54 +12,48 @@ class WebServerRule(
1212
private val lazyResponseStore: Lazy<ResponseStore>
1313
) : TestRule {
1414
override fun apply(base: Statement, description: Description): Statement =
15-
WebServerInitializationStatement(
16-
lazyMockDispatcher,
17-
lazyResponseStore,
18-
base,
19-
description
20-
)
21-
22-
private class WebServerInitializationStatement(
23-
private val lazyMockDispatcher: Lazy<ResponseBinder>,
24-
private val lazyResponseStore: Lazy<ResponseStore>,
25-
private val base: Statement,
26-
private val description: Description
27-
) : Statement() {
28-
val responseStore by lazy { lazyResponseStore.value }
29-
val mockDispatcher by lazy { lazyMockDispatcher.value }
15+
WebServerStatement(lazyMockDispatcher, lazyResponseStore, base, description)
16+
}
3017

31-
override fun evaluate() {
32-
val requestResponses = description.requestResponseIds()
33-
.map { requestResponseId ->
18+
private class WebServerStatement(
19+
private val lazyMockDispatcher: Lazy<ResponseBinder>,
20+
private val lazyResponseStore: Lazy<ResponseStore>,
21+
private val base: Statement,
22+
private val description: Description
23+
) : Statement() {
24+
val responseStore by lazy { lazyResponseStore.value }
25+
val mockDispatcher by lazy { lazyMockDispatcher.value }
26+
27+
override fun evaluate() {
28+
val requestResponses = description.requestResponseIds()
29+
.map { requestResponseId ->
30+
requireNotNull(
3431
responseStore.responseFactories[requestResponseId]
35-
?: throw IllegalArgumentException(
36-
"Request/Response ID $requestResponseId not found."
37-
)
38-
}
39-
40-
mockDispatcher.testName = description.displayName
41-
requestResponses.forEach { requestResponse ->
42-
mockDispatcher.bindResponse(requestResponse)
32+
) { "Request/Response ID $requestResponseId not found." }
4333
}
44-
val stubbedResponseKeys = requestResponses
45-
.map { requestResponse -> requestResponse.request }
46-
.toSet()
4734

48-
base.evaluate()
35+
mockDispatcher.testName = description.displayName
36+
requestResponses.forEach { requestResponse ->
37+
mockDispatcher.bindResponse(requestResponse)
38+
}
39+
val stubbedResponseKeys = requestResponses
40+
.map { requestResponse -> requestResponse.request }
41+
.toSet()
4942

50-
val usedResponseKeys = mockDispatcher.usedEndpoints.toSet()
43+
base.evaluate()
5144

52-
val unusedResponseKeys = stubbedResponseKeys - usedResponseKeys
53-
check(unusedResponseKeys.isEmpty()) {
54-
"${unusedResponseKeys.size} unused stubbed URLs:\n[" +
55-
unusedResponseKeys.joinToString("]\n[") + "]"
56-
}
45+
val usedResponseKeys = mockDispatcher.usedEndpoints.toSet()
5746

58-
mockDispatcher.reset()
47+
val unusedResponseKeys = stubbedResponseKeys - usedResponseKeys
48+
check(unusedResponseKeys.isEmpty()) {
49+
"${unusedResponseKeys.size} unused stubbed URLs:\n[" +
50+
unusedResponseKeys.joinToString("]\n[") + "]"
5951
}
6052

61-
private fun Description.requestResponseIds() =
62-
annotations.filterIsInstance<ServerRequestResponse>()
63-
.flatMap { serverResponse -> serverResponse.requestResponseIds.toList() }
53+
mockDispatcher.reset()
6454
}
55+
56+
private fun Description.requestResponseIds() =
57+
annotations.filterIsInstance<ServerRequestResponse>()
58+
.flatMap { serverResponse -> serverResponse.requestResponseIds.toList() }
6559
}

0 commit comments

Comments
 (0)