Add helper functions to convert api Genre to domain entity.

Signed-off-by: Yahor Berdnikau <egorr.berd@gmail.com>
This commit is contained in:
Yahor Berdnikau 2017-11-11 23:57:55 +01:00
parent 1502c4c9c8
commit d693971baf
3 changed files with 70 additions and 1 deletions

View File

@ -31,7 +31,25 @@ public class Genre implements Serializable
this.index = index;
}
@Override
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Genre genre = (Genre) o;
if (name != null ? !name.equals(genre.name) : genre.name != null) return false;
return index != null ? index.equals(genre.index) : genre.index == null;
}
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + (index != null ? index.hashCode() : 0);
return result;
}
@Override
public String toString()
{
return name;

View File

@ -0,0 +1,13 @@
// Collection of functions to convert api Genre entity to domain entity
@file:JvmName("ApiGenreConverter")
package org.moire.ultrasonic.data
import org.moire.ultrasonic.domain.Genre
import org.moire.ultrasonic.api.subsonic.models.Genre as APIGenre
fun APIGenre.toDomainEntity(): Genre = Genre().apply {
name = this@toDomainEntity.name
index = this@toDomainEntity.name.substring(0, 1)
}
fun List<APIGenre>.toDomainEntityList(): List<Genre> = this.map { it.toDomainEntity() }

View File

@ -0,0 +1,38 @@
@file:Suppress("IllegalIdentifier")
package org.moire.ultrasonic.data
import org.amshove.kluent.`should equal to`
import org.amshove.kluent.`should equal`
import org.junit.Test
import org.moire.ultrasonic.api.subsonic.models.Genre
/**
* Unit test for for converter from api [Genre] to domain entity.
*/
class ApiGenreConverterTest {
@Test
fun `Should convert to domain entity`() {
val entity = Genre(songCount = 220, albumCount = 123, name = "some-name")
val domainEntity = entity.toDomainEntity()
with(domainEntity) {
name `should equal to` entity.name
index `should equal to` "s"
}
}
@Test
fun `Should convert a list entites to domain entities`() {
val entitiesList = listOf(
Genre(41, 2, "some-name"),
Genre(12, 3, "other-name"))
val domainEntitiesList = entitiesList.toDomainEntityList()
domainEntitiesList.size `should equal to` entitiesList.size
domainEntitiesList[0] `should equal` entitiesList[0].toDomainEntity()
domainEntitiesList[1] `should equal` entitiesList[1].toDomainEntity()
}
}