diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/data/SubsonicAPIConverter.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/data/SubsonicAPIConverter.kt index 3b4462ce..1a30167c 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/data/SubsonicAPIConverter.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/data/SubsonicAPIConverter.kt @@ -9,10 +9,12 @@ import org.moire.ultrasonic.domain.Artist import org.moire.ultrasonic.domain.Indexes import org.moire.ultrasonic.domain.MusicDirectory import org.moire.ultrasonic.domain.MusicFolder +import org.moire.ultrasonic.domain.SearchResult import org.moire.ultrasonic.api.subsonic.models.Artist as APIArtist import org.moire.ultrasonic.api.subsonic.models.Indexes as APIIndexes import org.moire.ultrasonic.api.subsonic.models.MusicDirectory as APIMusicDirectory import org.moire.ultrasonic.api.subsonic.models.MusicFolder as APIMusicFolder +import org.moire.ultrasonic.api.subsonic.models.SearchResult as APISearchResult fun APIMusicFolder.toDomainEntity(): MusicFolder = MusicFolder(this.id.toString(), this.name) @@ -85,3 +87,6 @@ fun APIMusicDirectory.toDomainEntity(): MusicDirectory = MusicDirectory().apply name = this@toDomainEntity.name addAll(this@toDomainEntity.childList.map { it.toDomainEntity() }) } + +fun APISearchResult.toDomainEntity(): SearchResult = SearchResult(emptyList(), emptyList(), + this.matchList.map { it.toDomainEntity() }) diff --git a/ultrasonic/src/test/kotlin/org/moire/ultrasonic/data/APIConverterTest.kt b/ultrasonic/src/test/kotlin/org/moire/ultrasonic/data/APIConverterTest.kt index 029f061a..5d9542d5 100644 --- a/ultrasonic/src/test/kotlin/org/moire/ultrasonic/data/APIConverterTest.kt +++ b/ultrasonic/src/test/kotlin/org/moire/ultrasonic/data/APIConverterTest.kt @@ -4,6 +4,7 @@ package org.moire.ultrasonic.data import org.amshove.kluent.`should equal to` import org.amshove.kluent.`should equal` +import org.amshove.kluent.`should not equal` import org.junit.Test import org.moire.ultrasonic.api.subsonic.models.Album import org.moire.ultrasonic.api.subsonic.models.Artist @@ -12,6 +13,7 @@ import org.moire.ultrasonic.api.subsonic.models.Indexes import org.moire.ultrasonic.api.subsonic.models.MusicDirectory import org.moire.ultrasonic.api.subsonic.models.MusicDirectoryChild import org.moire.ultrasonic.api.subsonic.models.MusicFolder +import org.moire.ultrasonic.api.subsonic.models.SearchResult import java.util.Calendar /** @@ -192,6 +194,24 @@ class APIConverterTest { } } + @Test + fun `Should convert SearchResult to domain entity`() { + val entity = SearchResult(offset = 10, totalHits = 3, matchList = listOf( + MusicDirectoryChild(id = 101L) + )) + + val convertedEntity = entity.toDomainEntity() + + with(convertedEntity) { + albums `should not equal` null + albums.size `should equal to` 0 + artists `should not equal` null + artists.size `should equal to` 0 + songs.size `should equal to` entity.matchList.size + songs[0] `should equal` entity.matchList[0].toDomainEntity() + } + } + private fun createMusicFolder(id: Long = 0, name: String = ""): MusicFolder = MusicFolder(id, name)