Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ kotlin {
implementation(kotlin("test"))
implementation(kotlin("reflect"))
implementation(libs.kotlinx.coroutines.test)
implementation(libs.kotlinx.io)
implementation(libs.ktor.client.mock)
}
}
Expand Down
4 changes: 3 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
[versions]
# Regular libraries: keep as up to date as possible.
kotlinx-serialization = "1.8.1"
kotlinx-coroutines-test = "1.10.2"
kotlinx-io = "0.7.0"
kotlinx-serialization = "1.8.1"
ktor = "3.1.3"

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

[libraries]
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines-test" }
kotlinx-io = { module = "org.jetbrains.kotlinx:kotlinx-io-core", version.ref = "kotlinx-io" }
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization" }
ktorfit = { module = "de.jensklingenberg.ktorfit:ktorfit-lib", version.ref = "gradle-ktorfit" }
ktor-client-mock = { module = "io.ktor:ktor-client-mock", version.ref = "ktor" }
Expand Down
2 changes: 1 addition & 1 deletion src/jvmTest/kotlin/dev/sargunv/pokekotlin/test/LiveTest.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package dev.sargunv.pokekotlin.test

import dev.sargunv.pokekotlin.client.PokeApiClient
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlinx.coroutines.test.runTest
import org.junit.Test

class LiveTest {

Expand Down
14 changes: 6 additions & 8 deletions src/jvmTest/kotlin/dev/sargunv/pokekotlin/test/MockServer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ import io.ktor.client.request.HttpRequestData
import io.ktor.client.request.HttpResponseData
import io.ktor.http.HttpStatusCode
import io.ktor.http.headersOf
import java.io.File
import java.io.FileReader
import java.nio.file.Paths
import kotlin.io.path.Path
import kotlin.io.path.exists
import kotlin.io.path.readText
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.JsonPrimitive
import kotlinx.serialization.json.buildJsonArray
Expand All @@ -23,8 +23,6 @@ object MockServer {
val mockEngine = MockEngine { request -> dispatch(request) }
val client = PokeApiClient(engine = mockEngine)

private val sampleArchivePath = Paths.get(MockServer::class.java.getResource("/data")!!.toURI())

private fun limit(text: String, limit: Int): String {
val fullObj = PokeApiJson.decodeFromString<JsonObject>(text)
val fullResults = fullObj["results"]!!.jsonArray
Expand All @@ -38,11 +36,11 @@ object MockServer {
}

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