Skip to content

Commit 0a8ce56

Browse files
committed
feat: add schemes router test
1 parent b79e5a3 commit 0a8ce56

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
package com.ctrlhub.core.governance.schemes
2+
3+
import com.ctrlhub.core.configureForTest
4+
import com.ctrlhub.core.governance.schemes.response.Scheme
5+
import io.ktor.client.HttpClient
6+
import io.ktor.client.engine.mock.MockEngine
7+
import io.ktor.client.engine.mock.respond
8+
import io.ktor.http.HttpHeaders
9+
import io.ktor.http.HttpStatusCode
10+
import io.ktor.http.headersOf
11+
import kotlinx.coroutines.runBlocking
12+
import org.junit.jupiter.api.Test
13+
import java.nio.file.Files
14+
import java.nio.file.Paths
15+
import kotlin.test.assertIs
16+
import kotlin.test.assertNotNull
17+
18+
class SchemesRouterTest {
19+
20+
@Test
21+
fun `can retrieve all schemes`() {
22+
val jsonFilePath = Paths.get("src/test/resources/governance/schemes/all-schemes-response.json")
23+
val jsonContent = Files.readString(jsonFilePath)
24+
25+
val mockEngine = MockEngine { request ->
26+
respond(
27+
content = jsonContent,
28+
status = HttpStatusCode.OK,
29+
headers = headersOf(HttpHeaders.ContentType, "application/json")
30+
)
31+
}
32+
33+
val schemesRouter = SchemesRouter(httpClient = HttpClient(mockEngine).configureForTest())
34+
35+
runBlocking {
36+
val response = schemesRouter.all(organisationId = "123", SchemeRequestParameters(
37+
includes = listOf(
38+
SchemeIncludes.WorkOrders,
39+
SchemeIncludes.WorkOrdersOperations
40+
)
41+
))
42+
43+
assertIs<List<Scheme>>(response)
44+
assertNotNull(response[0].id)
45+
}
46+
}
47+
48+
@Test
49+
fun `can retrieve one scheme`() {
50+
val jsonFilePath = Paths.get("src/test/resources/governance/schemes/one-scheme-response.json")
51+
val jsonContent = Files.readString(jsonFilePath)
52+
53+
val mockEngine = MockEngine { request ->
54+
respond(
55+
content = jsonContent,
56+
status = HttpStatusCode.OK,
57+
headers = headersOf(HttpHeaders.ContentType, "application/json")
58+
)
59+
}
60+
61+
val schemesRouter = SchemesRouter(httpClient = HttpClient(mockEngine).configureForTest())
62+
63+
runBlocking {
64+
val response = schemesRouter.one(organisationId = "123", schemeId = "123", SchemeRequestParameters(
65+
includes = listOf(
66+
SchemeIncludes.WorkOrders,
67+
SchemeIncludes.WorkOrdersOperations
68+
)
69+
))
70+
71+
assertIs<Scheme>(response)
72+
assertNotNull(response.id)
73+
}
74+
}
75+
76+
@Test
77+
fun `can retrieve a scheme with includes`() {
78+
val jsonFilePath = Paths.get("src/test/resources/governance/schemes/one-scheme-response-with-includes.json")
79+
val jsonContent = Files.readString(jsonFilePath)
80+
81+
val mockEngine = MockEngine { request ->
82+
respond(
83+
content = jsonContent,
84+
status = HttpStatusCode.OK,
85+
headers = headersOf(HttpHeaders.ContentType, "application/json")
86+
)
87+
}
88+
89+
val schemesRouter = SchemesRouter(httpClient = HttpClient(mockEngine).configureForTest())
90+
91+
runBlocking {
92+
val response = schemesRouter.one(organisationId = "123", schemeId = "123", SchemeRequestParameters(
93+
includes = listOf(
94+
SchemeIncludes.WorkOrders
95+
)
96+
))
97+
98+
assertIs<Scheme>(response)
99+
assertNotNull(response.id)
100+
assertNotNull(response.workOrders)
101+
assertNotNull(response.workOrders?.get(0)?.id)
102+
}
103+
}
104+
}

0 commit comments

Comments
 (0)