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\"")
}
}