Add converting SearchThreeResult to domain entity.

Signed-off-by: Yahor Berdnikau <egorr.berd@gmail.com>
This commit is contained in:
Yahor Berdnikau 2017-08-27 12:51:50 +02:00
parent d97590b346
commit 0f7a3cdf30
2 changed files with 33 additions and 2 deletions

View File

@ -5,6 +5,7 @@ package org.moire.ultrasonic.data
import org.moire.ultrasonic.api.subsonic.models.Album
import org.moire.ultrasonic.api.subsonic.models.Index
import org.moire.ultrasonic.api.subsonic.models.MusicDirectoryChild
import org.moire.ultrasonic.api.subsonic.models.SearchThreeResult
import org.moire.ultrasonic.api.subsonic.models.SearchTwoResult
import org.moire.ultrasonic.domain.Artist
import org.moire.ultrasonic.domain.Indexes
@ -41,6 +42,7 @@ fun APIArtist.toMusicDirectoryDomainEntity(): MusicDirectory = MusicDirectory().
fun Album.toDomainEntity(): MusicDirectory.Entry = MusicDirectory.Entry().apply {
id = this@toDomainEntity.id.toString()
setIsDirectory(true)
title = this@toDomainEntity.name
coverArt = this@toDomainEntity.coverArt
artist = this@toDomainEntity.artist
@ -92,5 +94,12 @@ fun APIMusicDirectory.toDomainEntity(): MusicDirectory = MusicDirectory().apply
fun APISearchResult.toDomainEntity(): SearchResult = SearchResult(emptyList(), emptyList(),
this.matchList.map { it.toDomainEntity() })
fun SearchTwoResult.toDomainEntity(): SearchResult = SearchResult(this.artistList.map { it.toDomainEntity() },
this.albumList.map { it.toDomainEntity() }, this.songList.map { it.toDomainEntity() })
fun SearchTwoResult.toDomainEntity(): SearchResult = SearchResult(
this.artistList.map { it.toDomainEntity() },
this.albumList.map { it.toDomainEntity() },
this.songList.map { it.toDomainEntity() })
fun SearchThreeResult.toDomainEntity(): SearchResult = SearchResult(
this.artistList.map { it.toDomainEntity() },
this.albumList.map { it.toDomainEntity() },
this.songList.map { it.toDomainEntity() })

View File

@ -14,6 +14,7 @@ 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 org.moire.ultrasonic.api.subsonic.models.SearchThreeResult
import org.moire.ultrasonic.api.subsonic.models.SearchTwoResult
import java.util.Calendar
@ -168,6 +169,7 @@ class APIConverterTest {
with(convertedEntity) {
id `should equal to` entity.id.toString()
title `should equal to` entity.name
isDirectory `should equal to` true
coverArt `should equal to` entity.coverArt
artist `should equal to` entity.artist
artistId `should equal to` entity.artistId.toString()
@ -235,6 +237,26 @@ class APIConverterTest {
}
}
@Test
fun `Should convert SearchThreeResult to domain entity`() {
val entity = SearchThreeResult(
artistList = listOf(Artist(id = 612, name = "artist1")),
albumList = listOf(Album(id = 221, name = "album1")),
songList = listOf(MusicDirectoryChild(id = 7123, title = "song1"))
)
val convertedEntity = entity.toDomainEntity()
with(convertedEntity) {
artists.size `should equal to` entity.artistList.size
artists[0] `should equal` entity.artistList[0].toDomainEntity()
albums.size `should equal to` entity.albumList.size
albums[0] `should equal` entity.albumList[0].toDomainEntity()
songs.size `should equal to` entity.songList.size
songs[0] `should equal` entity.songList[0].toDomainEntity()
}
}
private fun createMusicFolder(id: Long = 0, name: String = ""): MusicFolder =
MusicFolder(id, name)