Speculative fixes intermittent test in DeleteAndQuitTest

upstream-sync
Jonathan Almeida 3 years ago committed by mergify[bot]
parent d235da6cc2
commit 693fbef88d

@ -11,11 +11,11 @@ import io.mockk.every
import io.mockk.mockk
import io.mockk.verifyOrder
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestCoroutineDispatcher
import kotlinx.coroutines.test.runBlockingTest
import mozilla.components.browser.icons.BrowserIcons
import mozilla.components.browser.storage.sync.PlacesHistoryStorage
import mozilla.components.concept.engine.Engine
import mozilla.components.feature.downloads.DownloadsUseCases.RemoveAllDownloadsUseCase
import mozilla.components.feature.tabs.TabsUseCases
import mozilla.components.support.test.rule.MainCoroutineRule
import org.junit.After
@ -27,15 +27,19 @@ import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.PermissionStorage
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataOnQuitType.TABS
import org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataOnQuitType.CACHE
import org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataOnQuitType.COOKIES
import org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataOnQuitType.DOWNLOADS
import org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataOnQuitType.PERMISSIONS
import org.mozilla.fenix.settings.deletebrowsingdata.DeleteBrowsingDataOnQuitType.HISTORY
import org.mozilla.fenix.utils.Settings
@OptIn(ExperimentalCoroutinesApi::class)
class DeleteAndQuitTest {
val testDispatcher = TestCoroutineDispatcher()
@get:Rule
val coroutinesTestRule = MainCoroutineRule(testDispatcher)
val coroutinesTestRule = MainCoroutineRule()
private val activity: HomeActivity = mockk(relaxed = true)
private val settings: Settings = mockk(relaxed = true)
@ -46,12 +50,14 @@ class DeleteAndQuitTest {
private val engine: Engine = mockk(relaxed = true)
private val removeAllTabsUseCases: TabsUseCases.RemoveAllTabsUseCase = mockk(relaxed = true)
private val snackbar = mockk<FenixSnackbar>(relaxed = true)
private val downloadsUseCases: RemoveAllDownloadsUseCase = mockk(relaxed = true)
@Before
fun setUp() {
every { activity.components.core.historyStorage } returns historyStorage
every { activity.components.core.permissionStorage } returns permissionStorage
every { activity.components.useCases.tabsUseCases } returns tabUseCases
every { activity.components.useCases.downloadUseCases.removeAllDownloads } returns downloadsUseCases
every { tabUseCases.removeAllTabs } returns removeAllTabsUseCases
every { activity.components.core.engine } returns engine
every { activity.components.settings } returns settings
@ -60,16 +66,19 @@ class DeleteAndQuitTest {
@After
fun cleanUp() {
testDispatcher.cleanupTestCoroutines()
coroutinesTestRule.testDispatcher.cleanupTestCoroutines()
}
@Ignore("Failing test; need more investigation.")
@Test
fun `delete only tabs and quit`() = runBlockingTest {
// When
every { settings.getDeleteDataOnQuit(DeleteBrowsingDataOnQuitType.TABS) } returns true
every { settings.getDeleteDataOnQuit(TABS) } returns true
deleteAndQuit(activity, this, snackbar)
coroutinesTestRule.testDispatcher.advanceUntilIdle()
verifyOrder {
snackbar.show()
removeAllTabsUseCases.invoke(false)
@ -94,29 +103,33 @@ class DeleteAndQuitTest {
}
}
@Ignore("Intermittently failing; will be fixed with #5406.")
@Ignore("Failing test; need more investigation.")
@Test
fun `delete everything and quit`() = runBlockingTest {
// When
DeleteBrowsingDataOnQuitType.values().forEach {
every { settings.getDeleteDataOnQuit(it) } returns true
}
every { settings.getDeleteDataOnQuit(TABS) } returns true
every { settings.getDeleteDataOnQuit(HISTORY) } returns true
every { settings.getDeleteDataOnQuit(COOKIES) } returns true
every { settings.getDeleteDataOnQuit(CACHE) } returns true
every { settings.getDeleteDataOnQuit(PERMISSIONS) } returns true
every { settings.getDeleteDataOnQuit(DOWNLOADS) } returns true
deleteAndQuit(activity, this, snackbar)
coroutinesTestRule.testDispatcher.advanceUntilIdle()
coVerify(exactly = 1) {
snackbar.show()
engine.clearData(Engine.BrowsingData.allCaches())
removeAllTabsUseCases.invoke()
engine.clearData(
Engine.BrowsingData.select(Engine.BrowsingData.ALL_SITE_SETTINGS)
)
// Delete tabs
removeAllTabsUseCases.invoke(false)
permissionStorage.deleteAllSitePermissions()
// Delete browsing data
engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.DOM_STORAGES))
historyStorage.deleteEverything()
iconsStorage.clear()
// Delete cookies
engine.clearData(
Engine.BrowsingData.select(
Engine.BrowsingData.COOKIES,
@ -124,14 +137,18 @@ class DeleteAndQuitTest {
)
)
engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.DOM_STORAGES))
// Delete cached files
engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.ALL_CACHES))
activity.finish()
}
// Delete permissions
engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.ALL_SITE_SETTINGS))
permissionStorage.deleteAllSitePermissions()
coVerify {
historyStorage.deleteEverything()
iconsStorage.clear()
// Delete downloads
downloadsUseCases.invoke()
// Finish activity
activity.finishAndRemoveTask()
}
}
}

Loading…
Cancel
Save