0.2.56 - Reliable trailer playback
This commit is contained in:
@@ -13,6 +13,8 @@ import com.ponzischeme89.memby.data.model.GatewayServiceStatus
|
||||
import com.ponzischeme89.memby.data.model.GatewayIntro
|
||||
import com.ponzischeme89.memby.data.model.GatewayTrickplay
|
||||
import com.ponzischeme89.memby.data.model.GatewayFeatures
|
||||
import com.ponzischeme89.memby.data.model.GatewayTrailerAvailability
|
||||
import com.ponzischeme89.memby.data.model.GatewayTrailerPlayback
|
||||
import com.ponzischeme89.memby.data.model.RecommendationOnboarding
|
||||
import kotlinx.serialization.json.Json
|
||||
import org.junit.Assert.assertEquals
|
||||
@@ -28,6 +30,21 @@ import org.junit.Test
|
||||
* side, this fails before a TV ever sees it.
|
||||
*/
|
||||
class GatewayPayloadTest {
|
||||
@Test
|
||||
fun `decodes trailer availability and resolved provider candidate`() {
|
||||
val availability = json.decodeFromString<GatewayTrailerAvailability>(
|
||||
"""{"available":true,"providers":["local","apple","youtube"]}""",
|
||||
)
|
||||
val playback = json.decodeFromString<GatewayTrailerPlayback>(
|
||||
"""{"candidateId":"youtube-a1","provider":"youtube","url":"https://media.example/trailer.mp4","title":"Arrival trailer","playMethod":"DirectPlay"}""",
|
||||
)
|
||||
|
||||
assertTrue(availability.available)
|
||||
assertEquals(listOf("local", "apple", "youtube"), availability.providers)
|
||||
assertEquals("youtube-a1", playback.candidateId)
|
||||
assertEquals("Arrival trailer", playback.title)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `partially populated items decode without inventing an identity`() {
|
||||
val item = json.decodeFromString<BaseItem>(
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.ponzischeme89.memby.data
|
||||
|
||||
import com.ponzischeme89.memby.data.model.TrailerPlaybackRequest
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Test
|
||||
|
||||
class TrailerSupportTest {
|
||||
@Test
|
||||
fun rejectedCandidatesAreRecordedOnceInOrder() {
|
||||
val request = TrailerPlaybackRequest("film", "A Film", excludedCandidateIds = listOf("apple"))
|
||||
|
||||
val next = afterTrailerCandidate(afterTrailerCandidate(request, "youtube"), "apple")
|
||||
|
||||
assertEquals(listOf("apple", "youtube"), next.excludedCandidateIds)
|
||||
assertEquals("film", next.subjectId)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun everyTrailerFailureUsesProviderFallback() {
|
||||
assertTrue(shouldFallbackTrailer(isTrailer = true))
|
||||
assertFalse(shouldFallbackTrailer(isTrailer = false))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user