You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
4.0 KiB
Kotlin
123 lines
4.0 KiB
Kotlin
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
package org.mozilla.fenix.settings.deletebrowsingdata
|
|
|
|
import io.mockk.coVerify
|
|
import io.mockk.mockk
|
|
import io.mockk.spyk
|
|
import io.mockk.verify
|
|
import kotlinx.coroutines.DelicateCoroutinesApi
|
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
|
import mozilla.components.browser.icons.BrowserIcons
|
|
import mozilla.components.browser.state.action.EngineAction
|
|
import mozilla.components.browser.state.action.RecentlyClosedAction
|
|
import mozilla.components.browser.state.store.BrowserStore
|
|
import mozilla.components.concept.engine.Engine
|
|
import mozilla.components.concept.storage.HistoryStorage
|
|
import mozilla.components.feature.downloads.DownloadsUseCases
|
|
import mozilla.components.feature.tabs.TabsUseCases
|
|
import mozilla.components.support.test.rule.MainCoroutineRule
|
|
import mozilla.components.support.test.rule.runTestOnMain
|
|
import org.junit.Before
|
|
import org.junit.Rule
|
|
import org.junit.Test
|
|
import org.mozilla.fenix.components.PermissionStorage
|
|
|
|
@OptIn(ExperimentalCoroutinesApi::class)
|
|
class DefaultDeleteBrowsingDataControllerTest {
|
|
|
|
@get:Rule
|
|
val coroutinesTestRule = MainCoroutineRule()
|
|
|
|
private var removeAllTabs: TabsUseCases.RemoveAllTabsUseCase = mockk(relaxed = true)
|
|
private var removeAllDownloads: DownloadsUseCases.RemoveAllDownloadsUseCase = mockk(relaxed = true)
|
|
private var historyStorage: HistoryStorage = mockk(relaxed = true)
|
|
private var permissionStorage: PermissionStorage = mockk(relaxed = true)
|
|
private var store: BrowserStore = mockk(relaxed = true)
|
|
private var iconsStorage: BrowserIcons = mockk(relaxed = true)
|
|
private val engine: Engine = mockk(relaxed = true)
|
|
private lateinit var controller: DefaultDeleteBrowsingDataController
|
|
|
|
@Before
|
|
@OptIn(DelicateCoroutinesApi::class) // coroutineContext usage
|
|
fun setup() {
|
|
controller = DefaultDeleteBrowsingDataController(
|
|
removeAllTabs = removeAllTabs,
|
|
removeAllDownloads = removeAllDownloads,
|
|
historyStorage = historyStorage,
|
|
store = store,
|
|
permissionStorage = permissionStorage,
|
|
iconsStorage = iconsStorage,
|
|
engine = engine,
|
|
coroutineContext = coroutinesTestRule.testDispatcher,
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun deleteTabs() = runTestOnMain {
|
|
controller.deleteTabs()
|
|
|
|
verify {
|
|
removeAllTabs.invoke(false)
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun deleteBrowsingHistory() = runTestOnMain {
|
|
controller = spyk(controller)
|
|
controller.deleteBrowsingHistory()
|
|
|
|
coVerify {
|
|
historyStorage.deleteEverything()
|
|
store.dispatch(EngineAction.PurgeHistoryAction)
|
|
store.dispatch(RecentlyClosedAction.RemoveAllClosedTabAction)
|
|
iconsStorage.clear()
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun deleteCookiesAndSiteData() = runTestOnMain {
|
|
controller.deleteCookiesAndSiteData()
|
|
|
|
verify {
|
|
engine.clearData(
|
|
Engine.BrowsingData.select(
|
|
Engine.BrowsingData.COOKIES,
|
|
Engine.BrowsingData.AUTH_SESSIONS,
|
|
),
|
|
)
|
|
engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.DOM_STORAGES))
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun deleteCachedFiles() = runTestOnMain {
|
|
controller.deleteCachedFiles()
|
|
|
|
verify {
|
|
engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.ALL_CACHES))
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun deleteSitePermissions() = runTestOnMain {
|
|
controller.deleteSitePermissions()
|
|
|
|
coVerify {
|
|
engine.clearData(Engine.BrowsingData.select(Engine.BrowsingData.ALL_SITE_SETTINGS))
|
|
permissionStorage.deleteAllSitePermissions()
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun deleteDownloads() = runTestOnMain {
|
|
controller.deleteDownloads()
|
|
|
|
verify {
|
|
removeAllDownloads.invoke()
|
|
}
|
|
}
|
|
}
|