For #24114 - Change all HomeFragment[Store|State|Action] usage to App[Store|State|Action] in existing tests

upstream-sync
Gabriel Luong 2 years ago committed by mergify[bot]
parent 6ae4f9b4c5
commit 15d6d34a01

@ -50,7 +50,10 @@ import org.mozilla.fenix.R
import org.mozilla.fenix.browser.BrowserFragmentDirections
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.components.Analytics
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.TabCollectionStorage
import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.components.appstate.AppState
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.Event.PerformedSearch.EngineSource
import org.mozilla.fenix.components.metrics.MetricController
@ -70,7 +73,7 @@ class DefaultSessionControlControllerTest {
val coroutinesTestRule = MainCoroutineRule()
private val activity: HomeActivity = mockk(relaxed = true)
private val fragmentStore: HomeFragmentStore = mockk(relaxed = true)
private val appStore: AppStore = mockk(relaxed = true)
private val navController: NavController = mockk(relaxed = true)
private val metrics: MetricController = mockk(relaxed = true)
private val engine: Engine = mockk(relaxed = true)
@ -108,7 +111,7 @@ class DefaultSessionControlControllerTest {
)
private lateinit var store: BrowserStore
private val homeFragmentState: HomeFragmentState = mockk(relaxed = true)
private val appState: AppState = mockk(relaxed = true)
@Before
fun setup() {
@ -120,7 +123,7 @@ class DefaultSessionControlControllerTest {
)
)
every { fragmentStore.state } returns HomeFragmentState(
every { appStore.state } returns AppState(
collections = emptyList(),
expandedCollections = emptySet(),
mode = Mode.Normal,
@ -771,7 +774,7 @@ class DefaultSessionControlControllerTest {
fun handleToggleCollectionExpanded() {
val collection = mockk<TabCollection>()
createController().handleToggleCollectionExpanded(collection, true)
verify { fragmentStore.dispatch(HomeFragmentAction.CollectionExpanded(collection, true)) }
verify { appStore.dispatch(AppAction.CollectionExpanded(collection, true)) }
}
@Test
@ -830,7 +833,7 @@ class DefaultSessionControlControllerTest {
verify {
settings.showCollectionsPlaceholderOnHome = false
fragmentStore.dispatch(HomeFragmentAction.RemoveCollectionsPlaceholder)
appStore.dispatch(AppAction.RemoveCollectionsPlaceholder)
}
}
@ -876,7 +879,7 @@ class DefaultSessionControlControllerTest {
verify {
settings.incrementNumTimesPrivateModeOpened()
HomeFragmentAction.ModeChange(Mode.fromBrowsingMode(newMode))
AppAction.ModeChange(Mode.fromBrowsingMode(newMode))
}
}
@ -904,7 +907,7 @@ class DefaultSessionControlControllerTest {
verify {
settings.incrementNumTimesPrivateModeOpened()
HomeFragmentAction.ModeChange(Mode.fromBrowsingMode(newMode))
AppAction.ModeChange(Mode.fromBrowsingMode(newMode))
navController.navigate(
BrowserFragmentDirections.actionGlobalSearchDialog(
sessionId = null
@ -937,7 +940,7 @@ class DefaultSessionControlControllerTest {
settings.incrementNumTimesPrivateModeOpened()
}
verify {
HomeFragmentAction.ModeChange(Mode.fromBrowsingMode(newMode))
AppAction.ModeChange(Mode.fromBrowsingMode(newMode))
navController.navigate(
BrowserFragmentDirections.actionGlobalSearchDialog(
sessionId = null
@ -948,8 +951,8 @@ class DefaultSessionControlControllerTest {
@Test
fun `WHEN handleReportSessionMetrics is called AND there are zero recent tabs THEN report Event#RecentTabsSectionIsNotVisible`() {
every { homeFragmentState.recentTabs } returns emptyList()
createController().handleReportSessionMetrics(homeFragmentState)
every { appState.recentTabs } returns emptyList()
createController().handleReportSessionMetrics(appState)
verify(exactly = 0) {
metrics.track(Event.RecentTabsSectionIsVisible)
}
@ -961,8 +964,8 @@ class DefaultSessionControlControllerTest {
@Test
fun `WHEN handleReportSessionMetrics is called AND there is at least one recent tab THEN report Event#RecentTabsSectionIsVisible`() {
val recentTab: RecentTab = mockk(relaxed = true)
every { homeFragmentState.recentTabs } returns listOf(recentTab)
createController().handleReportSessionMetrics(homeFragmentState)
every { appState.recentTabs } returns listOf(recentTab)
createController().handleReportSessionMetrics(appState)
verify(exactly = 0) {
metrics.track(Event.RecentTabsSectionIsNotVisible)
}
@ -973,9 +976,9 @@ class DefaultSessionControlControllerTest {
@Test
fun `WHEN handleReportSessionMetrics is called AND there are zero recent bookmarks THEN report Event#RecentBookmarkCount(0)`() {
every { homeFragmentState.recentBookmarks } returns emptyList()
every { homeFragmentState.recentTabs } returns emptyList()
createController().handleReportSessionMetrics(homeFragmentState)
every { appState.recentBookmarks } returns emptyList()
every { appState.recentTabs } returns emptyList()
createController().handleReportSessionMetrics(appState)
verify {
metrics.track(Event.RecentBookmarkCount(0))
}
@ -984,9 +987,9 @@ class DefaultSessionControlControllerTest {
@Test
fun `WHEN handleReportSessionMetrics is called AND there is at least one recent bookmark THEN report Event#RecentBookmarkCount(1)`() {
val recentBookmark: RecentBookmark = mockk(relaxed = true)
every { homeFragmentState.recentBookmarks } returns listOf(recentBookmark)
every { homeFragmentState.recentTabs } returns emptyList()
createController().handleReportSessionMetrics(homeFragmentState)
every { appState.recentBookmarks } returns listOf(recentBookmark)
every { appState.recentTabs } returns emptyList()
createController().handleReportSessionMetrics(appState)
verify {
metrics.track(Event.RecentBookmarkCount(1))
}
@ -1090,7 +1093,7 @@ class DefaultSessionControlControllerTest {
restoreUseCase = mockk(relaxed = true),
reloadUrlUseCase = reloadUrlUseCase.reload,
selectTabUseCase = selectTabUseCase.selectTab,
fragmentStore = fragmentStore,
appStore = appStore,
navController = navController,
viewLifecycleScope = scope,
hideOnboarding = hideOnboarding,

@ -18,6 +18,9 @@ import mozilla.components.service.pocket.PocketRecommendedStory
import mozilla.components.service.pocket.PocketStoriesService
import mozilla.components.support.test.ext.joinBlocking
import org.junit.Test
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.components.appstate.AppState
import org.mozilla.fenix.datastore.SelectedPocketStoriesCategories
import org.mozilla.fenix.datastore.SelectedPocketStoriesCategories.SelectedPocketStoriesCategory
import org.mozilla.fenix.home.pocket.PocketRecommendedStoriesCategory
@ -31,15 +34,15 @@ class PocketUpdatesMiddlewareTest {
val story3 = story1.copy("title3", "url3")
val coroutineScope = TestCoroutineScope()
val pocketService: PocketStoriesService = mockk(relaxed = true)
val pocketMiddleware = PocketUpdatesMiddleware(coroutineScope, pocketService, mockk())
val homeStore = HomeFragmentStore(
HomeFragmentState(
val pocketMiddleware = PocketUpdatesMiddleware(pocketService, mockk(), coroutineScope)
val appstore = AppStore(
AppState(
pocketStories = listOf(story1, story2, story3)
),
listOf(pocketMiddleware)
)
homeStore.dispatch(HomeFragmentAction.PocketStoriesShown(listOf(story2))).joinBlocking()
appstore.dispatch(AppAction.PocketStoriesShown(listOf(story2))).joinBlocking()
coVerify { pocketService.updateStoriesTimesShown(listOf(story2.copy(timesShown = 1))) }
}
@ -73,21 +76,21 @@ class PocketUpdatesMiddlewareTest {
every { data } returns flowOf(persistedSelectedCategories)
} as DataStore<SelectedPocketStoriesCategories>
val currentCategories = listOf(mockk<PocketRecommendedStoriesCategory>())
val pocketMiddleware = PocketUpdatesMiddleware(TestCoroutineScope(), mockk(), dataStore)
val homeStore = spyk(
HomeFragmentStore(
HomeFragmentState(
val pocketMiddleware = PocketUpdatesMiddleware(mockk(), dataStore, TestCoroutineScope())
val appStore = spyk(
AppStore(
AppState(
pocketStoriesCategories = currentCategories
),
listOf(pocketMiddleware)
)
)
homeStore.dispatch(HomeFragmentAction.PocketStoriesCategoriesChange(currentCategories)).joinBlocking()
appStore.dispatch(AppAction.PocketStoriesCategoriesChange(currentCategories)).joinBlocking()
verify {
homeStore.dispatch(
HomeFragmentAction.PocketStoriesCategoriesSelectionsChange(
appStore.dispatch(
AppAction.PocketStoriesCategoriesSelectionsChange(
storiesCategories = currentCategories,
categoriesSelected = listOf(
PocketRecommendedStoriesSelectedCategory("testCategory", 123)
@ -105,17 +108,17 @@ class PocketUpdatesMiddlewareTest {
val dataStore: DataStore<SelectedPocketStoriesCategories> =
mockk<FakeDataStore<SelectedPocketStoriesCategories>>(relaxed = true) as
DataStore<SelectedPocketStoriesCategories>
val pocketMiddleware = PocketUpdatesMiddleware(TestCoroutineScope(), mockk(), dataStore)
val homeStore = spyk(
HomeFragmentStore(
HomeFragmentState(
val pocketMiddleware = PocketUpdatesMiddleware(mockk(), dataStore, TestCoroutineScope())
val appStore = spyk(
AppStore(
AppState(
pocketStoriesCategories = listOf(categ1, categ2)
),
listOf(pocketMiddleware)
)
)
homeStore.dispatch(HomeFragmentAction.SelectPocketStoriesCategory(categ2.name)).joinBlocking()
appStore.dispatch(AppAction.SelectPocketStoriesCategory(categ2.name)).joinBlocking()
// Seems like the most we can test is that an update was made.
coVerify { dataStore.updateData(any()) }
@ -129,17 +132,17 @@ class PocketUpdatesMiddlewareTest {
val dataStore: DataStore<SelectedPocketStoriesCategories> =
mockk<FakeDataStore<SelectedPocketStoriesCategories>>(relaxed = true) as
DataStore<SelectedPocketStoriesCategories>
val pocketMiddleware = PocketUpdatesMiddleware(TestCoroutineScope(), mockk(), dataStore)
val homeStore = spyk(
HomeFragmentStore(
HomeFragmentState(
val pocketMiddleware = PocketUpdatesMiddleware(mockk(), dataStore, TestCoroutineScope())
val appStore = spyk(
AppStore(
AppState(
pocketStoriesCategories = listOf(categ1, categ2)
),
listOf(pocketMiddleware)
)
)
homeStore.dispatch(HomeFragmentAction.DeselectPocketStoriesCategory(categ2.name)).joinBlocking()
appStore.dispatch(AppAction.DeselectPocketStoriesCategory(categ2.name)).joinBlocking()
// Seems like the most we can test is that an update was made.
coVerify { dataStore.updateData(any()) }
@ -173,20 +176,20 @@ class PocketUpdatesMiddlewareTest {
every { data } returns flowOf(persistedSelectedCategories)
} as DataStore<SelectedPocketStoriesCategories>
val currentCategories = listOf(mockk<PocketRecommendedStoriesCategory>())
val homeStore = spyk(
HomeFragmentStore(HomeFragmentState())
val appStore = spyk(
AppStore(AppState())
)
restoreSelectedCategories(
coroutineScope = TestCoroutineScope(),
currentCategories = currentCategories,
store = homeStore,
store = appStore,
selectedPocketCategoriesDataStore = dataStore
)
coVerify {
homeStore.dispatch(
HomeFragmentAction.PocketStoriesCategoriesSelectionsChange(
appStore.dispatch(
AppAction.PocketStoriesCategoriesSelectionsChange(
storiesCategories = currentCategories,
categoriesSelected = listOf(
PocketRecommendedStoriesSelectedCategory("testCategory", 123)

@ -33,15 +33,17 @@ import org.junit.Before
import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.home.HomeFragmentAction.RecentTabsChange
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.components.appstate.AppState
import org.mozilla.fenix.home.recenttabs.RecentTab
import org.mozilla.fenix.home.recenttabs.RecentTabsListFeature
import org.mozilla.fenix.tabstray.SEARCH_TERM_TAB_GROUPS
class RecentTabsListFeatureTest {
private lateinit var homeStore: HomeFragmentStore
private lateinit var middleware: CaptureActionsMiddleware<HomeFragmentState, HomeFragmentAction>
private lateinit var appStore: AppStore
private lateinit var middleware: CaptureActionsMiddleware<AppState, AppAction>
@OptIn(ExperimentalCoroutinesApi::class)
@get:Rule
@ -50,7 +52,7 @@ class RecentTabsListFeatureTest {
@Before
fun setup() {
middleware = CaptureActionsMiddleware()
homeStore = HomeFragmentStore(middlewares = listOf(middleware))
appStore = AppStore(middlewares = listOf(middleware))
}
@After
@ -61,17 +63,17 @@ class RecentTabsListFeatureTest {
@Test
fun `GIVEN no selected, last active or in progress media tab WHEN the feature starts THEN dispatch an empty list`() {
val browserStore = BrowserStore()
val homeStore = HomeFragmentStore()
val appStore = AppStore()
val feature = RecentTabsListFeature(
browserStore = browserStore,
homeStore = homeStore
appStore = appStore
)
feature.start()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
assertEquals(0, homeStore.state.recentTabs.size)
assertEquals(0, appStore.state.recentTabs.size)
}
@Test
@ -86,14 +88,14 @@ class RecentTabsListFeatureTest {
)
val feature = RecentTabsListFeature(
browserStore = browserStore,
homeStore = homeStore
appStore = appStore
)
feature.start()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
assertEquals(1, homeStore.state.recentTabs.size)
assertEquals(1, appStore.state.recentTabs.size)
}
@Test
@ -111,14 +113,14 @@ class RecentTabsListFeatureTest {
)
val feature = RecentTabsListFeature(
browserStore = browserStore,
homeStore = homeStore
appStore = appStore
)
feature.start()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
assertEquals(1, homeStore.state.recentTabs.size)
assertEquals(1, appStore.state.recentTabs.size)
}
@Ignore("Disabled until we want to enable this feature. See #21670.")
@ -137,17 +139,17 @@ class RecentTabsListFeatureTest {
)
val feature = RecentTabsListFeature(
browserStore = browserStore,
homeStore = homeStore
appStore = appStore
)
feature.start()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
assertEquals(2, homeStore.state.recentTabs.size)
assertTrue(homeStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(selectedTab, (homeStore.state.recentTabs[0] as RecentTab.Tab).state)
assertTrue(homeStore.state.recentTabs[1] is RecentTab.Tab)
assertEquals(mediaTab, (homeStore.state.recentTabs[1] as RecentTab.Tab).state)
assertEquals(2, appStore.state.recentTabs.size)
assertTrue(appStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(selectedTab, (appStore.state.recentTabs[0] as RecentTab.Tab).state)
assertTrue(appStore.state.recentTabs[1] is RecentTab.Tab)
assertEquals(mediaTab, (appStore.state.recentTabs[1] as RecentTab.Tab).state)
}
@Ignore("Disabled until we want to enable this feature. See #21670.")
@ -165,15 +167,15 @@ class RecentTabsListFeatureTest {
)
val feature = RecentTabsListFeature(
browserStore = browserStore,
homeStore = homeStore
appStore = appStore
)
feature.start()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
assertEquals(1, homeStore.state.recentTabs.size)
assertTrue(homeStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(selectedMediaTab, (homeStore.state.recentTabs[0] as RecentTab.Tab).state)
assertEquals(1, appStore.state.recentTabs.size)
assertTrue(appStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(selectedMediaTab, (appStore.state.recentTabs[0] as RecentTab.Tab).state)
}
@Test
@ -195,24 +197,24 @@ class RecentTabsListFeatureTest {
)
val feature = RecentTabsListFeature(
browserStore = browserStore,
homeStore = homeStore
appStore = appStore
)
feature.start()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
assertEquals(1, homeStore.state.recentTabs.size)
assertTrue(homeStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(tab1, (homeStore.state.recentTabs[0] as RecentTab.Tab).state)
assertEquals(1, appStore.state.recentTabs.size)
assertTrue(appStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(tab1, (appStore.state.recentTabs[0] as RecentTab.Tab).state)
browserStore.dispatch(TabListAction.SelectTabAction(tab2.id)).joinBlocking()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
assertEquals(1, homeStore.state.recentTabs.size)
assertTrue(homeStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(tab2, (homeStore.state.recentTabs[0] as RecentTab.Tab).state)
assertEquals(1, appStore.state.recentTabs.size)
assertTrue(appStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(tab2, (appStore.state.recentTabs[0] as RecentTab.Tab).state)
}
@Ignore("Disabled until we want to enable this feature. See #21670.")
@ -235,34 +237,34 @@ class RecentTabsListFeatureTest {
)
val feature = RecentTabsListFeature(
browserStore = browserStore,
homeStore = homeStore
appStore = appStore
)
feature.start()
homeStore.waitUntilIdle()
assertEquals(2, homeStore.state.recentTabs.size)
assertTrue(homeStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(initialMediaTab, (homeStore.state.recentTabs[0] as RecentTab.Tab).state)
appStore.waitUntilIdle()
assertEquals(2, appStore.state.recentTabs.size)
assertTrue(appStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(initialMediaTab, (appStore.state.recentTabs[0] as RecentTab.Tab).state)
browserStore.dispatch(
MediaSessionAction.UpdateMediaPlaybackStateAction("2", MediaSession.PlaybackState.PLAYING)
).joinBlocking()
homeStore.waitUntilIdle()
assertEquals(2, homeStore.state.recentTabs.size)
assertTrue(homeStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(initialMediaTab, (homeStore.state.recentTabs[0] as RecentTab.Tab).state)
appStore.waitUntilIdle()
assertEquals(2, appStore.state.recentTabs.size)
assertTrue(appStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(initialMediaTab, (appStore.state.recentTabs[0] as RecentTab.Tab).state)
// UpdateMediaPlaybackStateAction would set the current timestamp as the new value for lastMediaAccess
val updatedLastMediaAccess =
(homeStore.state.recentTabs[1] as RecentTab.Tab).state.lastMediaAccessState.lastMediaAccess
(appStore.state.recentTabs[1] as RecentTab.Tab).state.lastMediaAccessState.lastMediaAccess
assertTrue("expected lastMediaAccess ($updatedLastMediaAccess) > 100", updatedLastMediaAccess > 100)
assertEquals(
"http://mozilla.org",
(homeStore.state.recentTabs[1] as RecentTab.Tab).state.lastMediaAccessState.lastMediaUrl
(appStore.state.recentTabs[1] as RecentTab.Tab).state.lastMediaAccessState.lastMediaUrl
)
// Check that the media tab is updated ignoring just the lastMediaAccess property.
assertEquals(
newMediaTab,
(homeStore.state.recentTabs[1] as RecentTab.Tab).state.copy(
(appStore.state.recentTabs[1] as RecentTab.Tab).state.copy(
lastMediaAccessState = LastMediaAccessState("https://mozilla.com", 100)
)
)
@ -294,25 +296,25 @@ class RecentTabsListFeatureTest {
)
val feature = RecentTabsListFeature(
browserStore = browserStore,
homeStore = homeStore
appStore = appStore
)
feature.start()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
assertEquals(1, homeStore.state.recentTabs.size)
assertTrue(homeStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(selectedNormalTab, (homeStore.state.recentTabs[0] as RecentTab.Tab).state)
assertEquals(1, appStore.state.recentTabs.size)
assertTrue(appStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(selectedNormalTab, (appStore.state.recentTabs[0] as RecentTab.Tab).state)
browserStore.dispatch(TabListAction.SelectTabAction(privateTab.id)).joinBlocking()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
// If the selected tab is a private tab the feature should show the last accessed normal tab.
assertEquals(1, homeStore.state.recentTabs.size)
assertTrue(homeStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(lastAccessedNormalTab, (homeStore.state.recentTabs[0] as RecentTab.Tab).state)
assertEquals(1, appStore.state.recentTabs.size)
assertTrue(appStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(lastAccessedNormalTab, (appStore.state.recentTabs[0] as RecentTab.Tab).state)
}
@Test
@ -330,14 +332,14 @@ class RecentTabsListFeatureTest {
)
val feature = RecentTabsListFeature(
browserStore = browserStore,
homeStore = homeStore
appStore = appStore
)
feature.start()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
middleware.assertLastAction(RecentTabsChange::class) {
middleware.assertLastAction(AppAction.RecentTabsChange::class) {
val tab = it.recentTabs.first() as RecentTab.Tab
assertTrue(tab.state.content.title.isEmpty())
assertNull(tab.state.content.icon)
@ -345,9 +347,9 @@ class RecentTabsListFeatureTest {
browserStore.dispatch(UpdateTitleAction("1", "test")).joinBlocking()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
middleware.assertLastAction(RecentTabsChange::class) {
middleware.assertLastAction(AppAction.RecentTabsChange::class) {
val tab = it.recentTabs.first() as RecentTab.Tab
assertEquals("test", tab.state.content.title)
assertNull(tab.state.content.icon)
@ -356,9 +358,9 @@ class RecentTabsListFeatureTest {
browserStore.dispatch(UpdateIconAction("1", "https://www.mozilla.org", mockk()))
.joinBlocking()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
middleware.assertLastAction(RecentTabsChange::class) {
middleware.assertLastAction(AppAction.RecentTabsChange::class) {
val tab = it.recentTabs.first() as RecentTab.Tab
assertEquals("test", tab.state.content.title)
assertNotNull(tab.state.content.icon)
@ -375,16 +377,16 @@ class RecentTabsListFeatureTest {
)
val feature = RecentTabsListFeature(
browserStore = browserStore,
homeStore = homeStore
appStore = appStore
)
feature.start()
browserStore.dispatch(TabListAction.RemoveTabsAction(listOf("1"))).joinBlocking()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
assertEquals(1, homeStore.state.recentTabs.size)
assertTrue(homeStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(selectedTab, (homeStore.state.recentTabs[0] as RecentTab.Tab).state)
assertEquals(1, appStore.state.recentTabs.size)
assertTrue(appStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(selectedTab, (appStore.state.recentTabs[0] as RecentTab.Tab).state)
}
@Test
@ -419,15 +421,15 @@ class RecentTabsListFeatureTest {
)
val feature = RecentTabsListFeature(
browserStore = browserStore,
homeStore = homeStore
appStore = appStore
)
feature.start()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
assertEquals(1, homeStore.state.recentTabs.size)
val searchGroup = (homeStore.state.recentTabs[0] as RecentTab.SearchGroup)
assertEquals(1, appStore.state.recentTabs.size)
val searchGroup = (appStore.state.recentTabs[0] as RecentTab.SearchGroup)
assertEquals(searchGroup.searchTerm, "Test search term")
assertEquals(searchGroup.tabId, "1")
assertEquals(searchGroup.url, "https://www.mozilla.org")
@ -468,17 +470,17 @@ class RecentTabsListFeatureTest {
)
val feature = RecentTabsListFeature(
browserStore = browserStore,
homeStore = homeStore
appStore = appStore
)
feature.start()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
assertEquals(2, homeStore.state.recentTabs.size)
assertTrue(homeStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(tab3, (homeStore.state.recentTabs[0] as RecentTab.Tab).state)
val searchGroup = (homeStore.state.recentTabs[1] as RecentTab.SearchGroup)
assertEquals(2, appStore.state.recentTabs.size)
assertTrue(appStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(tab3, (appStore.state.recentTabs[0] as RecentTab.Tab).state)
val searchGroup = (appStore.state.recentTabs[1] as RecentTab.SearchGroup)
assertEquals(searchGroup.searchTerm, "Test search term")
assertEquals(searchGroup.tabId, "1")
assertEquals(searchGroup.url, "https://www.mozilla.org")
@ -510,16 +512,16 @@ class RecentTabsListFeatureTest {
)
val feature = RecentTabsListFeature(
browserStore = browserStore,
homeStore = homeStore
appStore = appStore
)
feature.start()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
assertEquals(1, homeStore.state.recentTabs.size)
assertTrue(homeStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(tab1, (homeStore.state.recentTabs[0] as RecentTab.Tab).state)
assertEquals(1, appStore.state.recentTabs.size)
assertTrue(appStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(tab1, (appStore.state.recentTabs[0] as RecentTab.Tab).state)
}
@Test
@ -558,17 +560,17 @@ class RecentTabsListFeatureTest {
)
val feature = RecentTabsListFeature(
browserStore = browserStore,
homeStore = homeStore
appStore = appStore
)
feature.start()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
assertEquals(2, homeStore.state.recentTabs.size)
assertTrue(homeStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(tab1, (homeStore.state.recentTabs[0] as RecentTab.Tab).state)
val searchGroup = (homeStore.state.recentTabs[1] as RecentTab.SearchGroup)
assertEquals(2, appStore.state.recentTabs.size)
assertTrue(appStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(tab1, (appStore.state.recentTabs[0] as RecentTab.Tab).state)
val searchGroup = (appStore.state.recentTabs[1] as RecentTab.SearchGroup)
assertEquals(searchGroup.searchTerm, "test search term")
assertEquals(searchGroup.tabId, "2")
assertEquals(searchGroup.url, "https://www.mozilla.org")
@ -611,16 +613,16 @@ class RecentTabsListFeatureTest {
)
val feature = RecentTabsListFeature(
browserStore = browserStore,
homeStore = homeStore
appStore = appStore
)
feature.start()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
assertEquals(2, homeStore.state.recentTabs.size)
assertTrue(homeStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(selectedTab, (homeStore.state.recentTabs[0] as RecentTab.Tab).state)
val searchGroup = (homeStore.state.recentTabs[1] as RecentTab.SearchGroup)
assertEquals(2, appStore.state.recentTabs.size)
assertTrue(appStore.state.recentTabs[0] is RecentTab.Tab)
assertEquals(selectedTab, (appStore.state.recentTabs[0] as RecentTab.Tab).state)
val searchGroup = (appStore.state.recentTabs[1] as RecentTab.SearchGroup)
assertEquals(searchGroup.searchTerm, "test search term")
assertEquals(searchGroup.tabId, "44")
assertEquals(searchGroup.url, "https://www.mozilla.org")

@ -13,6 +13,7 @@ import mozilla.components.service.pocket.PocketRecommendedStory
import org.junit.Before
import org.junit.Test
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.components.appstate.AppState
import org.mozilla.fenix.home.pocket.PocketRecommendedStoriesCategory
import org.mozilla.fenix.home.pocket.PocketStoriesController
import org.mozilla.fenix.home.recentbookmarks.RecentBookmark
@ -265,9 +266,9 @@ class SessionControlInteractorTest {
@Test
fun reportSessionMetrics() {
val homeFragmentState: HomeFragmentState = mockk(relaxed = true)
every { homeFragmentState.recentBookmarks } returns emptyList()
interactor.reportSessionMetrics(homeFragmentState)
verify { controller.handleReportSessionMetrics(homeFragmentState) }
val appState: AppState = mockk(relaxed = true)
every { appState.recentBookmarks } returns emptyList()
interactor.reportSessionMetrics(appState)
verify { controller.handleReportSessionMetrics(appState) }
}
}

@ -13,9 +13,9 @@ import mozilla.components.support.test.middleware.CaptureActionsMiddleware
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Test
import org.mozilla.fenix.home.HomeFragmentAction
import org.mozilla.fenix.home.HomeFragmentState
import org.mozilla.fenix.home.HomeFragmentStore
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.components.appstate.AppState
import org.mozilla.fenix.home.recentbookmarks.RecentBookmark
import org.mozilla.fenix.home.recenttabs.RecentTab
import org.mozilla.fenix.utils.Settings
@ -30,13 +30,13 @@ class BlocklistMiddlewareTest {
every { mockSettings.homescreenBlocklist } returns setOf()
val middleware = BlocklistMiddleware(blocklistHandler)
val store = HomeFragmentStore(
HomeFragmentState(),
val store = AppStore(
AppState(),
middlewares = listOf(middleware)
)
store.dispatch(
HomeFragmentAction.Change(
AppAction.Change(
topSites = store.state.topSites,
mode = store.state.mode,
collections = store.state.collections,
@ -56,13 +56,13 @@ class BlocklistMiddlewareTest {
every { mockSettings.homescreenBlocklist } returns setOf("https://www.github.org/".stripAndHash())
val middleware = BlocklistMiddleware(blocklistHandler)
val store = HomeFragmentStore(
HomeFragmentState(),
val store = AppStore(
AppState(),
middlewares = listOf(middleware)
)
store.dispatch(
HomeFragmentAction.Change(
AppAction.Change(
topSites = store.state.topSites,
mode = store.state.mode,
collections = store.state.collections,
@ -82,13 +82,13 @@ class BlocklistMiddlewareTest {
every { mockSettings.homescreenBlocklist } returns setOf("https://github.com/mozilla-mobile/fenix".stripAndHash())
val middleware = BlocklistMiddleware(blocklistHandler)
val store = HomeFragmentStore(
HomeFragmentState(),
val store = AppStore(
AppState(),
middlewares = listOf(middleware)
)
store.dispatch(
HomeFragmentAction.Change(
AppAction.Change(
topSites = store.state.topSites,
mode = store.state.mode,
collections = store.state.collections,
@ -108,13 +108,13 @@ class BlocklistMiddlewareTest {
every { mockSettings.homescreenBlocklist } returns setOf("https://www.mozilla.org/".stripAndHash())
val middleware = BlocklistMiddleware(blocklistHandler)
val store = HomeFragmentStore(
HomeFragmentState(),
val store = AppStore(
AppState(),
middlewares = listOf(middleware)
)
store.dispatch(
HomeFragmentAction.Change(
AppAction.Change(
topSites = store.state.topSites,
mode = store.state.mode,
collections = store.state.collections,
@ -136,13 +136,13 @@ class BlocklistMiddlewareTest {
every { mockSettings.homescreenBlocklist } returns setOf(blockedUrl.stripAndHash())
val middleware = BlocklistMiddleware(blocklistHandler)
val store = HomeFragmentStore(
HomeFragmentState(),
val store = AppStore(
AppState(),
middlewares = listOf(middleware)
)
store.dispatch(
HomeFragmentAction.Change(
AppAction.Change(
topSites = store.state.topSites,
mode = store.state.mode,
collections = store.state.collections,
@ -171,13 +171,13 @@ class BlocklistMiddlewareTest {
every { mockSettings.homescreenBlocklist } returns setOf(blockedUrl.stripAndHash())
val middleware = BlocklistMiddleware(blocklistHandler)
val store = HomeFragmentStore(
HomeFragmentState(),
val store = AppStore(
AppState(),
middlewares = listOf(middleware)
)
store.dispatch(
HomeFragmentAction.Change(
AppAction.Change(
topSites = store.state.topSites,
mode = store.state.mode,
collections = store.state.collections,
@ -194,7 +194,7 @@ class BlocklistMiddlewareTest {
@Test
fun `WHEN remove action intercepted THEN hashed url added to blocklist and Change action dispatched`() {
val captureMiddleware = CaptureActionsMiddleware<HomeFragmentState, HomeFragmentAction>()
val captureMiddleware = CaptureActionsMiddleware<AppState, AppAction>()
val removedUrl = "https://www.mozilla.org/"
val removedBookmark = RecentBookmark(url = removedUrl)
@ -202,16 +202,16 @@ class BlocklistMiddlewareTest {
every { mockSettings.homescreenBlocklist } returns setOf() andThen setOf(removedUrl.stripAndHash())
every { mockSettings.homescreenBlocklist = capture(updateSlot) } returns Unit
val middleware = BlocklistMiddleware(blocklistHandler)
val store = HomeFragmentStore(
HomeFragmentState(recentBookmarks = listOf(removedBookmark)),
val store = AppStore(
AppState(recentBookmarks = listOf(removedBookmark)),
middlewares = listOf(middleware, captureMiddleware)
)
store.dispatch(
HomeFragmentAction.RemoveRecentBookmark(removedBookmark)
AppAction.RemoveRecentBookmark(removedBookmark)
).joinBlocking()
val capturedAction = captureMiddleware.findFirstAction(HomeFragmentAction.Change::class)
val capturedAction = captureMiddleware.findFirstAction(AppAction.Change::class)
assertEquals(emptyList<RecentBookmark>(), capturedAction.recentBookmarks)
assertEquals(setOf(removedUrl.stripAndHash()), updateSlot.captured)
}
@ -223,13 +223,13 @@ class BlocklistMiddlewareTest {
every { mockSettings.homescreenBlocklist } returns setOf("https://$host".stripAndHash())
val middleware = BlocklistMiddleware(blocklistHandler)
val store = HomeFragmentStore(
HomeFragmentState(),
val store = AppStore(
AppState(),
middlewares = listOf(middleware)
)
store.dispatch(
HomeFragmentAction.Change(
AppAction.Change(
topSites = store.state.topSites,
mode = store.state.mode,
collections = store.state.collections,
@ -250,13 +250,13 @@ class BlocklistMiddlewareTest {
every { mockSettings.homescreenBlocklist } returns setOf(host.stripAndHash())
val middleware = BlocklistMiddleware(blocklistHandler)
val store = HomeFragmentStore(
HomeFragmentState(),
val store = AppStore(
AppState(),
middlewares = listOf(middleware)
)
store.dispatch(
HomeFragmentAction.Change(
AppAction.Change(
topSites = store.state.topSites,
mode = store.state.mode,
collections = store.state.collections,
@ -277,13 +277,13 @@ class BlocklistMiddlewareTest {
every { mockSettings.homescreenBlocklist } returns setOf("https://$host".stripAndHash())
val middleware = BlocklistMiddleware(blocklistHandler)
val store = HomeFragmentStore(
HomeFragmentState(),
val store = AppStore(
AppState(),
middlewares = listOf(middleware)
)
store.dispatch(
HomeFragmentAction.Change(
AppAction.Change(
topSites = store.state.topSites,
mode = store.state.mode,
collections = store.state.collections,

@ -15,11 +15,11 @@ import org.junit.Test
import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.components.appstate.AppState
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.home.HomeFragmentAction
import org.mozilla.fenix.home.HomeFragmentState
import org.mozilla.fenix.home.HomeFragmentStore
class DefaultPocketStoriesControllerTest {
val metrics: MetricController = mockk(relaxed = true)
@ -30,8 +30,8 @@ class DefaultPocketStoriesControllerTest {
val category2 = PocketRecommendedStoriesCategory("cat2", emptyList())
val selections = listOf(PocketRecommendedStoriesSelectedCategory(category2.name))
val store = spyk(
HomeFragmentStore(
HomeFragmentState(
AppStore(
AppState(
pocketStoriesCategories = listOf(category1, category2),
pocketStoriesCategoriesSelections = selections
)
@ -40,8 +40,8 @@ class DefaultPocketStoriesControllerTest {
val controller = DefaultPocketStoriesController(mockk(), store, mockk(), metrics)
controller.handleCategoryClick(category2)
verify(exactly = 0) { store.dispatch(HomeFragmentAction.SelectPocketStoriesCategory(category2.name)) }
verify { store.dispatch(HomeFragmentAction.DeselectPocketStoriesCategory(category2.name)) }
verify(exactly = 0) { store.dispatch(AppAction.SelectPocketStoriesCategory(category2.name)) }
verify { store.dispatch(AppAction.DeselectPocketStoriesCategory(category2.name)) }
verify { metrics.track(Event.PocketHomeRecsCategoryClicked(category2.name, 1, false)) }
}
@ -57,8 +57,8 @@ class DefaultPocketStoriesControllerTest {
val category7 = PocketRecommendedStoriesSelectedCategory(name = "cat7", selectionTimestamp = 890)
val newSelectedCategory = PocketRecommendedStoriesSelectedCategory(name = "newSelectedCategory", selectionTimestamp = 654321)
val store = spyk(
HomeFragmentStore(
HomeFragmentState(
AppStore(
AppState(
pocketStoriesCategoriesSelections = listOf(
category1, category2, category3, category4, category5, category6, category7, oldestSelectedCategory
)
@ -69,8 +69,8 @@ class DefaultPocketStoriesControllerTest {
controller.handleCategoryClick(PocketRecommendedStoriesCategory(newSelectedCategory.name))
verify { store.dispatch(HomeFragmentAction.DeselectPocketStoriesCategory(oldestSelectedCategory.name)) }
verify { store.dispatch(HomeFragmentAction.SelectPocketStoriesCategory(newSelectedCategory.name)) }
verify { store.dispatch(AppAction.DeselectPocketStoriesCategory(oldestSelectedCategory.name)) }
verify { store.dispatch(AppAction.SelectPocketStoriesCategory(newSelectedCategory.name)) }
verify { metrics.track(Event.PocketHomeRecsCategoryClicked(newSelectedCategory.name, 8, true)) }
}
@ -84,8 +84,8 @@ class DefaultPocketStoriesControllerTest {
val category5 = PocketRecommendedStoriesSelectedCategory(name = "cat5", selectionTimestamp = 555)
val category6 = PocketRecommendedStoriesSelectedCategory(name = "cat6", selectionTimestamp = 678)
val store = spyk(
HomeFragmentStore(
HomeFragmentState(
AppStore(
AppState(
pocketStoriesCategoriesSelections = listOf(
category1, category2, category3, category4, category5, category6, oldestSelectedCategory
)
@ -97,20 +97,20 @@ class DefaultPocketStoriesControllerTest {
controller.handleCategoryClick(PocketRecommendedStoriesCategory(newSelectedCategoryName))
verify(exactly = 0) { store.dispatch(HomeFragmentAction.DeselectPocketStoriesCategory(oldestSelectedCategory.name)) }
verify { store.dispatch(HomeFragmentAction.SelectPocketStoriesCategory(newSelectedCategoryName)) }
verify(exactly = 0) { store.dispatch(AppAction.DeselectPocketStoriesCategory(oldestSelectedCategory.name)) }
verify { store.dispatch(AppAction.SelectPocketStoriesCategory(newSelectedCategoryName)) }
verify { metrics.track(Event.PocketHomeRecsCategoryClicked(newSelectedCategoryName, 7, true)) }
}
@Test
fun `WHEN new stories are shown THEN update the State and record telemetry`() {
val store = spyk(HomeFragmentStore())
val store = spyk(AppStore())
val controller = DefaultPocketStoriesController(mockk(), store, mockk(), metrics)
val storiesShown: List<PocketRecommendedStory> = mockk()
controller.handleStoriesShown(storiesShown)
verify { store.dispatch(HomeFragmentAction.PocketStoriesShown(storiesShown)) }
verify { store.dispatch(AppAction.PocketStoriesShown(storiesShown)) }
verify { metrics.track(Event.PocketHomeRecsShown) }
}

@ -27,7 +27,6 @@ import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.home.HomeFragmentDirections
import org.mozilla.fenix.home.HomeFragmentStore
import org.mozilla.fenix.home.recentbookmarks.controller.DefaultRecentBookmarksController
@OptIn(ExperimentalCoroutinesApi::class)
@ -39,7 +38,6 @@ class DefaultRecentBookmarksControllerTest {
private val activity: HomeActivity = mockk(relaxed = true)
private val navController: NavController = mockk(relaxUnitFun = true)
private val metrics: MetricController = mockk(relaxed = true)
private val homeStore: HomeFragmentStore = mockk()
private lateinit var controller: DefaultRecentBookmarksController
@ -57,7 +55,7 @@ class DefaultRecentBookmarksControllerTest {
DefaultRecentBookmarksController(
activity = activity,
navController = navController,
homeStore = mockk()
appStore = mockk()
),
)
}

@ -18,16 +18,16 @@ import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.components.appstate.AppState
import org.mozilla.fenix.components.bookmarks.BookmarksUseCase
import org.mozilla.fenix.home.HomeFragmentAction
import org.mozilla.fenix.home.HomeFragmentState
import org.mozilla.fenix.home.HomeFragmentStore
@OptIn(ExperimentalCoroutinesApi::class)
class RecentBookmarksFeatureTest {
private val middleware = CaptureActionsMiddleware<HomeFragmentState, HomeFragmentAction>()
private val homeStore = HomeFragmentStore(middlewares = listOf(middleware))
private val middleware = CaptureActionsMiddleware<AppState, AppAction>()
private val appStore = AppStore(middlewares = listOf(middleware))
private val bookmarksUseCases: BookmarksUseCase = mockk(relaxed = true)
private val bookmark = RecentBookmark(
title = null,
@ -48,24 +48,24 @@ class RecentBookmarksFeatureTest {
fun `GIVEN no recent bookmarks WHEN feature starts THEN fetch bookmarks and notify store`() =
testDispatcher.runBlockingTest {
val feature = RecentBookmarksFeature(
homeStore,
appStore,
bookmarksUseCases,
CoroutineScope(testDispatcher),
testDispatcher
)
assertEquals(emptyList<BookmarkNode>(), homeStore.state.recentBookmarks)
assertEquals(emptyList<BookmarkNode>(), appStore.state.recentBookmarks)
feature.start()
testDispatcher.advanceUntilIdle()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
coVerify {
bookmarksUseCases.retrieveRecentBookmarks()
}
middleware.assertLastAction(HomeFragmentAction.RecentBookmarksChange::class) {
middleware.assertLastAction(AppAction.RecentBookmarksChange::class) {
assertEquals(listOf(bookmark), it.recentBookmarks)
}
}

@ -22,9 +22,9 @@ import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.R
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.home.HomeFragmentStore
@OptIn(ExperimentalCoroutinesApi::class)
class RecentTabControllerTest {
@ -35,7 +35,7 @@ class RecentTabControllerTest {
private val navController: NavController = mockk(relaxed = true)
private val selectTabUseCase: TabsUseCases = mockk(relaxed = true)
private val metrics: MetricController = mockk(relaxed = true)
private val homeStore: HomeFragmentStore = mockk()
private val appStore: AppStore = mockk()
private lateinit var store: BrowserStore
@ -52,7 +52,7 @@ class RecentTabControllerTest {
navController = navController,
metrics = metrics,
store = store,
homeStore = homeStore,
appStore = appStore,
)
)
every { navController.navigateUp() } returns true

@ -28,9 +28,9 @@ import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.home.HomeFragmentAction
import org.mozilla.fenix.home.HomeFragmentState
import org.mozilla.fenix.home.HomeFragmentStore
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.components.appstate.AppState
import org.mozilla.fenix.home.recentvisits.RecentlyVisitedItem.RecentHistoryGroup
import org.mozilla.fenix.home.recentvisits.RecentlyVisitedItem.RecentHistoryHighlight
import org.mozilla.fenix.home.recentvisits.RecentlyVisitedItemInternal.HistoryGroupInternal
@ -43,8 +43,8 @@ class RecentVisitsFeatureTest {
private lateinit var historyHightlightsStorage: PlacesHistoryStorage
private lateinit var historyMetadataStorage: HistoryMetadataStorage
private val middleware = CaptureActionsMiddleware<HomeFragmentState, HomeFragmentAction>()
private val homeStore = HomeFragmentStore(middlewares = listOf(middleware))
private val middleware = CaptureActionsMiddleware<AppState, AppAction>()
private val appStore = AppStore(middlewares = listOf(middleware))
@get:Rule
val coroutinesTestRule = MainCoroutineRule()
@ -85,7 +85,7 @@ class RecentVisitsFeatureTest {
startRecentVisitsFeature()
middleware.assertLastAction(HomeFragmentAction.RecentHistoryChange::class) {
middleware.assertLastAction(AppAction.RecentHistoryChange::class) {
assertEquals(listOf(recentHistoryGroup, recentHistoryHighlight), it.recentHistory)
}
}
@ -164,7 +164,7 @@ class RecentVisitsFeatureTest {
startRecentVisitsFeature()
middleware.assertLastAction(HomeFragmentAction.RecentHistoryChange::class) {
middleware.assertLastAction(AppAction.RecentHistoryChange::class) {
assertEquals(listOf(expectedHistoryGroup), it.recentHistory)
}
}
@ -221,7 +221,7 @@ class RecentVisitsFeatureTest {
startRecentVisitsFeature()
middleware.assertLastAction(HomeFragmentAction.RecentHistoryChange::class) {
middleware.assertLastAction(AppAction.RecentHistoryChange::class) {
assertEquals(listOf(expectedHistoryGroup1, expectedHistoryGroup2), it.recentHistory)
}
}
@ -278,7 +278,7 @@ class RecentVisitsFeatureTest {
startRecentVisitsFeature()
middleware.assertLastAction(HomeFragmentAction.RecentHistoryChange::class) {
middleware.assertLastAction(AppAction.RecentHistoryChange::class) {
assertEquals(listOf(expectedHistoryGroup2, expectedHistoryGroup1), it.recentHistory)
}
}
@ -295,7 +295,7 @@ class RecentVisitsFeatureTest {
startRecentVisitsFeature()
middleware.assertLastAction(HomeFragmentAction.RecentHistoryChange::class) {
middleware.assertLastAction(AppAction.RecentHistoryChange::class) {
assertEquals(
// The 9 most recent groups.
expectedRecentHistoryGroups,
@ -316,7 +316,7 @@ class RecentVisitsFeatureTest {
startRecentVisitsFeature()
middleware.assertLastAction(HomeFragmentAction.RecentHistoryChange::class) {
middleware.assertLastAction(AppAction.RecentHistoryChange::class) {
assertEquals(
expectedRecentHighlights,
it.recentHistory
@ -344,7 +344,7 @@ class RecentVisitsFeatureTest {
startRecentVisitsFeature()
middleware.assertLastAction(HomeFragmentAction.RecentHistoryChange::class) {
middleware.assertLastAction(AppAction.RecentHistoryChange::class) {
assertEquals(expectedItems, it.recentHistory)
}
}
@ -377,21 +377,21 @@ class RecentVisitsFeatureTest {
startRecentVisitsFeature()
middleware.assertLastAction(HomeFragmentAction.RecentHistoryChange::class) {
middleware.assertLastAction(AppAction.RecentHistoryChange::class) {
assertEquals(expectedItems, it.recentHistory)
}
}
@Test
fun `GIVEN a list of history highlights and groups WHEN updateState is called THEN emit RecentHistoryChange`() {
val feature = spyk(RecentVisitsFeature(homeStore, mockk(), mockk(), mockk(), mockk(), false))
val feature = spyk(RecentVisitsFeature(appStore, mockk(), mockk(), mockk(), mockk(), false))
val expected = List<RecentHistoryHighlight>(1) { mockk() }
every { feature.getCombinedHistory(any(), any()) } returns expected
feature.updateState(emptyList(), emptyList())
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
middleware.assertLastAction(HomeFragmentAction.RecentHistoryChange::class) {
middleware.assertLastAction(AppAction.RecentHistoryChange::class) {
assertEquals(expected, it.recentHistory)
}
}
@ -641,7 +641,7 @@ class RecentVisitsFeatureTest {
private fun startRecentVisitsFeature() {
val feature = RecentVisitsFeature(
homeStore,
appStore,
historyMetadataStorage,
lazy { historyHightlightsStorage },
CoroutineScope(testDispatcher),
@ -649,12 +649,12 @@ class RecentVisitsFeatureTest {
false
)
assertEquals(emptyList<RecentHistoryGroup>(), homeStore.state.recentHistory)
assertEquals(emptyList<RecentHistoryGroup>(), appStore.state.recentHistory)
feature.start()
testDispatcher.advanceUntilIdle()
homeStore.waitUntilIdle()
appStore.waitUntilIdle()
coVerify {
historyMetadataStorage.getHistoryMetadataSince(any())

@ -28,12 +28,11 @@ import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.R
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.home.HomeFragmentAction
import org.mozilla.fenix.home.HomeFragmentAction.RemoveRecentHistoryHighlight
import org.mozilla.fenix.home.HomeFragmentDirections
import org.mozilla.fenix.home.HomeFragmentStore
import org.mozilla.fenix.home.recentvisits.RecentlyVisitedItem.RecentHistoryGroup
import org.mozilla.fenix.home.recentvisits.RecentlyVisitedItem.RecentHistoryHighlight
@ -49,7 +48,7 @@ class RecentVisitsControllerTest {
private val metrics: MetricController = mockk(relaxed = true)
private lateinit var storage: HistoryMetadataStorage
private lateinit var homeFragmentStore: HomeFragmentStore
private lateinit var appStore: AppStore
private lateinit var store: BrowserStore
private val scope = TestCoroutineScope()
@ -61,12 +60,12 @@ class RecentVisitsControllerTest {
every { id } returns R.id.homeFragment
}
storage = mockk(relaxed = true)
homeFragmentStore = mockk(relaxed = true)
appStore = mockk(relaxed = true)
store = mockk(relaxed = true)
controller = spyk(
DefaultRecentVisitsController(
homeStore = homeFragmentStore,
appStore = appStore,
store = store,
selectOrAddTabUseCase = selectOrAddTabUseCase,
navController = navController,
@ -147,7 +146,7 @@ class RecentVisitsControllerTest {
testDispatcher.advanceUntilIdle()
verify {
store.dispatch(HistoryMetadataAction.DisbandSearchGroupAction(searchTerm = historyGroup.title))
homeFragmentStore.dispatch(HomeFragmentAction.DisbandSearchGroupAction(searchTerm = historyGroup.title))
appStore.dispatch(AppAction.DisbandSearchGroupAction(searchTerm = historyGroup.title))
metrics.track(Event.RecentSearchesGroupDeleted)
}
@ -174,7 +173,7 @@ class RecentVisitsControllerTest {
controller.handleRemoveRecentHistoryHighlight(highlightUrl)
verify {
homeFragmentStore.dispatch(RemoveRecentHistoryHighlight(highlightUrl))
appStore.dispatch(AppAction.RemoveRecentHistoryHighlight(highlightUrl))
scope.launch {
storage.deleteHistoryMetadataForUrl(highlightUrl)
}

@ -17,9 +17,9 @@ import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.components.appstate.AppState
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.home.HomeFragmentState
import org.mozilla.fenix.home.recentbookmarks.RecentBookmark
import org.mozilla.fenix.home.recenttabs.RecentTab
import org.mozilla.fenix.home.recentvisits.RecentlyVisitedItem.RecentHistoryGroup
@ -35,7 +35,7 @@ class SessionControlViewTest {
every { settings.hasShownHomeOnboardingDialog } returns false
val state = HomeFragmentState(recentBookmarks = recentBookmarks)
val state = AppState(recentBookmarks = recentBookmarks)
assertTrue(state.shouldShowHomeOnboardingDialog(settings))
}
@ -47,7 +47,7 @@ class SessionControlViewTest {
every { settings.hasShownHomeOnboardingDialog } returns false
val state = HomeFragmentState(recentTabs = recentTabs)
val state = AppState(recentTabs = recentTabs)
assertTrue(state.shouldShowHomeOnboardingDialog(settings))
}
@ -59,7 +59,7 @@ class SessionControlViewTest {
every { settings.hasShownHomeOnboardingDialog } returns false
val state = HomeFragmentState(recentHistory = historyMetadata)
val state = AppState(recentHistory = historyMetadata)
assertTrue(state.shouldShowHomeOnboardingDialog(settings))
}
@ -71,7 +71,7 @@ class SessionControlViewTest {
every { settings.hasShownHomeOnboardingDialog } returns false
val state = HomeFragmentState(pocketStories = pocketArticles)
val state = AppState(pocketStories = pocketArticles)
assertTrue(state.shouldShowHomeOnboardingDialog(settings))
}
@ -83,7 +83,7 @@ class SessionControlViewTest {
every { settings.hasShownHomeOnboardingDialog } returns true
val state = HomeFragmentState(pocketStories = pocketArticles)
val state = AppState(pocketStories = pocketArticles)
assertFalse(state.shouldShowHomeOnboardingDialog(settings))
}
@ -101,7 +101,7 @@ class SessionControlViewTest {
)
val recentTabs = listOf<RecentTab>(mockk(relaxed = true))
val state = HomeFragmentState(recentTabs = recentTabs)
val state = AppState(recentTabs = recentTabs)
controller.update(state)
@ -122,7 +122,7 @@ class SessionControlViewTest {
interactor
)
val state = HomeFragmentState()
val state = AppState()
controller.update(state)

Loading…
Cancel
Save