For #24701 - Remove Event.wrapper for Pocket related telemetry
This commit is contained in:
parent
06fba96dfb
commit
e558ec279a
|
@ -5377,9 +5377,11 @@ pocket:
|
|||
User tapped a Pocket recommended story to be opened.
|
||||
extra_keys:
|
||||
times_shown:
|
||||
type: string
|
||||
description: |
|
||||
How many times was this story shown, including current.
|
||||
position:
|
||||
type: string
|
||||
description: |
|
||||
Position of the clicked story in the list shown.
|
||||
Uses the [row x column] matrix notation.
|
||||
|
@ -5398,12 +5400,15 @@ pocket:
|
|||
User tapped a Pocket stories category to filter stories.
|
||||
extra_keys:
|
||||
category_name:
|
||||
type: string
|
||||
description: |
|
||||
Pocket set topic name representing the just clicked category.
|
||||
selected_total:
|
||||
type: string
|
||||
description: |
|
||||
How many categories were selected before this being tapped.
|
||||
new_state:
|
||||
type: string
|
||||
description: |
|
||||
Category's new state after being tapped.
|
||||
Possible values: [selected], [deselected].
|
||||
|
|
|
@ -8,7 +8,6 @@ import mozilla.components.browser.state.search.SearchEngine
|
|||
import org.mozilla.fenix.GleanMetrics.Autoplay
|
||||
import org.mozilla.fenix.GleanMetrics.ContextMenu
|
||||
import org.mozilla.fenix.GleanMetrics.Events
|
||||
import org.mozilla.fenix.GleanMetrics.Pocket
|
||||
import org.mozilla.fenix.GleanMetrics.SearchTerms
|
||||
import java.util.Locale
|
||||
|
||||
|
@ -22,37 +21,6 @@ sealed class Event {
|
|||
object AddBookmark : Event()
|
||||
object HistoryHighlightOpened : Event()
|
||||
object HistorySearchGroupOpened : Event()
|
||||
object PocketTopSiteClicked : Event()
|
||||
object PocketTopSiteRemoved : Event()
|
||||
object PocketHomeRecsShown : Event()
|
||||
object PocketHomeRecsDiscoverMoreClicked : Event()
|
||||
object PocketHomeRecsLearnMoreClicked : Event()
|
||||
data class PocketHomeRecsStoryClicked(
|
||||
val timesShown: Long,
|
||||
val storyPosition: Pair<Int, Int>,
|
||||
) : Event() {
|
||||
override val extras: Map<Pocket.homeRecsStoryClickedKeys, String>
|
||||
get() = mapOf(
|
||||
Pocket.homeRecsStoryClickedKeys.timesShown to timesShown.toString(),
|
||||
Pocket.homeRecsStoryClickedKeys.position to "${storyPosition.first}x${storyPosition.second}"
|
||||
)
|
||||
}
|
||||
|
||||
data class PocketHomeRecsCategoryClicked(
|
||||
val categoryname: String,
|
||||
val previousSelectedCategoriesTotal: Int,
|
||||
val isSelectedNextState: Boolean
|
||||
) : Event() {
|
||||
override val extras: Map<Pocket.homeRecsCategoryClickedKeys, String>
|
||||
get() = mapOf(
|
||||
Pocket.homeRecsCategoryClickedKeys.categoryName to categoryname,
|
||||
Pocket.homeRecsCategoryClickedKeys.selectedTotal to previousSelectedCategoriesTotal.toString(),
|
||||
Pocket.homeRecsCategoryClickedKeys.newState to when (isSelectedNextState) {
|
||||
true -> "selected"
|
||||
false -> "deselected"
|
||||
}
|
||||
)
|
||||
}
|
||||
object SearchWidgetInstalled : Event()
|
||||
|
||||
object ProgressiveWebAppOpenFromHomescreenTap : Event()
|
||||
|
|
|
@ -20,7 +20,6 @@ import org.mozilla.fenix.GleanMetrics.HomeMenu
|
|||
import org.mozilla.fenix.GleanMetrics.HomeScreen
|
||||
import org.mozilla.fenix.GleanMetrics.Metrics
|
||||
import org.mozilla.fenix.GleanMetrics.Pings
|
||||
import org.mozilla.fenix.GleanMetrics.Pocket
|
||||
import org.mozilla.fenix.GleanMetrics.ProgressiveWebApp
|
||||
import org.mozilla.fenix.GleanMetrics.RecentBookmarks
|
||||
import org.mozilla.fenix.GleanMetrics.RecentSearches
|
||||
|
@ -103,29 +102,6 @@ private val Event.wrapper: EventWrapper<*>?
|
|||
{ ContextMenu.itemTappedKeys.valueOf(it) }
|
||||
)
|
||||
|
||||
is Event.PocketTopSiteClicked -> EventWrapper<NoExtraKeys>(
|
||||
{ Pocket.pocketTopSiteClicked.record(it) }
|
||||
)
|
||||
is Event.PocketTopSiteRemoved -> EventWrapper<NoExtraKeys>(
|
||||
{ Pocket.pocketTopSiteRemoved.record(it) }
|
||||
)
|
||||
is Event.PocketHomeRecsShown -> EventWrapper<NoExtraKeys>(
|
||||
{ Pocket.homeRecsShown.record(it) }
|
||||
)
|
||||
is Event.PocketHomeRecsLearnMoreClicked -> EventWrapper<NoExtraKeys>(
|
||||
{ Pocket.homeRecsLearnMoreClicked.record(it) }
|
||||
)
|
||||
is Event.PocketHomeRecsDiscoverMoreClicked -> EventWrapper<NoExtraKeys>(
|
||||
{ Pocket.homeRecsDiscoverClicked.record(it) }
|
||||
)
|
||||
is Event.PocketHomeRecsStoryClicked -> EventWrapper(
|
||||
{ Pocket.homeRecsStoryClicked.record(it) },
|
||||
{ Pocket.homeRecsStoryClickedKeys.valueOf(it) }
|
||||
)
|
||||
is Event.PocketHomeRecsCategoryClicked -> EventWrapper(
|
||||
{ Pocket.homeRecsCategoryClicked.record(it) },
|
||||
{ Pocket.homeRecsCategoryClickedKeys.valueOf(it) }
|
||||
)
|
||||
is Event.AutoPlaySettingVisited -> EventWrapper<NoExtraKeys>(
|
||||
{ Autoplay.visitedSetting.record(it) }
|
||||
)
|
||||
|
|
|
@ -386,7 +386,6 @@ class HomeFragment : Fragment() {
|
|||
homeActivity = activity,
|
||||
appStore = components.appStore,
|
||||
navController = findNavController(),
|
||||
metrics = requireComponents.analytics.metrics
|
||||
)
|
||||
)
|
||||
|
||||
|
|
|
@ -6,14 +6,14 @@ package org.mozilla.fenix.home.pocket
|
|||
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import androidx.navigation.NavController
|
||||
import mozilla.components.service.glean.private.NoExtras
|
||||
import mozilla.components.service.pocket.PocketRecommendedStory
|
||||
import org.mozilla.fenix.BrowserDirection
|
||||
import org.mozilla.fenix.GleanMetrics.Pocket
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.AppStore
|
||||
import org.mozilla.fenix.components.appstate.AppAction
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.components.metrics.MetricController
|
||||
|
||||
/**
|
||||
* Contract for how all user interactions with the Pocket recommended stories feature are to be handled.
|
||||
|
@ -67,11 +67,10 @@ internal class DefaultPocketStoriesController(
|
|||
private val homeActivity: HomeActivity,
|
||||
private val appStore: AppStore,
|
||||
private val navController: NavController,
|
||||
private val metrics: MetricController
|
||||
) : PocketStoriesController {
|
||||
override fun handleStoriesShown(storiesShown: List<PocketRecommendedStory>) {
|
||||
appStore.dispatch(AppAction.PocketStoriesShown(storiesShown))
|
||||
metrics.track(Event.PocketHomeRecsShown)
|
||||
Pocket.homeRecsShown.record(NoExtras())
|
||||
}
|
||||
|
||||
override fun handleCategoryClick(categoryClicked: PocketRecommendedStoriesCategory) {
|
||||
|
@ -80,11 +79,11 @@ internal class DefaultPocketStoriesController(
|
|||
// First check whether the category is clicked to be deselected.
|
||||
if (initialCategoriesSelections.map { it.name }.contains(categoryClicked.name)) {
|
||||
appStore.dispatch(AppAction.DeselectPocketStoriesCategory(categoryClicked.name))
|
||||
metrics.track(
|
||||
Event.PocketHomeRecsCategoryClicked(
|
||||
categoryClicked.name,
|
||||
initialCategoriesSelections.size,
|
||||
false
|
||||
Pocket.homeRecsCategoryClicked.record(
|
||||
Pocket.HomeRecsCategoryClickedExtra(
|
||||
categoryName = categoryClicked.name,
|
||||
newState = "deselected",
|
||||
selectedTotal = initialCategoriesSelections.size.toString()
|
||||
)
|
||||
)
|
||||
return
|
||||
|
@ -105,11 +104,11 @@ internal class DefaultPocketStoriesController(
|
|||
// Finally update the selection.
|
||||
appStore.dispatch(AppAction.SelectPocketStoriesCategory(categoryClicked.name))
|
||||
|
||||
metrics.track(
|
||||
Event.PocketHomeRecsCategoryClicked(
|
||||
categoryClicked.name,
|
||||
initialCategoriesSelections.size,
|
||||
true
|
||||
Pocket.homeRecsCategoryClicked.record(
|
||||
Pocket.HomeRecsCategoryClickedExtra(
|
||||
categoryName = categoryClicked.name,
|
||||
newState = "selected",
|
||||
selectedTotal = initialCategoriesSelections.size.toString()
|
||||
)
|
||||
)
|
||||
}
|
||||
|
@ -120,10 +119,10 @@ internal class DefaultPocketStoriesController(
|
|||
) {
|
||||
dismissSearchDialogIfDisplayed()
|
||||
homeActivity.openToBrowserAndLoad(storyClicked.url, true, BrowserDirection.FromHome)
|
||||
metrics.track(
|
||||
Event.PocketHomeRecsStoryClicked(
|
||||
storyClicked.timesShown.inc(),
|
||||
storyPosition
|
||||
Pocket.homeRecsStoryClicked.record(
|
||||
Pocket.HomeRecsStoryClickedExtra(
|
||||
position = "${storyPosition.first}x${storyPosition.second}",
|
||||
timesShown = storyClicked.timesShown.inc().toString()
|
||||
)
|
||||
)
|
||||
}
|
||||
|
@ -131,13 +130,13 @@ internal class DefaultPocketStoriesController(
|
|||
override fun handleLearnMoreClicked(link: String) {
|
||||
dismissSearchDialogIfDisplayed()
|
||||
homeActivity.openToBrowserAndLoad(link, true, BrowserDirection.FromHome)
|
||||
metrics.track(Event.PocketHomeRecsLearnMoreClicked)
|
||||
Pocket.homeRecsLearnMoreClicked.record(NoExtras())
|
||||
}
|
||||
|
||||
override fun handleDiscoverMoreClicked(link: String) {
|
||||
dismissSearchDialogIfDisplayed()
|
||||
homeActivity.openToBrowserAndLoad(link, true, BrowserDirection.FromHome)
|
||||
metrics.track(Event.PocketHomeRecsDiscoverMoreClicked)
|
||||
Pocket.homeRecsDiscoverClicked.record(NoExtras())
|
||||
}
|
||||
|
||||
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
|
||||
|
|
|
@ -33,6 +33,7 @@ import org.mozilla.fenix.FeatureFlags
|
|||
import org.mozilla.fenix.GleanMetrics.Collections
|
||||
import org.mozilla.fenix.GleanMetrics.Events
|
||||
import org.mozilla.fenix.GleanMetrics.Pings
|
||||
import org.mozilla.fenix.GleanMetrics.Pocket
|
||||
import org.mozilla.fenix.GleanMetrics.TopSites
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.R
|
||||
|
@ -376,7 +377,7 @@ class DefaultSessionControlController(
|
|||
override fun handleRemoveTopSiteClicked(topSite: TopSite) {
|
||||
TopSites.remove.record(NoExtras())
|
||||
when (topSite.url) {
|
||||
SupportUtils.POCKET_TRENDING_URL -> metrics.track(Event.PocketTopSiteRemoved)
|
||||
SupportUtils.POCKET_TRENDING_URL -> Pocket.pocketTopSiteRemoved.record(NoExtras())
|
||||
SupportUtils.GOOGLE_URL -> TopSites.googleTopSiteRemoved.record(NoExtras())
|
||||
SupportUtils.BAIDU_URL -> TopSites.baiduTopSiteRemoved.record(NoExtras())
|
||||
}
|
||||
|
@ -413,7 +414,7 @@ class DefaultSessionControlController(
|
|||
when (topSite.url) {
|
||||
SupportUtils.GOOGLE_URL -> TopSites.openGoogleSearchAttribution.record(NoExtras())
|
||||
SupportUtils.BAIDU_URL -> TopSites.openBaiduSearchAttribution.record(NoExtras())
|
||||
SupportUtils.POCKET_TRENDING_URL -> metrics.track(Event.PocketTopSiteClicked)
|
||||
SupportUtils.POCKET_TRENDING_URL -> Pocket.pocketTopSiteClicked.record(NoExtras())
|
||||
}
|
||||
|
||||
val availableEngines = getAvailableSearchEngines()
|
||||
|
|
|
@ -11,18 +11,29 @@ import io.mockk.spyk
|
|||
import io.mockk.verify
|
||||
import io.mockk.verifyOrder
|
||||
import mozilla.components.service.pocket.PocketRecommendedStory
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import mozilla.telemetry.glean.testing.GleanTestRule
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertNull
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.BrowserDirection
|
||||
import org.mozilla.fenix.GleanMetrics.Pocket
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.AppStore
|
||||
import org.mozilla.fenix.components.appstate.AppAction
|
||||
import org.mozilla.fenix.components.appstate.AppState
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.components.metrics.MetricController
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class) // For gleanTestRule
|
||||
class DefaultPocketStoriesControllerTest {
|
||||
val metrics: MetricController = mockk(relaxed = true)
|
||||
|
||||
@get:Rule
|
||||
val gleanTestRule = GleanTestRule(testContext)
|
||||
|
||||
@Test
|
||||
fun `GIVEN a category is selected WHEN that same category is clicked THEN deselect it and record telemetry`() {
|
||||
|
@ -37,12 +48,22 @@ class DefaultPocketStoriesControllerTest {
|
|||
)
|
||||
)
|
||||
)
|
||||
val controller = DefaultPocketStoriesController(mockk(), store, mockk(), metrics)
|
||||
val controller = DefaultPocketStoriesController(mockk(), store, mockk())
|
||||
assertFalse(Pocket.homeRecsCategoryClicked.testHasValue())
|
||||
|
||||
controller.handleCategoryClick(category2)
|
||||
verify(exactly = 0) { store.dispatch(AppAction.SelectPocketStoriesCategory(category2.name)) }
|
||||
verify { store.dispatch(AppAction.DeselectPocketStoriesCategory(category2.name)) }
|
||||
verify { metrics.track(Event.PocketHomeRecsCategoryClicked(category2.name, 1, false)) }
|
||||
|
||||
assertTrue(Pocket.homeRecsCategoryClicked.testHasValue())
|
||||
val event = Pocket.homeRecsCategoryClicked.testGetValue()
|
||||
assertEquals(1, event.size)
|
||||
assertTrue(event.single().extra!!.containsKey("category_name"))
|
||||
assertEquals(category2.name, event.single().extra!!["category_name"])
|
||||
assertTrue(event.single().extra!!.containsKey("new_state"))
|
||||
assertEquals("deselected", event.single().extra!!["new_state"])
|
||||
assertTrue(event.single().extra!!.containsKey("selected_total"))
|
||||
assertEquals("1", event.single().extra!!["selected_total"])
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -65,13 +86,23 @@ class DefaultPocketStoriesControllerTest {
|
|||
)
|
||||
)
|
||||
)
|
||||
val controller = DefaultPocketStoriesController(mockk(), store, mockk(), metrics)
|
||||
val controller = DefaultPocketStoriesController(mockk(), store, mockk())
|
||||
assertFalse(Pocket.homeRecsCategoryClicked.testHasValue())
|
||||
|
||||
controller.handleCategoryClick(PocketRecommendedStoriesCategory(newSelectedCategory.name))
|
||||
|
||||
verify { store.dispatch(AppAction.DeselectPocketStoriesCategory(oldestSelectedCategory.name)) }
|
||||
verify { store.dispatch(AppAction.SelectPocketStoriesCategory(newSelectedCategory.name)) }
|
||||
verify { metrics.track(Event.PocketHomeRecsCategoryClicked(newSelectedCategory.name, 8, true)) }
|
||||
|
||||
assertTrue(Pocket.homeRecsCategoryClicked.testHasValue())
|
||||
val event = Pocket.homeRecsCategoryClicked.testGetValue()
|
||||
assertEquals(1, event.size)
|
||||
assertTrue(event.single().extra!!.containsKey("category_name"))
|
||||
assertEquals(newSelectedCategory.name, event.single().extra!!["category_name"])
|
||||
assertTrue(event.single().extra!!.containsKey("new_state"))
|
||||
assertEquals("selected", event.single().extra!!["new_state"])
|
||||
assertTrue(event.single().extra!!.containsKey("selected_total"))
|
||||
assertEquals("8", event.single().extra!!["selected_total"])
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -93,25 +124,37 @@ class DefaultPocketStoriesControllerTest {
|
|||
)
|
||||
)
|
||||
val newSelectedCategoryName = "newSelectedCategory"
|
||||
val controller = DefaultPocketStoriesController(mockk(), store, mockk(), metrics)
|
||||
val controller = DefaultPocketStoriesController(mockk(), store, mockk())
|
||||
|
||||
controller.handleCategoryClick(PocketRecommendedStoriesCategory(newSelectedCategoryName))
|
||||
|
||||
verify(exactly = 0) { store.dispatch(AppAction.DeselectPocketStoriesCategory(oldestSelectedCategory.name)) }
|
||||
verify { store.dispatch(AppAction.SelectPocketStoriesCategory(newSelectedCategoryName)) }
|
||||
verify { metrics.track(Event.PocketHomeRecsCategoryClicked(newSelectedCategoryName, 7, true)) }
|
||||
|
||||
assertTrue(Pocket.homeRecsCategoryClicked.testHasValue())
|
||||
val event = Pocket.homeRecsCategoryClicked.testGetValue()
|
||||
assertEquals(1, event.size)
|
||||
assertTrue(event.single().extra!!.containsKey("category_name"))
|
||||
assertEquals(newSelectedCategoryName, event.single().extra!!["category_name"])
|
||||
assertTrue(event.single().extra!!.containsKey("new_state"))
|
||||
assertEquals("selected", event.single().extra!!["new_state"])
|
||||
assertTrue(event.single().extra!!.containsKey("selected_total"))
|
||||
assertEquals("7", event.single().extra!!["selected_total"])
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `WHEN new stories are shown THEN update the State and record telemetry`() {
|
||||
val store = spyk(AppStore())
|
||||
val controller = DefaultPocketStoriesController(mockk(), store, mockk(), metrics)
|
||||
val controller = DefaultPocketStoriesController(mockk(), store, mockk())
|
||||
val storiesShown: List<PocketRecommendedStory> = mockk()
|
||||
assertFalse(Pocket.homeRecsShown.testHasValue())
|
||||
|
||||
controller.handleStoriesShown(storiesShown)
|
||||
|
||||
verify { store.dispatch(AppAction.PocketStoriesShown(storiesShown)) }
|
||||
verify { metrics.track(Event.PocketHomeRecsShown) }
|
||||
assertTrue(Pocket.homeRecsShown.testHasValue())
|
||||
assertEquals(1, Pocket.homeRecsShown.testGetValue().size)
|
||||
assertNull(Pocket.homeRecsShown.testGetValue().single().extra)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -126,36 +169,49 @@ class DefaultPocketStoriesControllerTest {
|
|||
timesShown = 123
|
||||
)
|
||||
val homeActivity: HomeActivity = mockk(relaxed = true)
|
||||
val controller = DefaultPocketStoriesController(homeActivity, mockk(), mockk(relaxed = true), metrics)
|
||||
val controller = DefaultPocketStoriesController(homeActivity, mockk(), mockk(relaxed = true))
|
||||
assertFalse(Pocket.homeRecsStoryClicked.testHasValue())
|
||||
|
||||
controller.handleStoryClicked(story, 1 to 2)
|
||||
|
||||
verify { homeActivity.openToBrowserAndLoad(story.url, true, BrowserDirection.FromHome) }
|
||||
metrics.track(Event.PocketHomeRecsStoryClicked(story.timesShown, 1 to 2))
|
||||
|
||||
assertTrue(Pocket.homeRecsStoryClicked.testHasValue())
|
||||
val event = Pocket.homeRecsStoryClicked.testGetValue()
|
||||
assertEquals(1, event.size)
|
||||
assertTrue(event.single().extra!!.containsKey("position"))
|
||||
assertEquals("1x2", event.single().extra!!["position"])
|
||||
assertTrue(event.single().extra!!.containsKey("times_shown"))
|
||||
assertEquals(story.timesShown.inc().toString(), event.single().extra!!["times_shown"])
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `WHEN discover more is clicked then open that using HomeActivity and record telemetry`() {
|
||||
val link = "http://getpocket.com/explore"
|
||||
val homeActivity: HomeActivity = mockk(relaxed = true)
|
||||
val controller = DefaultPocketStoriesController(homeActivity, mockk(), mockk(relaxed = true), metrics)
|
||||
val controller = DefaultPocketStoriesController(homeActivity, mockk(), mockk(relaxed = true))
|
||||
assertFalse(Pocket.homeRecsDiscoverClicked.testHasValue())
|
||||
|
||||
controller.handleDiscoverMoreClicked(link)
|
||||
|
||||
verify { homeActivity.openToBrowserAndLoad(link, true, BrowserDirection.FromHome) }
|
||||
metrics.track(Event.PocketHomeRecsDiscoverMoreClicked)
|
||||
assertTrue(Pocket.homeRecsDiscoverClicked.testHasValue())
|
||||
assertEquals(1, Pocket.homeRecsDiscoverClicked.testGetValue().size)
|
||||
assertNull(Pocket.homeRecsDiscoverClicked.testGetValue().single().extra)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `WHEN learn more is clicked then open that using HomeActivity and record telemetry`() {
|
||||
val link = "https://www.mozilla.org/en-US/firefox/pocket/"
|
||||
val homeActivity: HomeActivity = mockk(relaxed = true)
|
||||
val controller = DefaultPocketStoriesController(homeActivity, mockk(), mockk(relaxed = true), metrics)
|
||||
val controller = DefaultPocketStoriesController(homeActivity, mockk(), mockk(relaxed = true))
|
||||
assertFalse(Pocket.homeRecsLearnMoreClicked.testHasValue())
|
||||
|
||||
controller.handleLearnMoreClicked(link)
|
||||
|
||||
verify { homeActivity.openToBrowserAndLoad(link, true, BrowserDirection.FromHome) }
|
||||
metrics.track(Event.PocketHomeRecsLearnMoreClicked)
|
||||
assertTrue(Pocket.homeRecsLearnMoreClicked.testHasValue())
|
||||
assertNull(Pocket.homeRecsLearnMoreClicked.testGetValue().single().extra)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -166,7 +222,7 @@ class DefaultPocketStoriesControllerTest {
|
|||
every { navController.currentDestination } returns mockk {
|
||||
every { id } returns R.id.searchDialogFragment
|
||||
}
|
||||
val controller = DefaultPocketStoriesController(homeActivity, mockk(), navController, metrics)
|
||||
val controller = DefaultPocketStoriesController(homeActivity, mockk(), navController)
|
||||
|
||||
controller.handleStoryClicked(story, 1 to 2)
|
||||
|
||||
|
@ -184,7 +240,7 @@ class DefaultPocketStoriesControllerTest {
|
|||
every { navController.currentDestination } returns mockk {
|
||||
every { id } returns R.id.searchDialogFragment
|
||||
}
|
||||
val controller = DefaultPocketStoriesController(homeActivity, mockk(), navController, metrics)
|
||||
val controller = DefaultPocketStoriesController(homeActivity, mockk(), navController)
|
||||
|
||||
controller.handleDiscoverMoreClicked(link)
|
||||
|
||||
|
@ -202,7 +258,7 @@ class DefaultPocketStoriesControllerTest {
|
|||
every { navController.currentDestination } returns mockk {
|
||||
every { id } returns R.id.searchDialogFragment
|
||||
}
|
||||
val controller = DefaultPocketStoriesController(homeActivity, mockk(), navController, metrics)
|
||||
val controller = DefaultPocketStoriesController(homeActivity, mockk(), navController)
|
||||
|
||||
controller.handleLearnMoreClicked(link)
|
||||
|
||||
|
@ -218,7 +274,7 @@ class DefaultPocketStoriesControllerTest {
|
|||
every { navController.currentDestination } returns mockk {
|
||||
every { id } returns R.id.searchDialogFragment
|
||||
}
|
||||
val controller = DefaultPocketStoriesController(mockk(), mockk(), navController, mockk())
|
||||
val controller = DefaultPocketStoriesController(mockk(), mockk(), navController)
|
||||
|
||||
controller.dismissSearchDialogIfDisplayed()
|
||||
|
||||
|
@ -228,7 +284,7 @@ class DefaultPocketStoriesControllerTest {
|
|||
@Test
|
||||
fun `GIVEN search dialog is not currently focused WHEN dismissSearchDialogIfDisplayed is called THEN do nothing`() {
|
||||
val navController: NavController = mockk(relaxed = true)
|
||||
val controller = DefaultPocketStoriesController(mockk(), mockk(), navController, mockk())
|
||||
val controller = DefaultPocketStoriesController(mockk(), mockk(), navController)
|
||||
|
||||
controller.dismissSearchDialogIfDisplayed()
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user