mirror of
https://github.com/ultrasonic/ultrasonic
synced 2025-02-06 20:13:21 +01:00
Replace type of id property to String.
Some api implementations are using UUID string for ids. Signed-off-by: Yahor Berdnikau <egorr.berd@gmail.com>
This commit is contained in:
parent
46cf8a71c2
commit
66d7973c5a
@ -17,7 +17,9 @@ class SubsonicApiGetMusicFoldersTest : SubsonicAPIClientTest() {
|
||||
assertResponseSuccessful(response)
|
||||
with(response.body()) {
|
||||
assertBaseResponseOk()
|
||||
musicFolders `should equal` listOf(MusicFolder(0, "Music"), MusicFolder(2, "Test"))
|
||||
musicFolders `should equal` listOf(
|
||||
MusicFolder("0", "Music"),
|
||||
MusicFolder("2", "Test"))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
package org.moire.ultrasonic.api.subsonic.models
|
||||
|
||||
data class MusicFolder(val id: Long = -1, val name: String = "")
|
||||
data class MusicFolder(val id: String = "", val name: String = "")
|
||||
|
@ -1,33 +1,18 @@
|
||||
package org.moire.ultrasonic.api.subsonic.response
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParser
|
||||
import com.fasterxml.jackson.core.JsonToken
|
||||
import com.fasterxml.jackson.databind.DeserializationContext
|
||||
import com.fasterxml.jackson.databind.JsonDeserializer
|
||||
import com.fasterxml.jackson.databind.JsonMappingException
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
|
||||
import com.fasterxml.jackson.annotation.JsonProperty
|
||||
import org.moire.ultrasonic.api.subsonic.SubsonicAPIVersions
|
||||
import org.moire.ultrasonic.api.subsonic.SubsonicError
|
||||
import org.moire.ultrasonic.api.subsonic.models.MusicFolder
|
||||
|
||||
class MusicFoldersResponse(status: Status,
|
||||
version: SubsonicAPIVersions,
|
||||
error: SubsonicError?,
|
||||
@JsonDeserialize(using = MusicFoldersDeserializer::class)
|
||||
val musicFolders: List<MusicFolder> = emptyList()) :
|
||||
error: SubsonicError?) :
|
||||
SubsonicResponse(status, version, error) {
|
||||
companion object {
|
||||
class MusicFoldersDeserializer() : JsonDeserializer<List<MusicFolder>>() {
|
||||
override fun deserialize(p: JsonParser, ctxt: DeserializationContext?): List<MusicFolder> {
|
||||
p.nextToken()
|
||||
if (p.currentName == "musicFolder" && p.nextToken() == JsonToken.START_ARRAY) {
|
||||
val mfJavaType = ctxt!!.typeFactory
|
||||
.constructCollectionType(List::class.java, MusicFolder::class.java)
|
||||
return ctxt.readValue(p, mfJavaType)
|
||||
}
|
||||
@JsonProperty("musicFolders") private val wrapper = MusicFoldersWrapper()
|
||||
|
||||
throw JsonMappingException(p, "Failed to parse music folders list")
|
||||
}
|
||||
}
|
||||
}
|
||||
val musicFolders get() = wrapper.musicFolders
|
||||
}
|
||||
|
||||
internal class MusicFoldersWrapper(
|
||||
@JsonProperty("musicFolder") val musicFolders: List<MusicFolder> = emptyList())
|
||||
|
@ -6,7 +6,7 @@ package org.moire.ultrasonic.data
|
||||
import org.moire.ultrasonic.domain.MusicFolder
|
||||
import org.moire.ultrasonic.api.subsonic.models.MusicFolder as APIMusicFolder
|
||||
|
||||
fun APIMusicFolder.toDomainEntity(): MusicFolder = MusicFolder(this.id.toString(), this.name)
|
||||
fun APIMusicFolder.toDomainEntity(): MusicFolder = MusicFolder(this.id, this.name)
|
||||
|
||||
fun List<APIMusicFolder>.toDomainEntityList(): List<MusicFolder>
|
||||
= this.map { it.toDomainEntity() }
|
||||
|
@ -12,27 +12,27 @@ import org.moire.ultrasonic.api.subsonic.models.MusicFolder
|
||||
class APIMusicFolderConverterTest {
|
||||
@Test
|
||||
fun `Should convert MusicFolder entity`() {
|
||||
val entity = MusicFolder(id = 10, name = "some-name")
|
||||
val entity = MusicFolder(id = "10", name = "some-name")
|
||||
|
||||
val convertedEntity = entity.toDomainEntity()
|
||||
|
||||
convertedEntity.name `should equal to` entity.name
|
||||
convertedEntity.id `should equal to` entity.id.toString()
|
||||
convertedEntity.id `should equal to` entity.id
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Should convert list of MusicFolder entities`() {
|
||||
val entityList = listOf(
|
||||
MusicFolder(id = 3, name = "some-name-3"),
|
||||
MusicFolder(id = 4, name = "some-name-4"))
|
||||
MusicFolder(id = "3", name = "some-name-3"),
|
||||
MusicFolder(id = "4", name = "some-name-4"))
|
||||
|
||||
val convertedList = entityList.toDomainEntityList()
|
||||
|
||||
with(convertedList) {
|
||||
size `should equal to` entityList.size
|
||||
this[0].id `should equal to` entityList[0].id.toString()
|
||||
this[0].id `should equal to` entityList[0].id
|
||||
this[0].name `should equal to` entityList[0].name
|
||||
this[1].id `should equal to` entityList[1].id.toString()
|
||||
this[1].id `should equal to` entityList[1].id
|
||||
this[1].name `should equal to` entityList[1].name
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user