ultrasonic-app-subsonic-and.../core/subsonic-api/src/integrationTest/kotlin/org/moire/ultrasonic/api/subsonic/SubsonicApiGetIndexesTest.kt

85 lines
2.8 KiB
Kotlin

package org.moire.ultrasonic.api.subsonic
import org.amshove.kluent.`should equal`
import org.amshove.kluent.`should not be`
import org.junit.Test
import org.moire.ultrasonic.api.subsonic.models.Artist
import org.moire.ultrasonic.api.subsonic.models.Index
import org.moire.ultrasonic.api.subsonic.models.Indexes
/**
* Integration test for [SubsonicAPIClient] for getIndexes() request.
*/
class SubsonicApiGetIndexesTest : SubsonicAPIClientTest() {
@Test
fun `Should parse get indexes ok response`() {
mockWebServerRule.enqueueResponse("get_indexes_ok.json")
val response = client.api.getIndexes(null, null).execute()
assertResponseSuccessful(response)
response.body()!!.indexes `should not be` null
with(response.body()!!.indexes) {
lastModified `should equal` 1491069027523
ignoredArticles `should equal` "The El La Los Las Le Les"
shortcutList `should equal` listOf(
Artist(id = "889", name = "podcasts"),
Artist(id = "890", name = "audiobooks")
)
indexList `should equal` mutableListOf(
Index(
"A",
listOf(
Artist(
id = "50", name = "Ace Of Base",
starred = parseDate("2017-04-02T20:16:29.815Z")
),
Artist(id = "379", name = "A Perfect Circle")
)
),
Index(
"H",
listOf(
Artist(id = "299", name = "Haddaway"),
Artist(id = "297", name = "Halestorm")
)
)
)
}
}
@Test
fun `Should add music folder id as a query param for getIndexes api call`() {
val musicFolderId = "9"
mockWebServerRule.assertRequestParam(
responseResourceName = "get_indexes_ok.json",
expectedParam = "musicFolderId=$musicFolderId"
) {
client.api.getIndexes(musicFolderId, null).execute()
}
}
@Test
fun `Should add ifModifiedSince as a query param for getIndexes api call`() {
val ifModifiedSince = System.currentTimeMillis()
mockWebServerRule.assertRequestParam(
responseResourceName = "get_indexes_ok.json",
expectedParam = "ifModifiedSince=$ifModifiedSince"
) {
client.api.getIndexes(null, ifModifiedSince).execute()
}
}
@Test
fun `Should parse get indexes error response`() {
val response = checkErrorCallParsed(mockWebServerRule) {
client.api.getIndexes(null, null).execute()
}
response.indexes `should not be` null
response.indexes `should equal` Indexes()
}
}