@ -35,6 +35,7 @@ import org.mozilla.fenix.home.recentvisits.RecentlyVisitedItem.RecentHistoryGrou
import org.mozilla.fenix.home.recentvisits.RecentlyVisitedItem.RecentHistoryHighlight
import org.mozilla.fenix.home.recentvisits.RecentlyVisitedItemInternal.HistoryGroupInternal
import org.mozilla.fenix.home.recentvisits.RecentlyVisitedItemInternal.HistoryHighlightInternal
import org.mozilla.fenix.utils.Settings
import kotlin.random.Random
@OptIn ( ExperimentalCoroutinesApi :: class )
@ -55,6 +56,7 @@ class RecentVisitsFeatureTest {
fun setup ( ) {
historyHightlightsStorage = mockk ( relaxed = true )
historyMetadataStorage = mockk ( relaxed = true )
Settings . SEARCH _GROUP _MINIMUM _SITES = 1
}
@Test
@ -391,7 +393,7 @@ class RecentVisitsFeatureTest {
@Test
fun `GIVEN a list of history highlights and groups WHEN updateState is called THEN emit RecentHistoryChange` ( ) {
val feature = spyk ( RecentVisitsFeature ( appStore , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , false ))
val feature = spyk ( RecentVisitsFeature ( appStore , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) ))
val expected = List < RecentHistoryHighlight > ( 1 ) { mockk ( ) }
every { feature . getCombinedHistory ( any ( ) , any ( ) ) } returns expected
@ -405,7 +407,7 @@ class RecentVisitsFeatureTest {
@Test
fun `GIVEN highlights visits exist in search groups WHEN getCombined is called THEN remove the highlights already in groups` ( ) {
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , false )
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) )
val visitsFromSearch = getSearchFromHistoryMetadataItems ( 4 )
val directVisits = getDirectVisitsHistoryMetadataItems ( 4 )
val directDupeVisits = getSearchFromHistoryMetadataItems ( 2 ) . map {
@ -429,7 +431,7 @@ class RecentVisitsFeatureTest {
@Test
fun `GIVEN fewer than needed highlights and search groups WHEN getCombined is called THEN the result is sorted by date` ( ) {
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , false )
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) )
val visitsFromSearch = getSearchFromHistoryMetadataItems ( 4 )
val directVisits = getDirectVisitsHistoryMetadataItems ( 4 )
val expected = directVisits . reversed ( ) . toRecentHistoryHighlights ( )
@ -448,7 +450,7 @@ class RecentVisitsFeatureTest {
@Test
fun `GIVEN more highlights are newer than search groups WHEN getCombined is called THEN then return an even split then sorted by date` ( ) {
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , false )
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) )
val visitsFromSearch = getSearchFromHistoryMetadataItems ( 5 )
val directVisits = getDirectVisitsHistoryMetadataItems ( 14 )
val expected = directVisits . takeLast ( 5 ) . reversed ( ) . toRecentHistoryHighlights ( ) +
@ -464,7 +466,7 @@ class RecentVisitsFeatureTest {
@Test
fun `GIVEN more search groups are newer than highlights WHEN getCombined is called THEN then return an even split then sorted by date` ( ) {
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , false )
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) )
val visitsFromSearch = getSearchFromHistoryMetadataItems ( 14 )
val directVisits = getDirectVisitsHistoryMetadataItems ( 5 )
val expected = visitsFromSearch . takeLast ( 4 ) . toIndividualRecentHistoryGroups ( ) +
@ -480,7 +482,7 @@ class RecentVisitsFeatureTest {
@Test
fun `GIVEN all highlights have metadata WHEN getHistoryHighlights is called THEN return a list of highlights with an inferred last access time` ( ) {
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , false )
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) )
val visitsFromSearch = getSearchFromHistoryMetadataItems ( 10 )
val directVisits = getDirectVisitsHistoryMetadataItems ( 10 )
@ -497,7 +499,7 @@ class RecentVisitsFeatureTest {
@Test
fun `GIVEN not all highlights have metadata WHEN getHistoryHighlights is called THEN set 0 for the highlights with not found last access time` ( ) {
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , false )
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) )
val visitsFromSearch = getSearchFromHistoryMetadataItems ( 10 )
val directVisits = getDirectVisitsHistoryMetadataItems ( 10 )
val highlightsWithUnknownAccessTime = directVisits . toHistoryHighlightsInternal ( ) . take ( 5 ) . map {
@ -518,7 +520,7 @@ class RecentVisitsFeatureTest {
@Test
fun `GIVEN multiple metadata records for the same highlight WHEN getHistoryHighlights is called THEN set the latest access time from multiple available` ( ) {
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , false )
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) )
val visitsFromSearch = getSearchFromHistoryMetadataItems ( 10 )
val directVisits = getDirectVisitsHistoryMetadataItems ( 10 )
val newerDirectVisits = directVisits . mapIndexed { index , item ->
@ -540,7 +542,7 @@ class RecentVisitsFeatureTest {
@Test
fun `GIVEN multiple metadata entries only for direct accessed pages WHEN getHistorySearchGroups is called THEN return an empty list` ( ) {
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , false )
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) )
val directVisits = getDirectVisitsHistoryMetadataItems ( 10 )
val result = feature . getHistorySearchGroups ( directVisits )
@ -550,7 +552,7 @@ class RecentVisitsFeatureTest {
@Test
fun `GIVEN multiple metadata entries WHEN getHistorySearchGroups is called THEN group all entries by their search term` ( ) {
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , false )
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) )
val visitsFromSearch = getSearchFromHistoryMetadataItems ( 10 )
val directVisits = getDirectVisitsHistoryMetadataItems ( 10 )
@ -563,7 +565,7 @@ class RecentVisitsFeatureTest {
@Test
fun `GIVEN multiple metadata entries for the same url WHEN getHistorySearchGroups is called THEN entries are deduped` ( ) {
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , false )
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) )
val visitsFromSearch = getSearchFromHistoryMetadataItems ( 10 )
val newerVisitsFromSearch = visitsFromSearch . map { it . copy ( updatedAt = it . updatedAt * 2 ) }
val directVisits = getDirectVisitsHistoryMetadataItems ( 10 )
@ -582,7 +584,7 @@ class RecentVisitsFeatureTest {
@Test
fun `GIVEN highlights and search groups WHEN getSortedHistory is called THEN sort descending all items based on the last access time` ( ) {
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , false )
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) )
val visitsFromSearch = getSearchFromHistoryMetadataItems ( 10 )
val directVisits = getDirectVisitsHistoryMetadataItems ( 10 )
val expected = directVisits . reversed ( ) . toRecentHistoryHighlights ( )
@ -601,7 +603,7 @@ class RecentVisitsFeatureTest {
@Test
fun `GIVEN highlights don't have a valid title WHEN getSortedHistory is called THEN the url is set as title` ( ) {
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , false )
val feature = RecentVisitsFeature ( mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) , mockk ( ) )
val visitsFromSearch = getSearchFromHistoryMetadataItems ( 10 )
val directVisits = getDirectVisitsHistoryMetadataItems ( 10 ) . mapIndexed { index , item ->
when ( index % 3 ) {
@ -653,7 +655,6 @@ class RecentVisitsFeatureTest {
lazy { historyHightlightsStorage } ,
scope ,
testDispatcher ,
false ,
)
assertEquals ( emptyList < RecentHistoryGroup > ( ) , appStore . state . recentHistory )