From e0e7284de8acdb8a02c04a88567d5dc09438315b Mon Sep 17 00:00:00 2001 From: Ajesh R Pai Date: Fri, 8 Apr 2022 14:24:41 +0530 Subject: [PATCH 1/3] Adds: Stats properties for Quick Link ribbon clicks --- .../android/analytics/AnalyticsTracker.java | 4 ++++ .../analytics/AnalyticsTrackerNosara.java | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java index 13da7d73a2c2..a69abaf92c66 100644 --- a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java +++ b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java @@ -699,6 +699,10 @@ public enum Stat { QUICK_ACTION_PAGES_TAPPED, QUICK_ACTION_POSTS_TAPPED, QUICK_ACTION_MEDIA_TAPPED, + QUICK_LINK_RIBBON_PAGES_TAPPED, + QUICK_LINK_RIBBON_POSTS_TAPPED, + QUICK_LINK_RIBBON_MEDIA_TAPPED, + QUICK_LINK_RIBBON_STATS_TAPPED, AUTO_UPLOAD_POST_INVOKED, AUTO_UPLOAD_PAGE_INVOKED, UNPUBLISHED_REVISION_DIALOG_SHOWN, diff --git a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java index a56dff80c906..b1cbbb0d30f4 100644 --- a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java +++ b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java @@ -441,6 +441,18 @@ public void track(AnalyticsTracker.Stat stat, Map properties) { case QUICK_ACTION_MEDIA_TAPPED: predefinedEventProperties.put("button", "media"); break; + case QUICK_LINK_RIBBON_PAGES_TAPPED: + predefinedEventProperties.put("button", "pages"); + break; + case QUICK_LINK_RIBBON_POSTS_TAPPED: + predefinedEventProperties.put("button", "posts"); + break; + case QUICK_LINK_RIBBON_MEDIA_TAPPED: + predefinedEventProperties.put("button", "media"); + break; + case QUICK_LINK_RIBBON_STATS_TAPPED: + predefinedEventProperties.put("button", "stats"); + break; case WELCOME_NO_SITES_INTERSTITIAL_CREATE_NEW_SITE_TAPPED: predefinedEventProperties.put("button", "create_new_site"); break; @@ -1896,6 +1908,11 @@ public static String getEventNameForStat(AnalyticsTracker.Stat stat) { case QUICK_ACTION_POSTS_TAPPED: case QUICK_ACTION_MEDIA_TAPPED: return "quick_action_tapped"; + case QUICK_LINK_RIBBON_PAGES_TAPPED: + case QUICK_LINK_RIBBON_POSTS_TAPPED: + case QUICK_LINK_RIBBON_MEDIA_TAPPED: + case QUICK_LINK_RIBBON_STATS_TAPPED: + return "quick_action_ribbon_tapped"; case AUTO_UPLOAD_POST_INVOKED: return "auto_upload_post_invoked"; case AUTO_UPLOAD_PAGE_INVOKED: From 0274f488a1ce46d8c6884da6336a603aa06dec5c Mon Sep 17 00:00:00 2001 From: Ajesh R Pai Date: Fri, 8 Apr 2022 14:25:26 +0530 Subject: [PATCH 2/3] Adds: Logic for tracking the quick link ribbon clicks --- .../android/ui/mysite/MySiteViewModel.kt | 5 +- .../android/ui/mysite/MySiteViewModelTest.kt | 76 +++++++++++++++++++ 2 files changed, 80 insertions(+), 1 deletion(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/mysite/MySiteViewModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/mysite/MySiteViewModel.kt index 716842667773..bb6a4e591ad7 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/mysite/MySiteViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/mysite/MySiteViewModel.kt @@ -758,15 +758,16 @@ class MySiteViewModel @Inject constructor( _onNavigation.value = Event(SiteNavigationAction.OpenMedia(selectedSite)) } - // todo: @ajesh add tracking logic in the below clicks private fun onQuickLinkRibbonStatsClick() { val selectedSite = requireNotNull(selectedSiteRepository.getSelectedSite()) + trackWithTabSourceIfNeeded(Stat.QUICK_LINK_RIBBON_STATS_TAPPED) quickStartRepository.completeTask(QuickStartTask.CHECK_STATS) _onNavigation.value = Event(getStatsNavigationActionForSite(selectedSite)) } private fun onQuickLinkRibbonPagesClick() { val selectedSite = requireNotNull(selectedSiteRepository.getSelectedSite()) + trackWithTabSourceIfNeeded(Stat.QUICK_LINK_RIBBON_PAGES_TAPPED) quickStartRepository.requestNextStepOfTask(QuickStartTask.EDIT_HOMEPAGE) quickStartRepository.completeTask(QuickStartTask.REVIEW_PAGES) _onNavigation.value = Event(SiteNavigationAction.OpenPages(selectedSite)) @@ -774,11 +775,13 @@ class MySiteViewModel @Inject constructor( private fun onQuickLinkRibbonPostsClick() { val selectedSite = requireNotNull(selectedSiteRepository.getSelectedSite()) + trackWithTabSourceIfNeeded(Stat.QUICK_LINK_RIBBON_POSTS_TAPPED) _onNavigation.value = Event(SiteNavigationAction.OpenPosts(selectedSite)) } private fun onQuickLinkRibbonMediaClick() { val selectedSite = requireNotNull(selectedSiteRepository.getSelectedSite()) + trackWithTabSourceIfNeeded(Stat.QUICK_LINK_RIBBON_MEDIA_TAPPED) _onNavigation.value = Event(SiteNavigationAction.OpenMedia(selectedSite)) } diff --git a/WordPress/src/test/java/org/wordpress/android/ui/mysite/MySiteViewModelTest.kt b/WordPress/src/test/java/org/wordpress/android/ui/mysite/MySiteViewModelTest.kt index 8c4378bc9778..94e2e7658b19 100644 --- a/WordPress/src/test/java/org/wordpress/android/ui/mysite/MySiteViewModelTest.kt +++ b/WordPress/src/test/java/org/wordpress/android/ui/mysite/MySiteViewModelTest.kt @@ -2163,6 +2163,82 @@ class MySiteViewModelTest : BaseUnitTest() { assertThat(analyticsTrackerWrapper.track(Stat.QUICK_ACTION_MEDIA_TAPPED)) } + @Test + fun `given tabs are enabled, when quick link ribbon pages tapped, then track with tab source is requested`() { + initSelectedSite(isMySiteDashboardTabsFeatureFlagEnabled = true, isMySiteTabsBuildConfigEnabled = true) + + requireNotNull(quickLinkRibbonPagesClickAction).invoke() + + assertThat(trackWithTabSource.last().stat).isEqualTo(Stat.QUICK_LINK_RIBBON_PAGES_TAPPED) + } + + @Test + fun `given tabs are enabled, when quick link ribbon posts tapped, then track with tab source is requested`() { + initSelectedSite(isMySiteDashboardTabsFeatureFlagEnabled = true, isMySiteTabsBuildConfigEnabled = true) + + requireNotNull(quickLinkRibbonPostsClickAction).invoke() + + assertThat(trackWithTabSource.last().stat).isEqualTo(Stat.QUICK_LINK_RIBBON_POSTS_TAPPED) + } + + @Test + fun `given tabs are enabled, when quick link ribbon stats tapped, then track with tab source is requested`() { + initSelectedSite(isMySiteDashboardTabsFeatureFlagEnabled = true, isMySiteTabsBuildConfigEnabled = true) + + requireNotNull(quickLinkRibbonStatsClickAction).invoke() + + assertThat(trackWithTabSource.last().stat).isEqualTo(Stat.QUICK_LINK_RIBBON_STATS_TAPPED) + } + + @Test + fun `given tabs are enabled, when quick link ribbon media tapped, then track with tab source is requested`() { + initSelectedSite(isMySiteDashboardTabsFeatureFlagEnabled = true, isMySiteTabsBuildConfigEnabled = true) + + requireNotNull(quickLinkRibbonMediaClickAction).invoke() + + assertThat(trackWithTabSource.last().stat).isEqualTo(Stat.QUICK_LINK_RIBBON_MEDIA_TAPPED) + } + + @Test + fun `given tabs are disabled, when quick link ribbon stats tapped, then track with tab source is not requested`() { + initSelectedSite(isMySiteDashboardTabsFeatureFlagEnabled = false, isMySiteTabsBuildConfigEnabled = false) + + requireNotNull(quickLinkRibbonStatsClickAction).invoke() + + assertThat(trackWithTabSource).isEmpty() + assertThat(analyticsTrackerWrapper.track(Stat.QUICK_LINK_RIBBON_STATS_TAPPED)) + } + + @Test + fun `given tabs are disabled, when quick link ribbon pages tapped, then track with tab source is not requested`() { + initSelectedSite(isMySiteDashboardTabsFeatureFlagEnabled = false, isMySiteTabsBuildConfigEnabled = false) + + requireNotNull(quickLinkRibbonPagesClickAction).invoke() + + assertThat(trackWithTabSource).isEmpty() + assertThat(analyticsTrackerWrapper.track(Stat.QUICK_LINK_RIBBON_PAGES_TAPPED)) + } + + @Test + fun `given tabs are disabled, when quick link ribbon posts tapped, then track with tab source is not requested`() { + initSelectedSite(isMySiteDashboardTabsFeatureFlagEnabled = false, isMySiteTabsBuildConfigEnabled = false) + + requireNotNull(quickLinkRibbonPostsClickAction).invoke() + + assertThat(trackWithTabSource).isEmpty() + assertThat(analyticsTrackerWrapper.track(Stat.QUICK_LINK_RIBBON_POSTS_TAPPED)) + } + + @Test + fun `given tabs are disabled, when quick link ribbon media tapped, then track with tab source is not requested`() { + initSelectedSite(isMySiteDashboardTabsFeatureFlagEnabled = false, isMySiteTabsBuildConfigEnabled = false) + + requireNotNull(quickLinkRibbonMediaClickAction).invoke() + + assertThat(trackWithTabSource).isEmpty() + assertThat(analyticsTrackerWrapper.track(Stat.QUICK_LINK_RIBBON_MEDIA_TAPPED)) + } + @Test fun `given site is WPCOM, when quick link ribbon stats click, then stats screen is shown`() { whenever(accountStore.hasAccessToken()).thenReturn(true) From 65907efbcd61a0d12edfb97b1d1d2878cb6a07eb Mon Sep 17 00:00:00 2001 From: Ajesh R Pai Date: Fri, 8 Apr 2022 18:39:28 +0530 Subject: [PATCH 3/3] Remove: Redundant tests --- .../android/ui/mysite/MySiteViewModelTest.kt | 40 ------------------- 1 file changed, 40 deletions(-) diff --git a/WordPress/src/test/java/org/wordpress/android/ui/mysite/MySiteViewModelTest.kt b/WordPress/src/test/java/org/wordpress/android/ui/mysite/MySiteViewModelTest.kt index 94e2e7658b19..62576b487839 100644 --- a/WordPress/src/test/java/org/wordpress/android/ui/mysite/MySiteViewModelTest.kt +++ b/WordPress/src/test/java/org/wordpress/android/ui/mysite/MySiteViewModelTest.kt @@ -2199,46 +2199,6 @@ class MySiteViewModelTest : BaseUnitTest() { assertThat(trackWithTabSource.last().stat).isEqualTo(Stat.QUICK_LINK_RIBBON_MEDIA_TAPPED) } - @Test - fun `given tabs are disabled, when quick link ribbon stats tapped, then track with tab source is not requested`() { - initSelectedSite(isMySiteDashboardTabsFeatureFlagEnabled = false, isMySiteTabsBuildConfigEnabled = false) - - requireNotNull(quickLinkRibbonStatsClickAction).invoke() - - assertThat(trackWithTabSource).isEmpty() - assertThat(analyticsTrackerWrapper.track(Stat.QUICK_LINK_RIBBON_STATS_TAPPED)) - } - - @Test - fun `given tabs are disabled, when quick link ribbon pages tapped, then track with tab source is not requested`() { - initSelectedSite(isMySiteDashboardTabsFeatureFlagEnabled = false, isMySiteTabsBuildConfigEnabled = false) - - requireNotNull(quickLinkRibbonPagesClickAction).invoke() - - assertThat(trackWithTabSource).isEmpty() - assertThat(analyticsTrackerWrapper.track(Stat.QUICK_LINK_RIBBON_PAGES_TAPPED)) - } - - @Test - fun `given tabs are disabled, when quick link ribbon posts tapped, then track with tab source is not requested`() { - initSelectedSite(isMySiteDashboardTabsFeatureFlagEnabled = false, isMySiteTabsBuildConfigEnabled = false) - - requireNotNull(quickLinkRibbonPostsClickAction).invoke() - - assertThat(trackWithTabSource).isEmpty() - assertThat(analyticsTrackerWrapper.track(Stat.QUICK_LINK_RIBBON_POSTS_TAPPED)) - } - - @Test - fun `given tabs are disabled, when quick link ribbon media tapped, then track with tab source is not requested`() { - initSelectedSite(isMySiteDashboardTabsFeatureFlagEnabled = false, isMySiteTabsBuildConfigEnabled = false) - - requireNotNull(quickLinkRibbonMediaClickAction).invoke() - - assertThat(trackWithTabSource).isEmpty() - assertThat(analyticsTrackerWrapper.track(Stat.QUICK_LINK_RIBBON_MEDIA_TAPPED)) - } - @Test fun `given site is WPCOM, when quick link ribbon stats click, then stats screen is shown`() { whenever(accountStore.hasAccessToken()).thenReturn(true)