mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2026-01-10 00:49:04 +00:00
Merge branch 'dev' into pr2335
This commit is contained in:
@@ -1,19 +1,19 @@
|
||||
package org.schabi.newpipe.local.history
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.junit.After
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.rules.Timeout
|
||||
import org.schabi.newpipe.database.AppDatabase
|
||||
import org.schabi.newpipe.database.history.model.SearchHistoryEntry
|
||||
import org.schabi.newpipe.testUtil.TestDatabase
|
||||
import org.schabi.newpipe.testUtil.TrampolineSchedulerRule
|
||||
import java.time.LocalDateTime
|
||||
import java.time.OffsetDateTime
|
||||
import java.util.concurrent.TimeUnit
|
||||
import java.time.ZoneOffset
|
||||
|
||||
class HistoryRecordManagerTest {
|
||||
|
||||
@@ -23,9 +23,6 @@ class HistoryRecordManagerTest {
|
||||
@get:Rule
|
||||
val trampolineScheduler = TrampolineSchedulerRule()
|
||||
|
||||
@get:Rule
|
||||
val timeout = Timeout(1, TimeUnit.SECONDS)
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
database = TestDatabase.createReplacingNewPipeDatabase()
|
||||
@@ -45,59 +42,59 @@ class HistoryRecordManagerTest {
|
||||
// that the number of Lists it returns is exactly 1, we can only check if the first List is
|
||||
// correct. Why on earth has a Flowable been used instead of a Single for getAll()?!?
|
||||
val entities = database.searchHistoryDAO().all.blockingFirst()
|
||||
assertEquals(1, entities.size)
|
||||
assertEquals(1, entities[0].id)
|
||||
assertEquals(0, entities[0].serviceId)
|
||||
assertEquals("Hello", entities[0].search)
|
||||
assertThat(entities).hasSize(1)
|
||||
assertThat(entities[0].id).isEqualTo(1)
|
||||
assertThat(entities[0].serviceId).isEqualTo(0)
|
||||
assertThat(entities[0].search).isEqualTo("Hello")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun deleteSearchHistory() {
|
||||
val entries = listOf(
|
||||
SearchHistoryEntry(OffsetDateTime.now(), 0, "A"),
|
||||
SearchHistoryEntry(OffsetDateTime.now(), 2, "A"),
|
||||
SearchHistoryEntry(OffsetDateTime.now(), 1, "B"),
|
||||
SearchHistoryEntry(OffsetDateTime.now(), 0, "B"),
|
||||
SearchHistoryEntry(time.minusSeconds(1), 0, "A"),
|
||||
SearchHistoryEntry(time.minusSeconds(2), 2, "A"),
|
||||
SearchHistoryEntry(time.minusSeconds(3), 1, "B"),
|
||||
SearchHistoryEntry(time.minusSeconds(4), 0, "B"),
|
||||
)
|
||||
|
||||
// make sure all 4 were inserted
|
||||
database.searchHistoryDAO().insertAll(entries)
|
||||
assertEquals(entries.size, database.searchHistoryDAO().all.blockingFirst().size)
|
||||
assertThat(database.searchHistoryDAO().all.blockingFirst()).hasSameSizeAs(entries)
|
||||
|
||||
// try to delete only "A" entries, "B" entries should be untouched
|
||||
manager.deleteSearchHistory("A").test().await().assertValue(2)
|
||||
val entities = database.searchHistoryDAO().all.blockingFirst()
|
||||
assertEquals(2, entities.size)
|
||||
assertTrue(entries[2].hasEqualValues(entities[0]))
|
||||
assertTrue(entries[3].hasEqualValues(entities[1]))
|
||||
assertThat(entities).hasSize(2)
|
||||
assertThat(entities).usingElementComparator { o1, o2 -> if (o1.hasEqualValues(o2)) 0 else 1 }
|
||||
.containsExactly(*entries.subList(2, 4).toTypedArray())
|
||||
|
||||
// assert that nothing happens if we delete a search query that does exist in the db
|
||||
manager.deleteSearchHistory("A").test().await().assertValue(0)
|
||||
val entities2 = database.searchHistoryDAO().all.blockingFirst()
|
||||
assertEquals(2, entities2.size)
|
||||
assertTrue(entries[2].hasEqualValues(entities2[0]))
|
||||
assertTrue(entries[3].hasEqualValues(entities2[1]))
|
||||
assertThat(entities2).hasSize(2)
|
||||
assertThat(entities2).usingElementComparator { o1, o2 -> if (o1.hasEqualValues(o2)) 0 else 1 }
|
||||
.containsExactly(*entries.subList(2, 4).toTypedArray())
|
||||
|
||||
// delete all remaining entries
|
||||
manager.deleteSearchHistory("B").test().await().assertValue(2)
|
||||
assertEquals(0, database.searchHistoryDAO().all.blockingFirst().size)
|
||||
assertThat(database.searchHistoryDAO().all.blockingFirst()).isEmpty()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun deleteCompleteSearchHistory() {
|
||||
val entries = listOf(
|
||||
SearchHistoryEntry(OffsetDateTime.now(), 1, "A"),
|
||||
SearchHistoryEntry(OffsetDateTime.now(), 2, "B"),
|
||||
SearchHistoryEntry(OffsetDateTime.now(), 0, "C"),
|
||||
SearchHistoryEntry(time.minusSeconds(1), 1, "A"),
|
||||
SearchHistoryEntry(time.minusSeconds(2), 2, "B"),
|
||||
SearchHistoryEntry(time.minusSeconds(3), 0, "C"),
|
||||
)
|
||||
|
||||
// make sure all 3 were inserted
|
||||
database.searchHistoryDAO().insertAll(entries)
|
||||
assertEquals(entries.size, database.searchHistoryDAO().all.blockingFirst().size)
|
||||
assertThat(database.searchHistoryDAO().all.blockingFirst()).hasSameSizeAs(entries)
|
||||
|
||||
// should remove everything
|
||||
manager.deleteCompleteSearchHistory().test().await().assertValue(entries.size)
|
||||
assertEquals(0, database.searchHistoryDAO().all.blockingFirst().size)
|
||||
assertThat(database.searchHistoryDAO().all.blockingFirst()).isEmpty()
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -111,11 +108,12 @@ class HistoryRecordManagerTest {
|
||||
|
||||
// make sure correct number of searches is returned and in correct order
|
||||
val searches = manager.getRelatedSearches("", 6, 4).blockingFirst()
|
||||
assertEquals(4, searches.size)
|
||||
assertEquals(RELATED_SEARCHES_ENTRIES[6].search, searches[0]) // A (even if in two places)
|
||||
assertEquals(RELATED_SEARCHES_ENTRIES[4].search, searches[1]) // B
|
||||
assertEquals(RELATED_SEARCHES_ENTRIES[5].search, searches[2]) // AA
|
||||
assertEquals(RELATED_SEARCHES_ENTRIES[2].search, searches[3]) // BA
|
||||
assertThat(searches).containsExactly(
|
||||
RELATED_SEARCHES_ENTRIES[6].search, // A (even if in two places)
|
||||
RELATED_SEARCHES_ENTRIES[4].search, // B
|
||||
RELATED_SEARCHES_ENTRIES[5].search, // AA
|
||||
RELATED_SEARCHES_ENTRIES[2].search, // BA
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -129,25 +127,28 @@ class HistoryRecordManagerTest {
|
||||
|
||||
// make sure correct number of searches is returned and in correct order
|
||||
val searches = manager.getRelatedSearches("A", 3, 5).blockingFirst()
|
||||
assertEquals(3, searches.size)
|
||||
assertEquals(RELATED_SEARCHES_ENTRIES[6].search, searches[0]) // A (even if in two places)
|
||||
assertEquals(RELATED_SEARCHES_ENTRIES[5].search, searches[1]) // AA
|
||||
assertEquals(RELATED_SEARCHES_ENTRIES[1].search, searches[2]) // BA
|
||||
assertThat(searches).containsExactly(
|
||||
RELATED_SEARCHES_ENTRIES[6].search, // A (even if in two places)
|
||||
RELATED_SEARCHES_ENTRIES[5].search, // AA
|
||||
RELATED_SEARCHES_ENTRIES[1].search, // BA
|
||||
)
|
||||
|
||||
// also make sure that the string comparison is case insensitive
|
||||
val searches2 = manager.getRelatedSearches("a", 3, 5).blockingFirst()
|
||||
assertEquals(searches, searches2)
|
||||
assertThat(searches).isEqualTo(searches2)
|
||||
}
|
||||
|
||||
companion object {
|
||||
val RELATED_SEARCHES_ENTRIES = listOf(
|
||||
SearchHistoryEntry(OffsetDateTime.now().minusSeconds(7), 2, "AC"),
|
||||
SearchHistoryEntry(OffsetDateTime.now().minusSeconds(6), 0, "ABC"),
|
||||
SearchHistoryEntry(OffsetDateTime.now().minusSeconds(5), 1, "BA"),
|
||||
SearchHistoryEntry(OffsetDateTime.now().minusSeconds(4), 3, "A"),
|
||||
SearchHistoryEntry(OffsetDateTime.now().minusSeconds(2), 0, "B"),
|
||||
SearchHistoryEntry(OffsetDateTime.now().minusSeconds(3), 2, "AA"),
|
||||
SearchHistoryEntry(OffsetDateTime.now().minusSeconds(1), 1, "A"),
|
||||
private val time = OffsetDateTime.of(LocalDateTime.of(2000, 1, 1, 1, 1), ZoneOffset.UTC)
|
||||
|
||||
private val RELATED_SEARCHES_ENTRIES = listOf(
|
||||
SearchHistoryEntry(time.minusSeconds(7), 2, "AC"),
|
||||
SearchHistoryEntry(time.minusSeconds(6), 0, "ABC"),
|
||||
SearchHistoryEntry(time.minusSeconds(5), 1, "BA"),
|
||||
SearchHistoryEntry(time.minusSeconds(4), 3, "A"),
|
||||
SearchHistoryEntry(time.minusSeconds(2), 0, "B"),
|
||||
SearchHistoryEntry(time.minusSeconds(3), 2, "AA"),
|
||||
SearchHistoryEntry(time.minusSeconds(1), 1, "A"),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,13 +4,11 @@ import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.rules.Timeout
|
||||
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
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class LocalPlaylistManagerTest {
|
||||
|
||||
@@ -20,9 +18,6 @@ class LocalPlaylistManagerTest {
|
||||
@get:Rule
|
||||
val trampolineScheduler = TrampolineSchedulerRule()
|
||||
|
||||
@get:Rule
|
||||
val timeout = Timeout(1, TimeUnit.SECONDS)
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
database = TestDatabase.createReplacingNewPipeDatabase()
|
||||
|
||||
Reference in New Issue
Block a user