161 lines
4.9 KiB
Kotlin
161 lines
4.9 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.trackingprotection
|
|
|
|
import org.junit.Assert.assertEquals
|
|
import org.junit.Assert.assertNotSame
|
|
import kotlinx.coroutines.runBlocking
|
|
import mozilla.components.concept.engine.content.blocking.Tracker
|
|
import org.junit.Test
|
|
|
|
class TrackingProtectionStoreTest {
|
|
@Test
|
|
fun enterDetailsMode() = runBlocking {
|
|
val initialState = defaultState()
|
|
val store = TrackingProtectionStore(initialState)
|
|
|
|
store.dispatch(
|
|
TrackingProtectionAction.EnterDetailsMode(
|
|
TrackingProtectionCategory.FINGERPRINTERS,
|
|
true
|
|
)
|
|
)
|
|
.join()
|
|
assertNotSame(initialState, store.state)
|
|
assertEquals(
|
|
store.state.mode,
|
|
TrackingProtectionState.Mode.Details(TrackingProtectionCategory.FINGERPRINTERS, true)
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun exitDetailsMode() = runBlocking {
|
|
val initialState = detailsState()
|
|
val store = TrackingProtectionStore(initialState)
|
|
|
|
store.dispatch(TrackingProtectionAction.ExitDetailsMode).join()
|
|
assertNotSame(initialState, store.state)
|
|
assertEquals(
|
|
store.state.mode,
|
|
TrackingProtectionState.Mode.Normal
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun trackerBlockingChanged() = runBlocking {
|
|
val initialState = defaultState()
|
|
val store = TrackingProtectionStore(initialState)
|
|
|
|
store.dispatch(TrackingProtectionAction.TrackerBlockingChanged(false)).join()
|
|
assertNotSame(initialState, store.state)
|
|
assertEquals(
|
|
store.state.mode,
|
|
TrackingProtectionState.Mode.Normal
|
|
)
|
|
assertEquals(
|
|
false,
|
|
store.state.isTrackingProtectionEnabled
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun trackerListChanged() = runBlocking {
|
|
val initialState = defaultState()
|
|
val store = TrackingProtectionStore(initialState)
|
|
val tracker = Tracker("url", listOf())
|
|
|
|
store.dispatch(TrackingProtectionAction.TrackerListChange(listOf(tracker))).join()
|
|
assertNotSame(initialState, store.state)
|
|
assertEquals(
|
|
listOf(tracker),
|
|
store.state.listTrackers
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun trackerLoadedListChanged() = runBlocking {
|
|
val initialState = defaultState()
|
|
val store = TrackingProtectionStore(initialState)
|
|
val tracker = Tracker("url", listOf())
|
|
|
|
store.dispatch(TrackingProtectionAction.TrackerLoadedListChange(listOf(tracker))).join()
|
|
assertNotSame(initialState, store.state)
|
|
assertEquals(
|
|
listOf(tracker),
|
|
store.state.listTrackersLoaded
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun urlChanged() = runBlocking {
|
|
val initialState = defaultState()
|
|
val store = TrackingProtectionStore(initialState)
|
|
|
|
store.dispatch(TrackingProtectionAction.UrlChange("newURL")).join()
|
|
assertNotSame(initialState, store.state)
|
|
assertEquals(
|
|
"newURL",
|
|
store.state.url
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun onChange() = runBlocking {
|
|
val initialState = defaultState()
|
|
val store = TrackingProtectionStore(initialState)
|
|
val tracker = Tracker("url", listOf())
|
|
|
|
store.dispatch(
|
|
TrackingProtectionAction.Change(
|
|
"newURL",
|
|
false,
|
|
listOf(tracker),
|
|
listOf(),
|
|
TrackingProtectionState.Mode.Details(
|
|
TrackingProtectionCategory.FINGERPRINTERS,
|
|
true
|
|
)
|
|
)
|
|
).join()
|
|
assertNotSame(initialState, store.state)
|
|
assertEquals(
|
|
"newURL",
|
|
store.state.url
|
|
)
|
|
assertEquals(
|
|
false,
|
|
store.state.isTrackingProtectionEnabled
|
|
)
|
|
assertEquals(
|
|
listOf<Tracker>(),
|
|
store.state.listTrackersLoaded
|
|
)
|
|
assertEquals(
|
|
listOf(tracker),
|
|
store.state.listTrackers
|
|
)
|
|
assertEquals(
|
|
TrackingProtectionState.Mode.Details(TrackingProtectionCategory.FINGERPRINTERS, true),
|
|
store.state.mode
|
|
)
|
|
}
|
|
|
|
private fun defaultState(): TrackingProtectionState = TrackingProtectionState(
|
|
url = "www.mozilla.org",
|
|
isTrackingProtectionEnabled = true,
|
|
listTrackers = listOf(),
|
|
listTrackersLoaded = listOf(),
|
|
mode = TrackingProtectionState.Mode.Normal
|
|
)
|
|
|
|
private fun detailsState(): TrackingProtectionState = TrackingProtectionState(
|
|
url = "www.mozilla.org",
|
|
isTrackingProtectionEnabled = true,
|
|
listTrackers = listOf(),
|
|
listTrackersLoaded = listOf(),
|
|
mode = TrackingProtectionState.Mode.Details(TrackingProtectionCategory.CRYPTOMINERS, true)
|
|
)
|
|
}
|