mirror of
https://github.com/austinried/subtracks.git
synced 2026-11-10 23:21:59 +01:00
home: swap to downloaded sections in offline mode
This commit is contained in:
@@ -9,7 +9,9 @@ import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import com.subtracks.data.model.Album
|
||||
import com.subtracks.data.model.Artist
|
||||
import com.subtracks.data.model.DownloadStatus
|
||||
import com.subtracks.data.model.Song
|
||||
import com.subtracks.data.model.SongDownload
|
||||
import com.subtracks.data.model.Source
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.test.runTest
|
||||
@@ -163,6 +165,30 @@ class LibraryHomeDaoTest {
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun downloadedSongsOnlyIncludeCompletedDownloadsWithCoverArt() =
|
||||
runTest {
|
||||
val sourceId = source()
|
||||
val dao = db.libraryDao()
|
||||
dao.upsertAlbums(listOf(album(sourceId, "al1", "Album", coverArt = "cover-1")))
|
||||
dao.upsertSongs(
|
||||
listOf(
|
||||
song(sourceId, "s1", "One"),
|
||||
song(sourceId, "s2", "Two"),
|
||||
song(sourceId, "s3", "Three"),
|
||||
),
|
||||
)
|
||||
val downloads = db.downloadDao()
|
||||
downloads.upsert(SongDownload(sourceId, "s1", DownloadStatus.Completed))
|
||||
downloads.upsert(SongDownload(sourceId, "s2", DownloadStatus.Queued))
|
||||
downloads.upsert(SongDownload(sourceId, "s3", DownloadStatus.Completed))
|
||||
|
||||
val downloaded = dao.downloadedSongs(sourceId).first()
|
||||
assertEquals(listOf("s1", "s3"), downloaded.map { it.song.id })
|
||||
assertEquals("cover-1", downloaded.first().coverArt)
|
||||
assertEquals(listOf("s1", "s3"), dao.downloadedSongIds(sourceId))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun songsByGenreMatchesTheGenreRelationsWithFallback() =
|
||||
runTest {
|
||||
|
||||
@@ -18,6 +18,7 @@ import com.github.takahirom.roborazzi.captureRoboImage
|
||||
import com.subtracks.data.model.Album
|
||||
import com.subtracks.data.model.AlbumSongItem
|
||||
import com.subtracks.data.model.Artist
|
||||
import com.subtracks.data.model.Playlist
|
||||
import com.subtracks.data.model.Song
|
||||
import com.subtracks.ui.theme.SubtracksTheme
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
@@ -143,6 +144,28 @@ class HomeScreenshotTest {
|
||||
played = played,
|
||||
)
|
||||
|
||||
@Test
|
||||
fun homeOffline() {
|
||||
composeRule.setContent {
|
||||
SubtracksTheme {
|
||||
Surface(modifier = Modifier.fillMaxSize()) {
|
||||
OfflineHomeScreen(
|
||||
albums = remember { flowOf(PagingData.from(listOf(listAlbum("Offline Album", 0)))) }.collectAsLazyPagingItems(),
|
||||
artists = remember { flowOf(PagingData.from(listOf(listArtist("Offline Artist", 0)))) }.collectAsLazyPagingItems(),
|
||||
playlists = remember { flowOf(PagingData.empty<Playlist>()) }.collectAsLazyPagingItems(),
|
||||
songs = songs(),
|
||||
coverArt = { _, _ -> null },
|
||||
playingSongId = null,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
composeRule.waitUntil(timeoutMillis = 5_000) {
|
||||
composeRule.onAllNodesWithText("Downloaded albums").fetchSemanticsNodes().isNotEmpty()
|
||||
}
|
||||
composeRule.onRoot().captureRoboImage("src/test/screenshots/home_offline.png")
|
||||
}
|
||||
|
||||
private fun listAlbum(
|
||||
name: String,
|
||||
created: Long,
|
||||
|
||||
Reference in New Issue
Block a user