Closes #20533: Fix intermittent failures of HistoryControllerTest

upstream-sync
Christian Sadilek 3 years ago committed by mergify[bot]
parent 41f21fc0f8
commit f03f7c6071

@ -41,28 +41,7 @@ class HistoryControllerTest {
private val resources: Resources = mockk(relaxed = true)
private val snackbar: FenixSnackbar = mockk(relaxed = true)
private val clipboardManager: ClipboardManager = mockk(relaxed = true)
private val openInBrowser: (HistoryItem) -> Unit = mockk(relaxed = true)
private val openAndShowTray: (HistoryItem, BrowsingMode) -> Unit = mockk(relaxed = true)
private val displayDeleteAll: () -> Unit = mockk(relaxed = true)
private val invalidateOptionsMenu: () -> Unit = mockk(relaxed = true)
private val deleteHistoryItems: (Set<HistoryItem>) -> Unit = mockk(relaxed = true)
private val syncHistory: suspend () -> Unit = mockk(relaxed = true)
private val metrics: MetricController = mockk(relaxed = true)
private val controller = DefaultHistoryController(
store,
navController,
resources,
snackbar,
clipboardManager,
scope,
openInBrowser,
openAndShowTray,
displayDeleteAll,
invalidateOptionsMenu,
deleteHistoryItems,
syncHistory,
metrics
)
@Before
fun setUp() {
@ -76,36 +55,45 @@ class HistoryControllerTest {
@Test
fun onPressHistoryItemInNormalMode() {
var actualHistoryItem: HistoryItem? = null
val controller = createController(openInBrowser = {
actualHistoryItem = it
})
controller.handleOpen(historyItem)
verify {
openInBrowser(historyItem)
}
assertEquals(historyItem, actualHistoryItem)
}
@Test
fun onOpenItemInNormalMode() {
var actualHistoryItem: HistoryItem? = null
var actualBrowsingMode: BrowsingMode? = null
val controller = createController(openAndShowTray = { historyItem, browsingMode ->
actualHistoryItem = historyItem
actualBrowsingMode = browsingMode
})
controller.handleOpenInNewTab(historyItem, BrowsingMode.Normal)
verify {
openAndShowTray(historyItem, BrowsingMode.Normal)
}
assertEquals(historyItem, actualHistoryItem)
assertEquals(BrowsingMode.Normal, actualBrowsingMode)
}
@Test
fun onOpenItemInPrivateMode() {
var actualHistoryItem: HistoryItem? = null
var actualBrowsingMode: BrowsingMode? = null
val controller = createController(openAndShowTray = { historyItem, browsingMode ->
actualHistoryItem = historyItem
actualBrowsingMode = browsingMode
})
controller.handleOpenInNewTab(historyItem, BrowsingMode.Private)
verify {
openAndShowTray(historyItem, BrowsingMode.Private)
}
assertEquals(historyItem, actualHistoryItem)
assertEquals(BrowsingMode.Private, actualBrowsingMode)
}
@Test
fun onPressHistoryItemInEditMode() {
every { state.mode } returns HistoryFragmentState.Mode.Editing(setOf())
controller.handleSelect(historyItem)
createController().handleSelect(historyItem)
verify {
store.dispatch(HistoryFragmentAction.AddItemForRemoval(historyItem))
@ -116,7 +104,7 @@ class HistoryControllerTest {
fun onPressSelectedHistoryItemInEditMode() {
every { state.mode } returns HistoryFragmentState.Mode.Editing(setOf(historyItem))
controller.handleDeselect(historyItem)
createController().handleDeselect(historyItem)
verify {
store.dispatch(HistoryFragmentAction.RemoveItemForRemoval(historyItem))
@ -127,7 +115,7 @@ class HistoryControllerTest {
fun onSelectHistoryItemDuringSync() {
every { state.mode } returns HistoryFragmentState.Mode.Syncing
controller.handleSelect(historyItem)
createController().handleSelect(historyItem)
verify(exactly = 0) {
store.dispatch(HistoryFragmentAction.AddItemForRemoval(historyItem))
@ -138,14 +126,14 @@ class HistoryControllerTest {
fun onBackPressedInNormalMode() {
every { state.mode } returns HistoryFragmentState.Mode.Normal
assertFalse(controller.handleBackPressed())
assertFalse(createController().handleBackPressed())
}
@Test
fun onBackPressedInEditMode() {
every { state.mode } returns HistoryFragmentState.Mode.Editing(setOf())
assertTrue(controller.handleBackPressed())
assertTrue(createController().handleBackPressed())
verify {
store.dispatch(HistoryFragmentAction.ExitEditMode)
}
@ -153,38 +141,43 @@ class HistoryControllerTest {
@Test
fun onModeSwitched() {
controller.handleModeSwitched()
var invalidateOptionsMenuInvoked = false
val controller = createController(invalidateOptionsMenu = {
invalidateOptionsMenuInvoked = true
})
verify {
invalidateOptionsMenu.invoke()
}
controller.handleModeSwitched()
assertTrue(invalidateOptionsMenuInvoked)
}
@Test
fun onDeleteAll() {
controller.handleDeleteAll()
var displayDeleteAllInvoked = false
val controller = createController(displayDeleteAll = {
displayDeleteAllInvoked = true
})
verify {
displayDeleteAll.invoke()
}
controller.handleDeleteAll()
assertTrue(displayDeleteAllInvoked)
}
@Test
fun onDeleteSome() {
val itemsToDelete = setOf(historyItem)
var actualItems: Set<HistoryItem>? = null
val controller = createController(deleteHistoryItems = { items ->
actualItems = items
})
controller.handleDeleteSome(itemsToDelete)
verify {
deleteHistoryItems(itemsToDelete)
}
assertEquals(itemsToDelete, actualItems)
}
@Test
fun onCopyItem() {
val clipdata = slot<ClipData>()
controller.handleCopyUrl(historyItem)
createController().handleCopyUrl(historyItem)
verify {
clipboardManager.setPrimaryClip(capture(clipdata))
@ -198,7 +191,7 @@ class HistoryControllerTest {
@Test
@Suppress("UNCHECKED_CAST")
fun onShareItem() {
controller.handleShare(historyItem)
createController().handleShare(historyItem)
verify {
navController.navigate(directionsEq(
@ -211,16 +204,42 @@ class HistoryControllerTest {
@Test
fun onRequestSync() {
controller.handleRequestSync()
verify(exactly = 2) {
store.dispatch(any())
}
var syncHistoryInvoked = false
createController(syncHistory = {
syncHistoryInvoked = true
}).handleRequestSync()
coVerifyOrder {
store.dispatch(HistoryFragmentAction.StartSync)
syncHistory.invoke()
store.dispatch(HistoryFragmentAction.FinishSync)
}
assertTrue(syncHistoryInvoked)
}
@Suppress("LongParameterList")
private fun createController(
openInBrowser: (HistoryItem) -> Unit = { _ -> },
openAndShowTray: (HistoryItem, BrowsingMode) -> Unit = { _, _ -> },
displayDeleteAll: () -> Unit = { },
invalidateOptionsMenu: () -> Unit = { },
deleteHistoryItems: (Set<HistoryItem>) -> Unit = { _ -> },
syncHistory: suspend () -> Unit = { }
): HistoryController {
return DefaultHistoryController(
store,
navController,
resources,
snackbar,
clipboardManager,
scope,
openInBrowser,
openAndShowTray,
displayDeleteAll,
invalidateOptionsMenu,
deleteHistoryItems,
syncHistory,
metrics
)
}
}

Loading…
Cancel
Save