Skip to content

Commit f8c8716

Browse files
committed
Add a simple test for state
1 parent f823a6e commit f8c8716

File tree

5 files changed

+107
-21
lines changed

5 files changed

+107
-21
lines changed

build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ dependencies {
4242
implementation(libs.bundles.search)
4343
testImplementation(libs.ktor.server.test.host)
4444
testImplementation(libs.kotlin.test.junit)
45+
testImplementation(libs.mockk)
4546
}
4647

4748
tasks {

gradle/libs.versions.toml

+2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ arrow_version = "1.2.4"
1212
search_client_version = "2.3.1"
1313
kotlinx_serialization_version = "1.7.3"
1414
node_version = "7.1.0"
15+
mockk_version = "1.13.13"
1516

1617
[libraries]
1718
arrow-core = { group = "io.arrow-kt", name = "arrow-core", version.ref = "arrow_version" }
@@ -35,6 +36,7 @@ ktor-client-cio = { group = "io.ktor", name = "ktor-client-cio", version.ref = "
3536
search-client = { group = "com.jillesvangurp", name = "search-client", version.ref = "search_client_version" }
3637
kotlinx-serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinx_serialization_version" }
3738
ktor-serialization = { group = "io.ktor", name = "ktor-serialization-kotlinx-json", version.ref = "ktor_version" }
39+
mockk = { group = "io.mockk", name="mockk", version.ref = "mockk_version" }
3840

3941
[bundles]
4042
monitoring = ["ktor-server-metrics-micrometer", "micrometer-registry-prometheus", "ktor-server-call-id", "ktor-server-call-logging"]

src/main/kotlin/no/java/conf/plugins/Monitoring.kt

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package no.java.conf.plugins
22

33
import io.ktor.http.HttpHeaders
44
import io.ktor.server.application.Application
5-
import io.ktor.server.application.call
65
import io.ktor.server.application.install
76
import io.ktor.server.metrics.micrometer.MicrometerMetrics
87
import io.ktor.server.plugins.callid.CallId

src/test/kotlin/no/java/conf/ApplicationTest.kt

-20
This file was deleted.
+104
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
package no.java.conf
2+
3+
import com.jillesvangurp.ktsearch.SearchClient
4+
import io.ktor.client.request.get
5+
import io.ktor.client.statement.bodyAsText
6+
import io.ktor.http.HttpStatusCode
7+
import io.ktor.server.testing.testApplication
8+
import io.mockk.every
9+
import io.mockk.mockk
10+
import kotlinx.coroutines.runBlocking
11+
import no.java.conf.plugins.configureSearchRouting
12+
import no.java.conf.service.SearchService
13+
import kotlin.test.Test
14+
import kotlin.test.assertEquals
15+
import kotlin.test.assertTrue
16+
17+
class StateTest {
18+
@Test
19+
fun testNewState() {
20+
val searchClient = mockk<SearchClient>()
21+
22+
val service = SearchService(searchClient, false)
23+
24+
testApplication {
25+
26+
application {
27+
configureSearchRouting(service)
28+
}
29+
30+
client.get("/api/search/state").apply {
31+
assertEquals(HttpStatusCode.OK, status)
32+
assertEquals(bodyAsText(), "NEW")
33+
}
34+
}
35+
}
36+
37+
38+
@Test
39+
fun testSkipIndex() {
40+
val searchClient = mockk<SearchClient>()
41+
42+
val service = SearchService(searchClient, true)
43+
44+
testApplication {
45+
46+
application {
47+
configureSearchRouting(service)
48+
}
49+
50+
client.get("/api/search/state").apply {
51+
assertEquals(HttpStatusCode.OK, status)
52+
assertEquals(bodyAsText(), "NEW")
53+
}
54+
}
55+
}
56+
57+
@Test
58+
fun testSkipIndexMapped() {
59+
val searchClient = mockk<SearchClient>()
60+
61+
val service = SearchService(searchClient, true)
62+
63+
runBlocking {
64+
service.setup()
65+
}
66+
67+
testApplication {
68+
69+
application {
70+
configureSearchRouting(service)
71+
}
72+
73+
client.get("/api/search/state").apply {
74+
assertEquals(HttpStatusCode.OK, status)
75+
assertEquals(bodyAsText(), "MAPPED")
76+
}
77+
}
78+
}
79+
80+
81+
@Test
82+
fun testSkipIndexIndexed() {
83+
val searchClient = mockk<SearchClient>()
84+
85+
val service = SearchService(searchClient, true)
86+
87+
runBlocking {
88+
service.setup()
89+
service.ingest(emptyList())
90+
}
91+
92+
testApplication {
93+
94+
application {
95+
configureSearchRouting(service)
96+
}
97+
98+
client.get("/api/search/state").apply {
99+
assertEquals(HttpStatusCode.OK, status)
100+
assertEquals(bodyAsText(), "INDEXED")
101+
}
102+
}
103+
}
104+
}

0 commit comments

Comments
 (0)