89 lines
3.3 KiB
Kotlin
89 lines
3.3 KiB
Kotlin
package org.moire.ultrasonic.api.subsonic
|
|
|
|
import org.amshove.kluent.`should be equal to`
|
|
import org.amshove.kluent.`should equal`
|
|
import org.junit.Test
|
|
import org.moire.ultrasonic.api.subsonic.models.MusicDirectoryChild
|
|
|
|
/**
|
|
* Integration test for [SubsonicAPIDefinition.getSongsByGenre] call.
|
|
*/
|
|
class SubsonicApiGetSongsByGenreTest : SubsonicAPIClientTest() {
|
|
@Test
|
|
fun `Should handle error response`() {
|
|
val response = checkErrorCallParsed(mockWebServerRule) {
|
|
client.api.getSongsByGenre("Metal").execute()
|
|
}
|
|
|
|
response.songsList `should equal` emptyList()
|
|
}
|
|
|
|
@Test
|
|
fun `Should handle ok response`() {
|
|
mockWebServerRule.enqueueResponse("get_songs_by_genre_ok.json")
|
|
|
|
val response = client.api.getSongsByGenre("Trance").execute()
|
|
|
|
assertResponseSuccessful(response)
|
|
response.body()!!.songsList.size `should be equal to` 2
|
|
with(response.body()!!.songsList) {
|
|
this[0] `should equal` MusicDirectoryChild(
|
|
id = "575", parent = "576", isDir = false,
|
|
title = "Time Machine (Vadim Zhukov Remix)", album = "668",
|
|
artist = "Tasadi", year = 2008, genre = "Trance", size = 22467672,
|
|
contentType = "audio/mpeg", suffix = "mp3", duration = 561, bitRate = 320,
|
|
path = "Tasadi/668/00 Time Machine (Vadim Zhukov Remix).mp3",
|
|
isVideo = false, playCount = 0, created = parseDate("2016-10-23T21:58:29.000Z"),
|
|
albumId = "0", artistId = "0", type = "music"
|
|
)
|
|
this[1] `should equal` MusicDirectoryChild(
|
|
id = "621", parent = "622", isDir = false,
|
|
title = "My Heart (Vadim Zhukov Remix)", album = "668",
|
|
artist = "DJ Polyakov PPK Feat Kate Cameron", year = 2009, genre = "Trance",
|
|
size = 26805932, contentType = "audio/mpeg", suffix = "mp3", duration = 670,
|
|
bitRate = 320,
|
|
path = "DJ Polyakov PPK Feat Kate Cameron/668/00 My Heart (Vadim Zhukov " +
|
|
"Remix).mp3",
|
|
isVideo = false, playCount = 2,
|
|
created = parseDate("2016-10-23T21:58:29.000Z"),
|
|
albumId = "5", artistId = "4", type = "music"
|
|
)
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun `Should pass genre in request param`() {
|
|
val genre = "Rock"
|
|
mockWebServerRule.assertRequestParam(expectedParam = "genre=$genre") {
|
|
client.api.getSongsByGenre(genre = genre).execute()
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun `Should pass count in request param`() {
|
|
val count = 494
|
|
|
|
mockWebServerRule.assertRequestParam(expectedParam = "count=$count") {
|
|
client.api.getSongsByGenre("Trance", count = count).execute()
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun `Should pass offset in request param`() {
|
|
val offset = 31
|
|
|
|
mockWebServerRule.assertRequestParam(expectedParam = "offset=$offset") {
|
|
client.api.getSongsByGenre("Trance", offset = offset).execute()
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun `Should pass music folder id in request param`() {
|
|
val musicFolderId = "1010"
|
|
|
|
mockWebServerRule.assertRequestParam(expectedParam = "musicFolderId=$musicFolderId") {
|
|
client.api.getSongsByGenre("Trance", musicFolderId = musicFolderId).execute()
|
|
}
|
|
}
|
|
}
|