From 97e0479ffb1f0d7477b0a0e69e5ad838fce9df0b Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Thu, 26 Dec 2024 11:16:24 -0800 Subject: [PATCH] Renamed JsonResource code to statusCode --- README.md | 7 +++- detekt-baseline.xml | 1 + .../erik/jokeapi/models/JokeResponse.kt | 6 +-- .../net/thauvin/erik/jokeapi/ApiCallTest.kt | 6 +-- .../thauvin/erik/jokeapi/GetRawJokesTest.kt | 41 +++++++++++-------- .../thauvin/erik/jokeapi/JokeConfigTest.kt | 2 +- .../net/thauvin/erik/jokeapi/JokeUtilTest.kt | 2 +- 7 files changed, 38 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index d78cbbd..b289e5c 100644 --- a/README.md +++ b/README.md @@ -154,13 +154,16 @@ A generic `apiCall()` function is available to access other [JokeAPI endpoints]( For example to retrieve the French [language code](https://v2.jokeapi.dev/#langcode-endpoint): ```kotlin -val lang = JokeApi.apiCall( +val response = JokeApi.apiCall( endPoint = "langcode", path = "french", params = mapOf(Parameter.FORMAT to Format.YAML.value) ) -println(lang.data) +if (response.statusCode == 200) { + println(response.data) +} ``` + ```yaml error: false code: "fr" diff --git a/detekt-baseline.xml b/detekt-baseline.xml index 79e77da..1a99819 100644 --- a/detekt-baseline.xml +++ b/detekt-baseline.xml @@ -22,6 +22,7 @@ WildcardImport:GetJokeTest.kt$import assertk.assertions.* WildcardImport:GetJokeTest.kt$import net.thauvin.erik.jokeapi.models.* WildcardImport:GetJokesTest.kt$import assertk.assertions.* + WildcardImport:GetRawJokesTest.kt$import assertk.assertions.* WildcardImport:JokeApi.kt$import net.thauvin.erik.jokeapi.models.* WildcardImport:JokeConfig.kt$import net.thauvin.erik.jokeapi.models.* WildcardImport:JokeConfigTest.kt$import assertk.assertions.* diff --git a/src/main/kotlin/net/thauvin/erik/jokeapi/models/JokeResponse.kt b/src/main/kotlin/net/thauvin/erik/jokeapi/models/JokeResponse.kt index acc129a..11d4c56 100644 --- a/src/main/kotlin/net/thauvin/erik/jokeapi/models/JokeResponse.kt +++ b/src/main/kotlin/net/thauvin/erik/jokeapi/models/JokeResponse.kt @@ -33,7 +33,7 @@ package net.thauvin.erik.jokeapi.models /** * The Joke API response. * - * @property code The HTTP status code. - * @property data The response text. + * @property statusCode The HTTP status code. + * @property data The response body text. */ -data class JokeResponse(val code: Int, val data: String) +data class JokeResponse(val statusCode: Int, val data: String) diff --git a/src/test/kotlin/net/thauvin/erik/jokeapi/ApiCallTest.kt b/src/test/kotlin/net/thauvin/erik/jokeapi/ApiCallTest.kt index 5c41c7d..492d829 100644 --- a/src/test/kotlin/net/thauvin/erik/jokeapi/ApiCallTest.kt +++ b/src/test/kotlin/net/thauvin/erik/jokeapi/ApiCallTest.kt @@ -67,7 +67,7 @@ internal class ApiCallTest { endPoint = "langcode", path = "french", params = mapOf(Parameter.FORMAT to Format.YAML.value) ) - assertThat(lang.code).isEqualTo(200) + assertThat(lang.statusCode).isEqualTo(200) assertContains(lang.data, "code: \"fr\"", false, "apiCall(langcode, french, yaml)") } @@ -75,7 +75,7 @@ internal class ApiCallTest { fun `Get Ping Response`() { // See https://v2.jokeapi.dev/#ping-endpoint val ping = apiCall(endPoint = "ping", params = mapOf(Parameter.FORMAT to Format.TXT.value)) - assertThat(ping.code).isEqualTo(200) + assertThat(ping.statusCode).isEqualTo(200) assertThat(ping.data).startsWith("Pong!") } @@ -86,7 +86,7 @@ internal class ApiCallTest { endPoint = "languages", params = mapOf(Parameter.FORMAT to Format.XML.value, Parameter.LANG to Language.FR.value) ) - assertThat(lang.code).isEqualTo(200) + assertThat(lang.statusCode).isEqualTo(200) assertThat(lang.data).startsWith("") } } diff --git a/src/test/kotlin/net/thauvin/erik/jokeapi/GetRawJokesTest.kt b/src/test/kotlin/net/thauvin/erik/jokeapi/GetRawJokesTest.kt index 3a96d1b..3466611 100644 --- a/src/test/kotlin/net/thauvin/erik/jokeapi/GetRawJokesTest.kt +++ b/src/test/kotlin/net/thauvin/erik/jokeapi/GetRawJokesTest.kt @@ -33,53 +33,60 @@ package net.thauvin.erik.jokeapi import assertk.all import assertk.assertThat -import assertk.assertions.doesNotContain -import assertk.assertions.isEqualTo -import assertk.assertions.isNotEmpty -import assertk.assertions.startsWith +import assertk.assertions.* import net.thauvin.erik.jokeapi.models.Format import net.thauvin.erik.jokeapi.models.IdRange +import net.thauvin.erik.jokeapi.models.JokeResponse import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith -import kotlin.test.assertContains @ExtendWith(BeforeAllTests::class) internal class GetRawJokesTest { @Test fun `Get Raw Joke with TXT`() { val response = rawJokes(format = Format.TXT) - assertThat(response.code).isEqualTo(200) - assertThat(response.data, "rawJoke(data)").all { - isNotEmpty() - doesNotContain("Error") + assertThat(response).all { + prop("statusCode", JokeResponse::statusCode).isEqualTo(200) + prop("data", JokeResponse::data).all { + isNotEmpty() + doesNotContain("Error") + } } } @Test fun `Get Raw Joke with XML`() { val response = rawJokes(format = Format.XML) - assertThat(response.code).isEqualTo(200) - assertThat(response.data, "rawJoke(xml)").startsWith("\n\n false") + assertThat(response).all { + prop("statusCode", JokeResponse::statusCode).isEqualTo(200) + prop("data", JokeResponse::data).startsWith("\n\n false") + } } @Test fun `Get Raw Joke with YAML`() { val response = rawJokes(format = Format.YAML) - assertThat(response.code).isEqualTo(200) - assertThat(response.data, "rawJoke(yaml)").startsWith("error: false") + assertThat(response).all { + prop("statusCode", JokeResponse::statusCode).isEqualTo(200) + prop("data", JokeResponse::data).startsWith("error: false") + } } @Test fun `Get Raw Jokes`() { val response = rawJokes(amount = 2) - assertThat(response.code).isEqualTo(200) - assertContains(response.data, "\"amount\": 2", false, "rawJoke(2)") + assertThat(response).all { + prop("statusCode", JokeResponse::statusCode).isEqualTo(200) + prop("data", JokeResponse::data).isNotEmpty() + } } @Test fun `Get Raw Invalid Jokes`() { val response = rawJokes(contains = "foo", safe = true, amount = 2, idRange = IdRange(160, 161)) - assertThat(response.code).isEqualTo(400) - assertContains(response.data, "\"error\": true", false, "getRawJokes(foo)") + assertThat(response).all { + prop("statusCode", JokeResponse::statusCode).isEqualTo(400) + prop("data", JokeResponse::data).contains("\"error\": true") + } } } diff --git a/src/test/kotlin/net/thauvin/erik/jokeapi/JokeConfigTest.kt b/src/test/kotlin/net/thauvin/erik/jokeapi/JokeConfigTest.kt index d5c37c3..a311a71 100644 --- a/src/test/kotlin/net/thauvin/erik/jokeapi/JokeConfigTest.kt +++ b/src/test/kotlin/net/thauvin/erik/jokeapi/JokeConfigTest.kt @@ -103,7 +103,7 @@ internal class JokeConfigTest { safe(true) }.build() val jokes = getRawJokes(config) - assertThat(jokes.code).isEqualTo(200) + assertThat(jokes.statusCode).isEqualTo(200) assertContains(jokes.data, "----------------------------------------------", false, "config.amount(2)") } diff --git a/src/test/kotlin/net/thauvin/erik/jokeapi/JokeUtilTest.kt b/src/test/kotlin/net/thauvin/erik/jokeapi/JokeUtilTest.kt index 42e47a0..7a05c27 100644 --- a/src/test/kotlin/net/thauvin/erik/jokeapi/JokeUtilTest.kt +++ b/src/test/kotlin/net/thauvin/erik/jokeapi/JokeUtilTest.kt @@ -56,7 +56,7 @@ internal class JokeUtilTest { fun `Validate Authentication Header`() { val token = "AUTH-TOKEN" val response = fetchUrl("https://postman-echo.com/get", token) - assertThat(response.code).isEqualTo(200) + assertThat(response.statusCode).isEqualTo(200) assertThat(response.data, "body").contains("\"authentication\": \"$token\"") } }