From 0229c278665867dd4e6992e5dc98f5ef0219015b Mon Sep 17 00:00:00 2001 From: Miranda Wilson Date: Tue, 26 Nov 2024 11:39:41 +0000 Subject: [PATCH] Add another test --- .../tracker/TrackerWebViewInterfaceV2Test.kt | 26 +++++++++++++++++++ .../core/tracker/TrackerWebViewInterfaceV2.kt | 17 ++++++------ 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/snowplow-tracker/src/androidTest/java/com/snowplowanalytics/snowplow/tracker/TrackerWebViewInterfaceV2Test.kt b/snowplow-tracker/src/androidTest/java/com/snowplowanalytics/snowplow/tracker/TrackerWebViewInterfaceV2Test.kt index 77eae0020..b6033dc3f 100644 --- a/snowplow-tracker/src/androidTest/java/com/snowplowanalytics/snowplow/tracker/TrackerWebViewInterfaceV2Test.kt +++ b/snowplow-tracker/src/androidTest/java/com/snowplowanalytics/snowplow/tracker/TrackerWebViewInterfaceV2Test.kt @@ -45,6 +45,7 @@ import com.snowplowanalytics.snowplow.tracker.MockNetworkConnection import com.snowplowanalytics.snowplow.util.TimeTraveler import junit.framework.TestCase import org.json.JSONException +import org.json.JSONObject import org.junit.After import org.junit.Assert.* import org.junit.Before @@ -181,6 +182,29 @@ class TrackerWebViewInterfaceV2Test { assertEquals(1, trackedEvents2.size) } + @Test + @Throws(JSONException::class, InterruptedException::class) + fun tracksEventWithEntity() { + val entities = "[{\"schema\":\"http://schema.com\",\"data\":{\"key\":\"val\"}},{\"schema\":\"http://example.com\",\"data\":{\"anotherKey\":\"anotherValue\"}}]" + webInterface!!.trackWebViewEvent( + eventName = "pp", + trackerVersion = "webview", + useragent = "Chrome", + pageUrl = "http://snowplow.com", + entities = entities + ) + Thread.sleep(200) + + assertEquals(1, trackedEvents.size) + val entity1 = firstEvent.entities[0] + val entity2 = firstEvent.entities[1] + + assertEquals("http://schema.com", entity1.map["schema"] as? String) + assertEquals("val", (entity1.map["data"] as? Map<*, *>)?.get("key")) + assertEquals("http://example.com", entity2.map["schema"] as? String) + assertEquals("anotherValue", (entity2.map["data"] as? Map<*, *>)?.get("anotherKey")) + } + // --- PRIVATE private val context: Context @@ -192,6 +216,8 @@ class TrackerWebViewInterfaceV2Test { val trackerConfig = TrackerConfiguration("appId") .installAutotracking(false) .lifecycleAutotracking(false) + .platformContext(false) + .base64encoding(false) val plugin = PluginConfiguration("plugin") plugin.afterTrack { diff --git a/snowplow-tracker/src/main/java/com/snowplowanalytics/core/tracker/TrackerWebViewInterfaceV2.kt b/snowplow-tracker/src/main/java/com/snowplowanalytics/core/tracker/TrackerWebViewInterfaceV2.kt index 96bd8966f..d58e23fb3 100644 --- a/snowplow-tracker/src/main/java/com/snowplowanalytics/core/tracker/TrackerWebViewInterfaceV2.kt +++ b/snowplow-tracker/src/main/java/com/snowplowanalytics/core/tracker/TrackerWebViewInterfaceV2.kt @@ -22,7 +22,6 @@ import com.snowplowanalytics.snowplow.event.* import com.snowplowanalytics.snowplow.payload.SelfDescribingJson import org.json.JSONArray import org.json.JSONException -import org.json.JSONObject import java.util.* /** @@ -71,11 +70,11 @@ class TrackerWebViewInterfaceV2 { } @Throws(JSONException::class) - private fun trackEvent(event: AbstractEvent, context: String?, trackers: Array?) { - if (context != null) { - val contextEntities = parseContext(context) - if (contextEntities.isNotEmpty()) { - event.entities(contextEntities) + private fun trackEvent(event: AbstractEvent, contextEntities: String?, trackers: Array?) { + if (contextEntities != null) { + val entities = parseEntities(contextEntities) + if (entities.isNotEmpty()) { + event.entities(entities) } } if (trackers.isNullOrEmpty()) { @@ -98,9 +97,9 @@ class TrackerWebViewInterfaceV2 { } @Throws(JSONException::class) - private fun parseContext(context: String): List { + private fun parseEntities(serialisedEntities: String): List { val entities: MutableList = ArrayList() - val contextJson = JSONArray(context) + val contextJson = JSONArray(serialisedEntities) for (i in 0 until contextJson.length()) { val itemJson = contextJson.getJSONObject(i) val item = jsonToMap(itemJson) @@ -114,6 +113,6 @@ class TrackerWebViewInterfaceV2 { } companion object { - const val TAG = "SnowplowWebInterface" + const val TAG = "SnowplowWebInterfaceV2" } }