mirror of https://github.com/TeamNewPipe/NewPipe
78 lines
2.6 KiB
Kotlin
78 lines
2.6 KiB
Kotlin
package org.schabi.newpipe.local.playlist
|
|
|
|
import org.junit.After
|
|
import org.junit.Before
|
|
import org.junit.Rule
|
|
import org.junit.Test
|
|
import org.schabi.newpipe.database.AppDatabase
|
|
import org.schabi.newpipe.database.stream.model.StreamEntity
|
|
import org.schabi.newpipe.extractor.stream.StreamType
|
|
import org.schabi.newpipe.testUtil.TestDatabase
|
|
import org.schabi.newpipe.testUtil.TrampolineSchedulerRule
|
|
|
|
class LocalPlaylistManagerTest {
|
|
|
|
private lateinit var manager: LocalPlaylistManager
|
|
private lateinit var database: AppDatabase
|
|
|
|
@get:Rule
|
|
val trampolineScheduler = TrampolineSchedulerRule()
|
|
|
|
@Before
|
|
fun setup() {
|
|
database = TestDatabase.createReplacingNewPipeDatabase()
|
|
manager = LocalPlaylistManager(database)
|
|
}
|
|
|
|
@After
|
|
fun cleanUp() {
|
|
database.close()
|
|
}
|
|
|
|
@Test
|
|
fun createPlaylist() {
|
|
val NEWPIPE_URL = "https://newpipe.net/"
|
|
val stream = StreamEntity(
|
|
serviceId = 1, url = NEWPIPE_URL, title = "title",
|
|
streamType = StreamType.VIDEO_STREAM, duration = 1, uploader = "uploader",
|
|
uploaderUrl = NEWPIPE_URL
|
|
)
|
|
|
|
val result = manager.createPlaylist("name", listOf(stream))
|
|
|
|
// This should not behave like this.
|
|
// Currently list of all stream ids is returned instead of playlist id
|
|
result.test().await().assertValue(listOf(1L))
|
|
}
|
|
|
|
@Test
|
|
fun createPlaylist_emptyPlaylistMustReturnEmpty() {
|
|
val result = manager.createPlaylist("name", emptyList())
|
|
|
|
// This should not behave like this.
|
|
// It should throw an error because currently the result is null
|
|
result.test().await().assertComplete()
|
|
manager.playlists.test().awaitCount(1).assertValue(emptyList())
|
|
}
|
|
|
|
@Test()
|
|
fun createPlaylist_nonExistentStreamsAreUpserted() {
|
|
val stream = StreamEntity(
|
|
serviceId = 1, url = "https://newpipe.net/", title = "title",
|
|
streamType = StreamType.VIDEO_STREAM, duration = 1, uploader = "uploader",
|
|
uploaderUrl = "https://newpipe.net/"
|
|
)
|
|
database.streamDAO().insert(stream)
|
|
val upserted = StreamEntity(
|
|
serviceId = 1, url = "https://newpipe.net/2", title = "title2",
|
|
streamType = StreamType.VIDEO_STREAM, duration = 1, uploader = "uploader",
|
|
uploaderUrl = "https://newpipe.net/"
|
|
)
|
|
|
|
val result = manager.createPlaylist("name", listOf(stream, upserted))
|
|
|
|
result.test().await().assertComplete()
|
|
database.streamDAO().all.test().awaitCount(1).assertValue(listOf(stream, upserted))
|
|
}
|
|
}
|