feat: разделение контента — на телефон только аудио, на очки только видео
Телефон качает audio-N.ogg (audioKeys вместо fileKeys, стадия «звук»), очки получают DownloadFiles только с video.mkv (buildGlassesFileSpecs). Watch проверяет готовность обоих: телефон — audioReady(), очки — как было; отказ с подсказкой «Скачать на телефон/очки». Тесты: lib-core 19, phone 36.
This commit is contained in:
@@ -55,7 +55,7 @@ class DownloadManagerTest {
|
||||
|
||||
assertTrue(result.downloaded.isEmpty())
|
||||
assertEquals(
|
||||
DownloadProgress("i2", DownloadPhase.DOWNLOADING, 50, "видео"),
|
||||
DownloadProgress("i2", DownloadPhase.DOWNLOADING, 50, "звук"),
|
||||
result.progress["i2"],
|
||||
)
|
||||
}
|
||||
@@ -68,7 +68,7 @@ class DownloadManagerTest {
|
||||
|
||||
val result = scanDownloads(base, emptyMap())
|
||||
|
||||
assertEquals(DownloadProgress("i3", DownloadPhase.DOWNLOADING, 0, "видео"), result.progress["i3"])
|
||||
assertEquals(DownloadProgress("i3", DownloadPhase.DOWNLOADING, 0, "звук"), result.progress["i3"])
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -131,6 +131,27 @@ class DownloadManagerTest {
|
||||
assertEquals(listOf("video", "audio-0", "audio-1"), fileKeys(files))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun audioKeysFromMirrorCoversOnlyAudios() {
|
||||
val files = MirrorFiles(
|
||||
video = MirrorVideo(key = "v", url = "http://v"),
|
||||
audios = listOf(
|
||||
MirrorAudio(index = 0, key = "a0", url = "http://a0"),
|
||||
MirrorAudio(index = 1, key = "a1", url = "http://a1"),
|
||||
),
|
||||
)
|
||||
assertEquals(listOf("audio-0", "audio-1"), audioKeys(files))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun audioKeysEmptyWithoutAudios() {
|
||||
val files = MirrorFiles(
|
||||
video = MirrorVideo(key = "v", url = "http://v"),
|
||||
audios = emptyList(),
|
||||
)
|
||||
assertTrue(audioKeys(files).isEmpty())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun isFullyOnDiskRequiresAllFilesNoParts() {
|
||||
val base = newBaseDir()
|
||||
|
||||
@@ -38,11 +38,9 @@ class GlassesFilesTest {
|
||||
|
||||
assertEquals("movie-1", msg.itemId)
|
||||
assertEquals("Interstellar", msg.title)
|
||||
assertEquals(3, msg.files.size)
|
||||
assertEquals(1, msg.files.size)
|
||||
assertEquals("video.mkv", msg.files[0].name)
|
||||
assertEquals("https://s3/mirror/video.mkv?sig", msg.files[0].url)
|
||||
assertEquals("audio-0.ogg", msg.files[1].name)
|
||||
assertEquals("audio-1.ogg", msg.files[2].name)
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -56,8 +54,6 @@ class GlassesFilesTest {
|
||||
)
|
||||
|
||||
assertEquals(1_863_946_240L, msg.files[0].sizeBytes)
|
||||
assertEquals(68_157_440L, msg.files[1].sizeBytes)
|
||||
assertEquals(0L, msg.files[2].sizeBytes)
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -67,8 +63,9 @@ class GlassesFilesTest {
|
||||
sizes = emptyMap(),
|
||||
presign = { "signed-$it" },
|
||||
)
|
||||
assertEquals(3, specs.size)
|
||||
assertEquals(1, specs.size)
|
||||
assertTrue(specs.all { it.url.startsWith("signed-") })
|
||||
assertEquals("video.mkv", specs.single().name)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user