From a8d6612ee6737bccf00221df39e2ce8bb0ee1553 Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Fri, 3 Apr 2020 09:12:14 +0100 Subject: [PATCH] #1865 Add unit tests for NewRecentSearchDao - add remaining tests --- .../core/dao/NewRecentSearchDaoTest.kt | 39 ++++++++++++++----- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/core/src/test/java/org/kiwix/kiwixmobile/core/dao/NewRecentSearchDaoTest.kt b/core/src/test/java/org/kiwix/kiwixmobile/core/dao/NewRecentSearchDaoTest.kt index 6c0d5049b..b66e21c64 100644 --- a/core/src/test/java/org/kiwix/kiwixmobile/core/dao/NewRecentSearchDaoTest.kt +++ b/core/src/test/java/org/kiwix/kiwixmobile/core/dao/NewRecentSearchDaoTest.kt @@ -21,6 +21,7 @@ package org.kiwix.kiwixmobile.core.dao import io.mockk.every import io.mockk.mockk import io.mockk.mockkStatic +import io.mockk.verify import io.objectbox.Box import io.objectbox.query.Query import io.objectbox.query.QueryBuilder @@ -30,12 +31,13 @@ import org.junit.jupiter.api.Nested 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.data.local.entity.RecentSearch import org.kiwix.kiwixmobile.core.search.adapter.SearchListItem.RecentSearchListItem import org.kiwix.sharedFunctions.recentSearchEntity internal class NewRecentSearchDaoTest { - private val box: Box = mockk() + private val box: Box = mockk(relaxed = true) private val newRecentSearchDao = NewRecentSearchDao(box) @Nested @@ -61,17 +63,17 @@ internal class NewRecentSearchDaoTest { fun `recentSearches searches returns distinct entities by searchTerm`() { val queryResult = listOf(recentSearchEntity(), recentSearchEntity()) expectFromRecentSearches(queryResult, "") - newRecentSearchDao.recentSearches(null).test() + newRecentSearchDao.recentSearches("").test() .assertValues(queryResult.take(1).map { RecentSearchListItem(it.searchTerm) }) } @Test fun `recentSearches searches returns a limitedNumber of entities`() { val searchResults: List = - (0..101).map { recentSearchEntity(searchTerm = "$it") } + (0..200).map { recentSearchEntity(searchTerm = "$it") } expectFromRecentSearches(searchResults, "") - newRecentSearchDao.recentSearches(null).test() - .assertValues(searchResults.take(100).map { RecentSearchListItem(it.searchTerm) }) + newRecentSearchDao.recentSearches("").test() + .assertValue { it.size == 100 } } private fun expectFromRecentSearches(queryResult: List, zimId: String) { @@ -87,18 +89,37 @@ internal class NewRecentSearchDaoTest { } @Test - fun saveSearch() { + fun `saveSearch puts RecentSearchEntity into box`() { + newRecentSearchDao.saveSearch("title", "id") + verify { box.put(recentSearchEntity(searchTerm = "title", zimId = "id")) } } @Test - fun deleteSearchString() { + fun `deleteSearchString removes query results for the term`() { + val searchTerm = "searchTerm" + val queryBuilder: QueryBuilder = mockk() + every { box.query() } returns queryBuilder + every { queryBuilder.equal(RecentSearchEntity_.searchTerm, searchTerm) } returns queryBuilder + val query: Query = mockk(relaxed = true) + every { queryBuilder.build() } returns query + newRecentSearchDao.deleteSearchString(searchTerm) + verify { query.remove() } } @Test - fun deleteSearchHistory() { + fun `deleteSearchHistory deletes everything`() { + newRecentSearchDao.deleteSearchHistory() + verify { box.removeAll() } } @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))) } } }