Skip to content

Commit

Permalink
Add tests for history items
Browse files Browse the repository at this point in the history
  • Loading branch information
CrisBarreiro committed Apr 25, 2024
1 parent 869fcf6 commit 2f5c590
Showing 1 changed file with 147 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,18 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import com.duckduckgo.app.autocomplete.api.AutoComplete.AutoCompleteResult
import com.duckduckgo.app.autocomplete.api.AutoComplete.AutoCompleteSuggestion
import com.duckduckgo.app.autocomplete.api.AutoComplete.AutoCompleteSuggestion.AutoCompleteBookmarkSuggestion
import com.duckduckgo.app.autocomplete.api.AutoComplete.AutoCompleteSuggestion.AutoCompleteHistorySuggestion
import com.duckduckgo.app.autocomplete.api.AutoComplete.AutoCompleteSuggestion.AutoCompleteSearchSuggestion
import com.duckduckgo.common.utils.formatters.time.DatabaseDateFormatter
import com.duckduckgo.history.api.HistoryEntry.VisitedPage
import com.duckduckgo.history.api.NavigationHistory
import com.duckduckgo.savedsites.api.SavedSitesRepository
import com.duckduckgo.savedsites.api.models.SavedSite.Bookmark
import com.duckduckgo.savedsites.api.models.SavedSite.Favorite
import com.duckduckgo.savedsites.api.models.SavedSitesNames
import io.reactivex.Observable
import io.reactivex.Single
import java.time.LocalDateTime
import java.util.UUID
import org.junit.Assert.*
import org.junit.Before
Expand Down Expand Up @@ -115,7 +118,6 @@ class AutoCompleteApiTest {
Single.just(
listOf(
favorite(title = "title", url = "https://example.com"),
favorite(title = "title", url = "https://foo.com"),
),
),
)
Expand All @@ -134,7 +136,6 @@ class AutoCompleteApiTest {
assertEquals(
listOf(
AutoCompleteBookmarkSuggestion(phrase = "example.com", "title", "https://example.com", isAllowedInTopHits = true, isFavorite = true),
AutoCompleteBookmarkSuggestion(phrase = "foo.com", "title", "https://foo.com", isAllowedInTopHits = true, isFavorite = true),
AutoCompleteSearchSuggestion("foo", false),
AutoCompleteBookmarkSuggestion(phrase = "bar.com", "title", "https://bar.com", isAllowedInTopHits = false, isFavorite = false),
AutoCompleteBookmarkSuggestion(phrase = "baz.com", "title", "https://baz.com", isAllowedInTopHits = false, isFavorite = false),
Expand All @@ -143,6 +144,150 @@ class AutoCompleteApiTest {
)
}

@Test
fun whenAutoCompleteReturnsMultipleBookmarkAndFavoriteHitsWithBookmarksAlsoInHistoryThenBookmarksShowBeforeSearchSuggestions() {
whenever(mockAutoCompleteService.autoComplete("title")).thenReturn(
Observable.just(
listOf(
AutoCompleteServiceRawResult("foo", isNav = false),
),
),
)
whenever(mockNavigationHistory.getHistorySingle()).thenReturn(
Single.just(
listOf(
VisitedPage(
title = "title",
url = "https://bar.com".toUri(),
visits = listOf(LocalDateTime.now(), LocalDateTime.now(), LocalDateTime.now()),
),
),
),
)
whenever(mockSavedSitesRepository.getFavoritesObservable()).thenReturn(
Single.just(
listOf(
favorite(title = "title", url = "https://example.com"),
),
),
)
whenever(mockSavedSitesRepository.getBookmarksObservable()).thenReturn(
Single.just(
listOf(
bookmark(title = "title", url = "https://bar.com"),
bookmark(title = "title", url = "https://baz.com"),
),
),
)

val result = testee.autoComplete("title").test()
val value = result.values()[0] as AutoCompleteResult

assertEquals(
listOf(
AutoCompleteBookmarkSuggestion(phrase = "example.com", "title", "https://example.com", isAllowedInTopHits = true, isFavorite = true),
AutoCompleteBookmarkSuggestion(phrase = "bar.com", "title", "https://bar.com", isAllowedInTopHits = true, isFavorite = false),
AutoCompleteSearchSuggestion("foo", false),
AutoCompleteBookmarkSuggestion(phrase = "baz.com", "title", "https://baz.com", isAllowedInTopHits = false, isFavorite = false),
),
value.suggestions,
)
}

@Test
fun whenAutoCompleteReturnsHistoryItemsWithLessThan3VisitsButRootPageTheyShowBeforeSuggestions() {
whenever(mockAutoCompleteService.autoComplete("title")).thenReturn(
Observable.just(
listOf(
AutoCompleteServiceRawResult("foo", isNav = false),
),
),
)
whenever(mockNavigationHistory.getHistorySingle()).thenReturn(
Single.just(
listOf(
VisitedPage(title = "title", url = "https://bar.com".toUri(), visits = listOf(LocalDateTime.now(), LocalDateTime.now())),
VisitedPage(title = "title", url = "https://foo.com".toUri(), visits = listOf(LocalDateTime.now(), LocalDateTime.now())),
),
),
)
whenever(mockSavedSitesRepository.getFavoritesObservable()).thenReturn(
Single.just(
listOf(
favorite(title = "title", url = "https://example.com"),
),
),
)
whenever(mockSavedSitesRepository.getBookmarksObservable()).thenReturn(
Single.just(
listOf(
bookmark(title = "title", url = "https://baz.com"),
),
),
)

val result = testee.autoComplete("title").test()
val value = result.values()[0] as AutoCompleteResult

assertEquals(
listOf(
AutoCompleteHistorySuggestion(phrase = "bar.com", "title", "https://bar.com", isAllowedInTopHits = true),
AutoCompleteHistorySuggestion(phrase = "foo.com", "title", "https://foo.com", isAllowedInTopHits = true),
AutoCompleteSearchSuggestion("foo", false),
AutoCompleteBookmarkSuggestion(phrase = "example.com", "title", "https://example.com", isAllowedInTopHits = true, isFavorite = true),
AutoCompleteBookmarkSuggestion(phrase = "baz.com", "title", "https://baz.com", isAllowedInTopHits = false, isFavorite = false),
),
value.suggestions,
)
}

@Test
fun whenAutoCompleteReturnsHistoryItemsWithLessThan3VisitsAndNotRootPageTheyDoNotShowBeforeSuggestions() {
whenever(mockAutoCompleteService.autoComplete("title")).thenReturn(
Observable.just(
listOf(
AutoCompleteServiceRawResult("foo", isNav = false),
),
),
)
whenever(mockNavigationHistory.getHistorySingle()).thenReturn(
Single.just(
listOf(
VisitedPage(title = "title", url = "https://bar.com/test".toUri(), visits = listOf(LocalDateTime.now(), LocalDateTime.now())),
VisitedPage(title = "title", url = "https://foo.com/test".toUri(), visits = listOf(LocalDateTime.now(), LocalDateTime.now())),
),
),
)
whenever(mockSavedSitesRepository.getFavoritesObservable()).thenReturn(
Single.just(
listOf(
favorite(title = "title", url = "https://example.com"),
),
),
)
whenever(mockSavedSitesRepository.getBookmarksObservable()).thenReturn(
Single.just(
listOf(
bookmark(title = "title", url = "https://baz.com"),
),
),
)

val result = testee.autoComplete("title").test()
val value = result.values()[0] as AutoCompleteResult

assertEquals(
listOf(
AutoCompleteBookmarkSuggestion(phrase = "example.com", "title", "https://example.com", isAllowedInTopHits = true, isFavorite = true),
AutoCompleteSearchSuggestion("foo", false),
AutoCompleteHistorySuggestion(phrase = "bar.com/test", "title", "https://bar.com/test", isAllowedInTopHits = false),
AutoCompleteHistorySuggestion(phrase = "foo.com/test", "title", "https://foo.com/test", isAllowedInTopHits = false),
AutoCompleteBookmarkSuggestion(phrase = "baz.com", "title", "https://baz.com", isAllowedInTopHits = false, isFavorite = false),
),
value.suggestions,
)
}

@Test
fun whenAutoCompleteReturnsMultipleFavoriteHitsLimitTopHitsTo2() {
whenever(mockAutoCompleteService.autoComplete("title")).thenReturn(
Expand Down

0 comments on commit 2f5c590

Please sign in to comment.