Skip to content

Commit

Permalink
Merge pull request #61 from inovait/json_fallback
Browse files Browse the repository at this point in the history
test(retrofit): Add JsonFallback test
  • Loading branch information
inovakotnik authored Nov 5, 2024
2 parents e4b8dfb + 9c08957 commit 4bbd9d1
Showing 1 changed file with 68 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/*
* Copyright 2024 INOVA IT d.o.o.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
* modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
* is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

package si.inova.kotlinova.retrofit.moshi

import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
import com.squareup.moshi.Moshi
import io.kotest.matchers.shouldBe
import kotlinx.coroutines.test.runTest
import org.junit.jupiter.api.Test

internal class JsonFallbackTest {

private val moshi = Moshi.Builder().addEnumAdapter<FakeLevel>().build()

@Test
internal fun `Parse json as correct enum`() = runTest {
var json = "\"low\""
var level = moshi.fromJson<FakeLevel>(json)
level shouldBe FakeLevel.LOW

json = "\"medium\""
level = moshi.fromJson<FakeLevel>(json)
level shouldBe FakeLevel.MEDIUM

json = "\"high\""
level = moshi.fromJson<FakeLevel>(json)
level shouldBe FakeLevel.HIGH

json = "\"other\""
level = moshi.fromJson<FakeLevel>(json)
level shouldBe FakeLevel.OTHER

json = "\"wrongValue\""
level = moshi.fromJson<FakeLevel>(json)
level shouldBe FakeLevel.OTHER
}
}

@JsonClass(generateAdapter = false)
private enum class FakeLevel {
@Json(name = "low")
LOW,

@Json(name = "medium")
MEDIUM,

@Json(name = "high")
HIGH,

@Json(name = "other")
@JsonFallback
OTHER
}

0 comments on commit 4bbd9d1

Please sign in to comment.