Skip to content

Commit 289d188

Browse files
authored
use multiplatform filesystem api (#100)
1 parent 5f3c819 commit 289d188

File tree

4 files changed

+11
-10
lines changed

4 files changed

+11
-10
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ kotlin {
4343
implementation(kotlin("test"))
4444
implementation(kotlin("reflect"))
4545
implementation(libs.kotlinx.coroutines.test)
46+
implementation(libs.kotlinx.io)
4647
implementation(libs.ktor.client.mock)
4748
}
4849
}

gradle/libs.versions.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
[versions]
22
# Regular libraries: keep as up to date as possible.
3-
kotlinx-serialization = "1.8.1"
43
kotlinx-coroutines-test = "1.10.2"
4+
kotlinx-io = "0.7.0"
5+
kotlinx-serialization = "1.8.1"
56
ktor = "3.1.3"
67

78
# Regular tools: keep as up to date as possible
@@ -17,6 +18,7 @@ tool-prettier = "3.5.3"
1718

1819
[libraries]
1920
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines-test" }
21+
kotlinx-io = { module = "org.jetbrains.kotlinx:kotlinx-io-core", version.ref = "kotlinx-io" }
2022
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization" }
2123
ktorfit = { module = "de.jensklingenberg.ktorfit:ktorfit-lib", version.ref = "gradle-ktorfit" }
2224
ktor-client-mock = { module = "io.ktor:ktor-client-mock", version.ref = "ktor" }

src/jvmTest/kotlin/dev/sargunv/pokekotlin/test/LiveTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package dev.sargunv.pokekotlin.test
22

33
import dev.sargunv.pokekotlin.client.PokeApiClient
4+
import kotlin.test.Test
45
import kotlin.test.assertEquals
56
import kotlinx.coroutines.test.runTest
6-
import org.junit.Test
77

88
class LiveTest {
99

src/jvmTest/kotlin/dev/sargunv/pokekotlin/test/MockServer.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import io.ktor.client.request.HttpRequestData
1010
import io.ktor.client.request.HttpResponseData
1111
import io.ktor.http.HttpStatusCode
1212
import io.ktor.http.headersOf
13-
import java.io.File
14-
import java.io.FileReader
15-
import java.nio.file.Paths
13+
import kotlin.io.path.Path
14+
import kotlin.io.path.exists
15+
import kotlin.io.path.readText
1616
import kotlinx.serialization.json.JsonObject
1717
import kotlinx.serialization.json.JsonPrimitive
1818
import kotlinx.serialization.json.buildJsonArray
@@ -23,8 +23,6 @@ object MockServer {
2323
val mockEngine = MockEngine { request -> dispatch(request) }
2424
val client = PokeApiClient(engine = mockEngine)
2525

26-
private val sampleArchivePath = Paths.get(MockServer::class.java.getResource("/data")!!.toURI())
27-
2826
private fun limit(text: String, limit: Int): String {
2927
val fullObj = PokeApiJson.decodeFromString<JsonObject>(text)
3028
val fullResults = fullObj["results"]!!.jsonArray
@@ -38,11 +36,11 @@ object MockServer {
3836
}
3937

4038
private fun MockRequestHandleScope.dispatch(request: HttpRequestData): HttpResponseData {
41-
val basePath = request.url.encodedPath.dropLastWhile { it != '/' }
39+
val basePath = request.url.encodedPath
4240
val limit = request.url.parameters["limit"]?.toInt()
43-
val file = File(sampleArchivePath.toString() + basePath + "index.json")
41+
val file = Path("src/jvmTest/resources/data" + basePath + "index.json")
4442
return if (file.exists()) {
45-
val text = FileReader(file).use { it.readText() }
43+
val text = file.readText()
4644
val content = if (limit != null) limit(text, limit) else text
4745
respond(content = content, headers = headersOf("content-type", "application/json"))
4846
} else respondError(HttpStatusCode.NotFound)

0 commit comments

Comments
 (0)