diff --git a/subsonic-api/src/integrationTest/kotlin/org/moire/ultrasonic/api/subsonic/SubsonicApiUpdateShareTest.kt b/subsonic-api/src/integrationTest/kotlin/org/moire/ultrasonic/api/subsonic/SubsonicApiUpdateShareTest.kt new file mode 100644 index 00000000..bd2f46cd --- /dev/null +++ b/subsonic-api/src/integrationTest/kotlin/org/moire/ultrasonic/api/subsonic/SubsonicApiUpdateShareTest.kt @@ -0,0 +1,51 @@ +package org.moire.ultrasonic.api.subsonic + +import org.junit.Test + +/** + * Integration test for [SubsonicAPIDefinition.updateShare] call. + */ +class SubsonicApiUpdateShareTest : SubsonicAPIClientTest() { + @Test + fun `Should handle error response`() { + checkErrorCallParsed(mockWebServerRule) { + client.api.updateShare(11).execute() + } + } + + @Test + fun `Should handle ok response`() { + mockWebServerRule.enqueueResponse("ping_ok.json") + + val response = client.api.updateShare(12).execute() + + assertResponseSuccessful(response) + } + + @Test + fun `Should pass id in request params`() { + val id = 4432L + + mockWebServerRule.assertRequestParam(expectedParam = "id=$id") { + client.api.updateShare(id = id).execute() + } + } + + @Test + fun `Should pass description in request params`() { + val description = "some-description" + + mockWebServerRule.assertRequestParam(expectedParam = "description=$description") { + client.api.updateShare(123, description = description).execute() + } + } + + @Test + fun `Should pass expires in request params`() { + val expires = 223123123L + + mockWebServerRule.assertRequestParam(expectedParam = "expires=$expires") { + client.api.updateShare(12, expires = expires).execute() + } + } +} diff --git a/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/SubsonicAPIDefinition.kt b/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/SubsonicAPIDefinition.kt index 26bb0b7d..784562fc 100644 --- a/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/SubsonicAPIDefinition.kt +++ b/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/SubsonicAPIDefinition.kt @@ -207,6 +207,11 @@ interface SubsonicAPIDefinition { @GET("deleteShare.view") fun deleteShare(@Query("id") id: Long): Call + @GET("updateShare.view") + fun updateShare(@Query("id") id: Long, + @Query("description") description: String? = null, + @Query("expires") expires: Long? = null): Call + @GET("getGenres.view") fun getGenres(): Call