|
|
|
@ -6,7 +6,6 @@ package org.mozilla.fenix.telemetry
|
|
|
|
|
|
|
|
|
|
import androidx.test.core.app.ApplicationProvider
|
|
|
|
|
import io.mockk.mockk
|
|
|
|
|
import io.mockk.verify
|
|
|
|
|
import mozilla.components.browser.state.action.ContentAction
|
|
|
|
|
import mozilla.components.browser.state.action.EngineAction
|
|
|
|
|
import mozilla.components.browser.state.action.TabListAction
|
|
|
|
@ -30,7 +29,7 @@ import org.junit.Rule
|
|
|
|
|
import org.junit.Test
|
|
|
|
|
import org.junit.runner.RunWith
|
|
|
|
|
import org.mozilla.fenix.GleanMetrics.Events
|
|
|
|
|
import org.mozilla.fenix.components.metrics.Event
|
|
|
|
|
import org.mozilla.fenix.GleanMetrics.Metrics
|
|
|
|
|
import org.mozilla.fenix.components.metrics.MetricController
|
|
|
|
|
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
|
|
|
|
import org.mozilla.fenix.utils.Settings
|
|
|
|
@ -76,24 +75,32 @@ class TelemetryMiddlewareTest {
|
|
|
|
|
@Test
|
|
|
|
|
fun `WHEN a tab is added THEN the open tab count is updated`() {
|
|
|
|
|
assertEquals(0, settings.openTabsCount)
|
|
|
|
|
assertFalse(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
|
|
|
|
|
store.dispatch(TabListAction.AddTabAction(createTab("https://mozilla.org"))).joinBlocking()
|
|
|
|
|
assertEquals(1, settings.openTabsCount)
|
|
|
|
|
verify(exactly = 1) { metrics.track(Event.HaveOpenTabs) }
|
|
|
|
|
|
|
|
|
|
assertTrue(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
assertTrue(Metrics.hasOpenTabs.testGetValue())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
fun `WHEN a private tab is added THEN the open tab count is not updated`() {
|
|
|
|
|
assertEquals(0, settings.openTabsCount)
|
|
|
|
|
assertFalse(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
|
|
|
|
|
store.dispatch(TabListAction.AddTabAction(createTab("https://mozilla.org", private = true))).joinBlocking()
|
|
|
|
|
assertEquals(0, settings.openTabsCount)
|
|
|
|
|
verify(exactly = 1) { metrics.track(Event.HaveNoOpenTabs) }
|
|
|
|
|
|
|
|
|
|
assertTrue(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
assertFalse(Metrics.hasOpenTabs.testGetValue())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
fun `WHEN multiple tabs are added THEN the open tab count is updated`() {
|
|
|
|
|
assertEquals(0, settings.openTabsCount)
|
|
|
|
|
assertFalse(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
|
|
|
|
|
store.dispatch(
|
|
|
|
|
TabListAction.AddMultipleTabsAction(
|
|
|
|
|
listOf(
|
|
|
|
@ -104,11 +111,15 @@ class TelemetryMiddlewareTest {
|
|
|
|
|
).joinBlocking()
|
|
|
|
|
|
|
|
|
|
assertEquals(2, settings.openTabsCount)
|
|
|
|
|
verify(exactly = 1) { metrics.track(Event.HaveOpenTabs) }
|
|
|
|
|
|
|
|
|
|
assertTrue(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
assertTrue(Metrics.hasOpenTabs.testGetValue())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
fun `WHEN a tab is removed THEN the open tab count is updated`() {
|
|
|
|
|
assertFalse(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
|
|
|
|
|
store.dispatch(
|
|
|
|
|
TabListAction.AddMultipleTabsAction(
|
|
|
|
|
listOf(
|
|
|
|
@ -118,15 +129,18 @@ class TelemetryMiddlewareTest {
|
|
|
|
|
)
|
|
|
|
|
).joinBlocking()
|
|
|
|
|
assertEquals(2, settings.openTabsCount)
|
|
|
|
|
verify(exactly = 1) { metrics.track(Event.HaveOpenTabs) }
|
|
|
|
|
|
|
|
|
|
store.dispatch(TabListAction.RemoveTabAction("1")).joinBlocking()
|
|
|
|
|
assertEquals(1, settings.openTabsCount)
|
|
|
|
|
verify(exactly = 2) { metrics.track(Event.HaveOpenTabs) }
|
|
|
|
|
|
|
|
|
|
assertTrue(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
assertTrue(Metrics.hasOpenTabs.testGetValue())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
fun `WHEN all tabs are removed THEN the open tab count is updated`() {
|
|
|
|
|
assertFalse(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
|
|
|
|
|
store.dispatch(
|
|
|
|
|
TabListAction.AddMultipleTabsAction(
|
|
|
|
|
listOf(
|
|
|
|
@ -136,15 +150,21 @@ class TelemetryMiddlewareTest {
|
|
|
|
|
)
|
|
|
|
|
).joinBlocking()
|
|
|
|
|
assertEquals(2, settings.openTabsCount)
|
|
|
|
|
verify(exactly = 1) { metrics.track(Event.HaveOpenTabs) }
|
|
|
|
|
|
|
|
|
|
assertTrue(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
assertTrue(Metrics.hasOpenTabs.testGetValue())
|
|
|
|
|
|
|
|
|
|
store.dispatch(TabListAction.RemoveAllTabsAction()).joinBlocking()
|
|
|
|
|
assertEquals(0, settings.openTabsCount)
|
|
|
|
|
verify(exactly = 1) { metrics.track(Event.HaveNoOpenTabs) }
|
|
|
|
|
|
|
|
|
|
assertTrue(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
assertFalse(Metrics.hasOpenTabs.testGetValue())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
fun `WHEN all normal tabs are removed THEN the open tab count is updated`() {
|
|
|
|
|
assertFalse(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
|
|
|
|
|
store.dispatch(
|
|
|
|
|
TabListAction.AddMultipleTabsAction(
|
|
|
|
|
listOf(
|
|
|
|
@ -155,16 +175,20 @@ class TelemetryMiddlewareTest {
|
|
|
|
|
)
|
|
|
|
|
).joinBlocking()
|
|
|
|
|
assertEquals(2, settings.openTabsCount)
|
|
|
|
|
verify(exactly = 1) { metrics.track(Event.HaveOpenTabs) }
|
|
|
|
|
assertTrue(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
assertTrue(Metrics.hasOpenTabs.testGetValue())
|
|
|
|
|
|
|
|
|
|
store.dispatch(TabListAction.RemoveAllNormalTabsAction).joinBlocking()
|
|
|
|
|
assertEquals(0, settings.openTabsCount)
|
|
|
|
|
verify(exactly = 1) { metrics.track(Event.HaveNoOpenTabs) }
|
|
|
|
|
assertTrue(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
assertFalse(Metrics.hasOpenTabs.testGetValue())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
fun `WHEN tabs are restored THEN the open tab count is updated`() {
|
|
|
|
|
assertEquals(0, settings.openTabsCount)
|
|
|
|
|
assertFalse(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
|
|
|
|
|
val tabsToRestore = listOf(
|
|
|
|
|
RecoverableTab(null, TabState(url = "https://mozilla.org", id = "1")),
|
|
|
|
|
RecoverableTab(null, TabState(url = "https://firefox.com", id = "2"))
|
|
|
|
@ -177,7 +201,9 @@ class TelemetryMiddlewareTest {
|
|
|
|
|
)
|
|
|
|
|
).joinBlocking()
|
|
|
|
|
assertEquals(2, settings.openTabsCount)
|
|
|
|
|
verify(exactly = 1) { metrics.track(Event.HaveOpenTabs) }
|
|
|
|
|
|
|
|
|
|
assertTrue(Metrics.hasOpenTabs.testHasValue())
|
|
|
|
|
assertTrue(Metrics.hasOpenTabs.testGetValue())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|