From 9a3842225117adbbb3287e6a69895f2d3641bbce Mon Sep 17 00:00:00 2001 From: Arnaud Barisain-Monrose Date: Tue, 22 Dec 2020 16:29:51 +0100 Subject: [PATCH] mixpanel: set "batch" as "$source" (integration id) add utm_ prefix to all UTM properties update tests to match --- .../mixpanel/MixpanelDispatcher.java | 14 +- .../mixpanel/MixpanelDispatcherTest.java | 131 +++++++++--------- 2 files changed, 76 insertions(+), 69 deletions(-) diff --git a/mixpanel-dispatcher/src/main/java/com/batch/android/dispatcher/mixpanel/MixpanelDispatcher.java b/mixpanel-dispatcher/src/main/java/com/batch/android/dispatcher/mixpanel/MixpanelDispatcher.java index f60b774..206bbef 100644 --- a/mixpanel-dispatcher/src/main/java/com/batch/android/dispatcher/mixpanel/MixpanelDispatcher.java +++ b/mixpanel-dispatcher/src/main/java/com/batch/android/dispatcher/mixpanel/MixpanelDispatcher.java @@ -23,10 +23,11 @@ public class MixpanelDispatcher implements BatchEventDispatcher /** * Mixpanel UTM tag keys */ - private static final String CAMPAIGN = "campaign"; - private static final String SOURCE = "source"; - private static final String MEDIUM = "medium"; - private static final String CONTENT = "content"; + private static final String CAMPAIGN = "utm_campaign"; + private static final String SOURCE = "utm_source"; + private static final String MEDIUM = "utm_medium"; + private static final String CONTENT = "utm_content"; + private static final String INTEGRATION_ID = "$source"; /** * UTM tag keys @@ -53,7 +54,7 @@ public class MixpanelDispatcher implements BatchEventDispatcher private static final String MESSAGING_CLICK_NAME = "batch_in_app_click"; private static final String UNKNOWN_EVENT_NAME = "batch_unknown"; - private MixpanelAPI mixpanelInstance = null; + MixpanelAPI mixpanelInstance = null; MixpanelDispatcher() { @@ -93,6 +94,7 @@ public void dispatchEvent(@NonNull Batch.EventDispatcher.Type type, } else if (type.isMessagingEvent()) { mixpanelParams = getInAppParams(payload); } + mixpanelParams.put(INTEGRATION_ID, "batch"); if (mixpanelInstance != null) { mixpanelInstance.trackMap(getMixpanelEventName(type), mixpanelParams); @@ -107,7 +109,6 @@ private static Map getInAppParams(Batch.EventDispatcher.Payload { Map mixpanelParams = new HashMap<>(); mixpanelParams.put(CAMPAIGN, payload.getTrackingId()); - mixpanelParams.put(SOURCE, "batch"); mixpanelParams.put(MEDIUM, "in-app"); mixpanelParams.put(BATCH_TRACKING_ID, payload.getTrackingId()); @@ -135,7 +136,6 @@ private static Map getInAppParams(Batch.EventDispatcher.Payload private static Map getNotificationParams(Batch.EventDispatcher.Payload payload) { Map mixpanelParams = new HashMap(); - mixpanelParams.put(SOURCE, "batch"); mixpanelParams.put(MEDIUM, "push"); String deeplink = payload.getDeeplink(); diff --git a/mixpanel-dispatcher/src/test/java/com/batch/android/dispatcher/mixpanel/MixpanelDispatcherTest.java b/mixpanel-dispatcher/src/test/java/com/batch/android/dispatcher/mixpanel/MixpanelDispatcherTest.java index b1d8125..9698d32 100644 --- a/mixpanel-dispatcher/src/test/java/com/batch/android/dispatcher/mixpanel/MixpanelDispatcherTest.java +++ b/mixpanel-dispatcher/src/test/java/com/batch/android/dispatcher/mixpanel/MixpanelDispatcherTest.java @@ -49,7 +49,7 @@ public void setUp() { mixpanel = PowerMockito.mock(MixpanelAPI.class); mixpanelDispatcher = new MixpanelDispatcher(); - mixpanelDispatcher.setMixpanelInstance(mixpanel); + mixpanelDispatcher.mixpanelInstance = mixpanel; } @Test @@ -60,8 +60,8 @@ public void testNotificationNoData() { new HashMap()); Map expected = new HashMap(); - expected.put("medium", "push"); - expected.put("source", "batch"); + expected.put("utm_medium", "push"); + expected.put("$source", "batch"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.NOTIFICATION_DISPLAY, payload); Mockito.verify(mixpanel).trackMap(Mockito.eq("batch_notification_display"), Mockito.eq(expected)); @@ -75,10 +75,11 @@ public void testNotificationDeeplinkQueryVars() { new HashMap()); Map expected = new HashMap(); - expected.put("medium", "push-batch"); - expected.put("source", "batchsdk"); - expected.put("campaign", "yoloswag"); - expected.put("content", "button1"); + expected.put("$source", "batch"); + expected.put("utm_medium", "push-batch"); + expected.put("utm_source", "batchsdk"); + expected.put("utm_campaign", "yoloswag"); + expected.put("utm_content", "button1"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.NOTIFICATION_DISPLAY, payload); Mockito.verify(mixpanel).trackMap(Mockito.eq("batch_notification_display"), mapEq(expected)); @@ -92,10 +93,11 @@ public void testNotificationDeeplinkQueryVarsEncode() { new HashMap()); Map expected = new HashMap(); - expected.put("medium", "push-batch"); - expected.put("source", "[batchsdk]"); - expected.put("campaign", "yoloswag"); - expected.put("content", "button1"); + expected.put("$source", "batch"); + expected.put("utm_medium", "push-batch"); + expected.put("utm_source", "[batchsdk]"); + expected.put("utm_campaign", "yoloswag"); + expected.put("utm_content", "button1"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.NOTIFICATION_DISPLAY, payload); Mockito.verify(mixpanel).trackMap(Mockito.eq("batch_notification_display"), mapEq(expected)); @@ -109,10 +111,11 @@ public void testNotificationDeeplinkFragmentVars() { new HashMap()); Map expected = new HashMap(); - expected.put("medium", "pushbatch01"); - expected.put("source", "batch-sdk"); - expected.put("campaign", "154879548754"); - expected.put("content", "notif001"); + expected.put("$source", "batch"); + expected.put("utm_medium", "pushbatch01"); + expected.put("utm_source", "batch-sdk"); + expected.put("utm_campaign", "154879548754"); + expected.put("utm_content", "notif001"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.NOTIFICATION_OPEN, payload); Mockito.verify(mixpanel).trackMap(Mockito.eq("batch_notification_open"), mapEq(expected)); @@ -126,10 +129,11 @@ public void testNotificationDeeplinkFragmentVarsEncode() { new HashMap()); Map expected = new HashMap(); - expected.put("medium", "pushbatch01"); - expected.put("source", "[batch-sdk]"); - expected.put("campaign", "154879548754"); - expected.put("content", "notif001"); + expected.put("$source", "batch"); + expected.put("utm_medium", "pushbatch01"); + expected.put("utm_source", "[batch-sdk]"); + expected.put("utm_campaign", "154879548754"); + expected.put("utm_content", "notif001"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.NOTIFICATION_OPEN, payload); Mockito.verify(mixpanel).trackMap(Mockito.eq("batch_notification_open"), mapEq(expected)); @@ -148,9 +152,10 @@ public void testNotificationCustomPayload() { customPayload); Map expected = new HashMap(); - expected.put("medium", "654987"); - expected.put("source", "jesuisuntest"); - expected.put("campaign", "heinhein"); + expected.put("$source", "batch"); + expected.put("utm_medium", "654987"); + expected.put("utm_source", "jesuisuntest"); + expected.put("utm_campaign", "heinhein"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.NOTIFICATION_DISPLAY, payload); Mockito.verify(mixpanel).trackMap(Mockito.eq("batch_notification_display"), mapEq(expected)); @@ -166,10 +171,11 @@ public void testNotificationDeeplinkPriority() { customPayload); Map expected = new HashMap(); - expected.put("medium", "654987"); - expected.put("source", "batchsdk"); - expected.put("campaign", "yoloswag"); - expected.put("content", "notif001"); + expected.put("$source", "batch"); + expected.put("utm_medium", "654987"); + expected.put("utm_source", "batchsdk"); + expected.put("utm_campaign", "yoloswag"); + expected.put("utm_content", "notif001"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.NOTIFICATION_OPEN, payload); Mockito.verify(mixpanel).trackMap(Mockito.eq("batch_notification_open"), mapEq(expected)); @@ -183,9 +189,10 @@ public void testNotificationDeeplinkNonTrimmed() { customPayload); Map expected = new HashMap(); - expected.put("medium", "push"); - expected.put("source", "batchsdk"); - expected.put("campaign", "yoloswag"); + expected.put("$source", "batch"); + expected.put("utm_medium", "push"); + expected.put("utm_source", "batchsdk"); + expected.put("utm_campaign", "yoloswag"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.NOTIFICATION_OPEN, payload); Mockito.verify(mixpanel).trackMap(Mockito.eq("batch_notification_open"), mapEq(expected)); @@ -200,9 +207,9 @@ public void testNotificationDismissCampaign() { customPayload); Map expected = new HashMap(); - expected.put("medium", "push"); - expected.put("source", "batch"); - expected.put("campaign", "yoloswag"); + expected.put("utm_medium", "push"); + expected.put("$source", "batch"); + expected.put("utm_campaign", "yoloswag"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.NOTIFICATION_DISMISS, payload); Mockito.verify(mixpanel).trackMap(Mockito.eq("batch_notification_dismiss"), mapEq(expected)); @@ -216,9 +223,9 @@ public void testInAppNoData() { new HashMap()); Map expected = new HashMap(); - expected.put("medium", "in-app"); - expected.put("source", "batch"); - expected.put("campaign", null); + expected.put("utm_medium", "in-app"); + expected.put("$source", "batch"); + expected.put("utm_campaign", null); expected.put("batch_tracking_id", null); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.MESSAGING_SHOW, payload); @@ -234,10 +241,10 @@ public void testInAppShowUppercaseQueryVars() { Map expected = new HashMap(); expected.put("batch_tracking_id", null); - expected.put("medium", "in-app"); - expected.put("source", "batch"); - expected.put("campaign", null); - expected.put("content", "jesuisuncontent"); + expected.put("utm_medium", "in-app"); + expected.put("$source", "batch"); + expected.put("utm_campaign", null); + expected.put("utm_content", "jesuisuncontent"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.MESSAGING_SHOW, payload); Mockito.verify(mixpanel).trackMap(Mockito.eq("batch_in_app_show"), mapEq(expected)); @@ -252,10 +259,10 @@ public void testInAppShowUppercaseFragmentVars() { Map expected = new HashMap(); expected.put("batch_tracking_id", null); - expected.put("medium", "in-app"); - expected.put("source", "batch"); - expected.put("campaign", null); - expected.put("content", "jesuisuncontent"); + expected.put("utm_medium", "in-app"); + expected.put("$source", "batch"); + expected.put("utm_campaign", null); + expected.put("utm_content", "jesuisuncontent"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.MESSAGING_SHOW, payload); Mockito.verify(mixpanel).trackMap(Mockito.eq("batch_in_app_show"), mapEq(expected)); @@ -269,9 +276,9 @@ public void testInAppTrackingId() { new HashMap()); Map expected = new HashMap(); - expected.put("medium", "in-app"); - expected.put("source", "batch"); - expected.put("campaign", "jesuisunid"); + expected.put("utm_medium", "in-app"); + expected.put("$source", "batch"); + expected.put("utm_campaign", "jesuisunid"); expected.put("batch_tracking_id", "jesuisunid"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.MESSAGING_CLICK, payload); @@ -286,11 +293,11 @@ public void testInAppDeeplinkContentQueryVars() { new HashMap()); Map expected = new HashMap(); - expected.put("medium", "in-app"); - expected.put("source", "batch"); - expected.put("campaign", "jesuisunid"); + expected.put("utm_medium", "in-app"); + expected.put("$source", "batch"); + expected.put("utm_campaign", "jesuisunid"); expected.put("batch_tracking_id", "jesuisunid"); - expected.put("content", "jesuisuncontent"); + expected.put("utm_content", "jesuisuncontent"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.MESSAGING_CLOSE, payload); Mockito.verify(mixpanel).trackMap(Mockito.eq("batch_in_app_close"), mapEq(expected)); @@ -304,11 +311,11 @@ public void testInAppDeeplinkFragmentQueryVars() { new HashMap()); Map expected = new HashMap(); - expected.put("medium", "in-app"); - expected.put("source", "batch"); - expected.put("campaign", "jesuisunid"); + expected.put("utm_medium", "in-app"); + expected.put("$source", "batch"); + expected.put("utm_campaign", "jesuisunid"); expected.put("batch_tracking_id", "jesuisunid"); - expected.put("content", "jesuisuncontent00587"); + expected.put("utm_content", "jesuisuncontent00587"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.MESSAGING_SHOW, payload); Mockito.verify(mixpanel).trackMap(Mockito.eq("batch_in_app_show"), mapEq(expected)); @@ -322,11 +329,11 @@ public void testInAppDeeplinkContentPriority() { new HashMap()); Map expected = new HashMap(); - expected.put("medium", "in-app"); - expected.put("source", "batch"); - expected.put("campaign", "jesuisunid"); + expected.put("utm_medium", "in-app"); + expected.put("$source", "batch"); + expected.put("utm_campaign", "jesuisunid"); expected.put("batch_tracking_id", "jesuisunid"); - expected.put("content", "jesuisuncontent002"); + expected.put("utm_content", "jesuisuncontent002"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.MESSAGING_AUTO_CLOSE, payload); Mockito.verify(mixpanel).trackMap(Mockito.eq("batch_in_app_auto_close"), mapEq(expected)); @@ -340,11 +347,11 @@ public void testInAppDeeplinkContentNoId() { new HashMap()); Map expected = new HashMap(); - expected.put("medium", "in-app"); - expected.put("source", "batch"); - expected.put("campaign", null); + expected.put("utm_medium", "in-app"); + expected.put("$source", "batch"); + expected.put("utm_campaign", null); expected.put("batch_tracking_id", null); - expected.put("content", "jesuisuncontent"); + expected.put("utm_content", "jesuisuncontent"); mixpanelDispatcher.dispatchEvent(Batch.EventDispatcher.Type.MESSAGING_CLICK, payload); Mockito.verify(mixpanel).trackMap(Mockito.eq("batch_in_app_click"), mapEq(expected));