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