#1865 Add unit tests for NewRecentSearchDao - add remaining tests

This commit is contained in:
Sean Mac Gillicuddy 2020-04-03 09:12:14 +01:00
parent c062670efa
commit a8d6612ee6

View File

@ -21,6 +21,7 @@ package org.kiwix.kiwixmobile.core.dao
import io.mockk.every import io.mockk.every
import io.mockk.mockk import io.mockk.mockk
import io.mockk.mockkStatic import io.mockk.mockkStatic
import io.mockk.verify
import io.objectbox.Box import io.objectbox.Box
import io.objectbox.query.Query import io.objectbox.query.Query
import io.objectbox.query.QueryBuilder import io.objectbox.query.QueryBuilder
@ -30,12 +31,13 @@ import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import org.kiwix.kiwixmobile.core.dao.entities.RecentSearchEntity import org.kiwix.kiwixmobile.core.dao.entities.RecentSearchEntity
import org.kiwix.kiwixmobile.core.dao.entities.RecentSearchEntity_ import org.kiwix.kiwixmobile.core.dao.entities.RecentSearchEntity_
import org.kiwix.kiwixmobile.core.data.local.entity.RecentSearch
import org.kiwix.kiwixmobile.core.search.adapter.SearchListItem.RecentSearchListItem import org.kiwix.kiwixmobile.core.search.adapter.SearchListItem.RecentSearchListItem
import org.kiwix.sharedFunctions.recentSearchEntity import org.kiwix.sharedFunctions.recentSearchEntity
internal class NewRecentSearchDaoTest { internal class NewRecentSearchDaoTest {
private val box: Box<RecentSearchEntity> = mockk() private val box: Box<RecentSearchEntity> = mockk(relaxed = true)
private val newRecentSearchDao = NewRecentSearchDao(box) private val newRecentSearchDao = NewRecentSearchDao(box)
@Nested @Nested
@ -61,17 +63,17 @@ internal class NewRecentSearchDaoTest {
fun `recentSearches searches returns distinct entities by searchTerm`() { fun `recentSearches searches returns distinct entities by searchTerm`() {
val queryResult = listOf<RecentSearchEntity>(recentSearchEntity(), recentSearchEntity()) val queryResult = listOf<RecentSearchEntity>(recentSearchEntity(), recentSearchEntity())
expectFromRecentSearches(queryResult, "") expectFromRecentSearches(queryResult, "")
newRecentSearchDao.recentSearches(null).test() newRecentSearchDao.recentSearches("").test()
.assertValues(queryResult.take(1).map { RecentSearchListItem(it.searchTerm) }) .assertValues(queryResult.take(1).map { RecentSearchListItem(it.searchTerm) })
} }
@Test @Test
fun `recentSearches searches returns a limitedNumber of entities`() { fun `recentSearches searches returns a limitedNumber of entities`() {
val searchResults: List<RecentSearchEntity> = val searchResults: List<RecentSearchEntity> =
(0..101).map { recentSearchEntity(searchTerm = "$it") } (0..200).map { recentSearchEntity(searchTerm = "$it") }
expectFromRecentSearches(searchResults, "") expectFromRecentSearches(searchResults, "")
newRecentSearchDao.recentSearches(null).test() newRecentSearchDao.recentSearches("").test()
.assertValues(searchResults.take(100).map { RecentSearchListItem(it.searchTerm) }) .assertValue { it.size == 100 }
} }
private fun expectFromRecentSearches(queryResult: List<RecentSearchEntity>, zimId: String) { private fun expectFromRecentSearches(queryResult: List<RecentSearchEntity>, zimId: String) {
@ -87,18 +89,37 @@ internal class NewRecentSearchDaoTest {
} }
@Test @Test
fun saveSearch() { fun `saveSearch puts RecentSearchEntity into box`() {
newRecentSearchDao.saveSearch("title", "id")
verify { box.put(recentSearchEntity(searchTerm = "title", zimId = "id")) }
} }
@Test @Test
fun deleteSearchString() { fun `deleteSearchString removes query results for the term`() {
val searchTerm = "searchTerm"
val queryBuilder: QueryBuilder<RecentSearchEntity> = mockk()
every { box.query() } returns queryBuilder
every { queryBuilder.equal(RecentSearchEntity_.searchTerm, searchTerm) } returns queryBuilder
val query: Query<RecentSearchEntity> = mockk(relaxed = true)
every { queryBuilder.build() } returns query
newRecentSearchDao.deleteSearchString(searchTerm)
verify { query.remove() }
} }
@Test @Test
fun deleteSearchHistory() { fun `deleteSearchHistory deletes everything`() {
newRecentSearchDao.deleteSearchHistory()
verify { box.removeAll() }
} }
@Test @Test
fun migrationInsert() { fun `migrationInsert adds old items to box`() {
val id = "zimId"
val term = "searchString"
val recentSearch: RecentSearch = mockk()
every { recentSearch.searchString } returns term
every { recentSearch.zimID } returns id
newRecentSearchDao.migrationInsert(mutableListOf(recentSearch))
verify { box.put(listOf(recentSearchEntity(searchTerm = term, zimId = id))) }
} }
} }