@@ -16,9 +16,11 @@ package com.snowplowanalytics.snowplow.tracker
16
16
import android.content.Context
17
17
import androidx.test.ext.junit.runners.AndroidJUnit4
18
18
import androidx.test.platform.app.InstrumentationRegistry
19
+ import com.google.android.gms.common.internal.safeparcel.SafeParcelable.Param
19
20
import com.snowplowanalytics.core.constants.Parameters
20
21
import com.snowplowanalytics.core.constants.TrackerConstants
21
22
import com.snowplowanalytics.core.emitter.Executor
23
+ import com.snowplowanalytics.core.tracker.Tracker
22
24
import com.snowplowanalytics.core.tracker.TrackerWebViewInterfaceV2
23
25
import com.snowplowanalytics.snowplow.Snowplow.createTracker
24
26
import com.snowplowanalytics.snowplow.Snowplow.removeAllTrackers
@@ -59,18 +61,26 @@ class TrackerWebViewInterfaceV2Test {
59
61
60
62
@Test
61
63
@Throws(JSONException ::class , InterruptedException ::class )
62
- fun tracksPagePingEvent () {
64
+ fun tracksEventWithAllOptions () {
65
+ val data = " {\" schema\" :\" iglu:etc\" ,\" data\" :{\" key\" :\" val\" }}"
66
+
63
67
webInterface!! .trackWebViewEvent(
64
- eventName = " pp " ,
68
+ eventName = " ue " ,
65
69
trackerVersion = " webview" ,
66
- useragent = " Firefox" ,
70
+ useragent = " Chrome" ,
71
+ selfDescribingEventData = data,
67
72
pageUrl = " http://snowplow.com" ,
68
73
pageTitle = " Snowplow" ,
69
74
referrer = " http://google.com" ,
70
75
pingXOffsetMin = 10 ,
71
76
pingXOffsetMax = 20 ,
72
77
pingYOffsetMin = 30 ,
73
- pingYOffsetMax = 40
78
+ pingYOffsetMax = 40 ,
79
+ category = " cat" ,
80
+ action = " act" ,
81
+ property = " prop" ,
82
+ label = " lbl" ,
83
+ value = 10.0
74
84
)
75
85
76
86
Thread .sleep(200 )
@@ -80,69 +90,27 @@ class TrackerWebViewInterfaceV2Test {
80
90
81
91
val request = networkConnection.allRequests[0 ]
82
92
val payload = request.payload.map
83
-
84
- assertEquals(" pp " , payload[Parameters .EVENT ])
93
+
94
+ assertEquals(" ue " , payload[Parameters .EVENT ])
85
95
assertEquals(" webview" , payload[Parameters .TRACKER_VERSION ])
86
- assertEquals(" Firefox " , payload[Parameters .USERAGENT ])
96
+ assertEquals(" Chrome " , payload[Parameters .USERAGENT ])
87
97
assertEquals(" http://snowplow.com" , payload[Parameters .PAGE_URL ])
88
98
assertEquals(" Snowplow" , payload[Parameters .PAGE_TITLE ])
89
99
assertEquals(" http://google.com" , payload[Parameters .PAGE_REFR ])
90
100
assertEquals(" 10" , payload[Parameters .PING_XOFFSET_MIN ])
91
101
assertEquals(" 20" , payload[Parameters .PING_XOFFSET_MAX ])
92
102
assertEquals(" 30" , payload[Parameters .PING_YOFFSET_MIN ])
93
103
assertEquals(" 40" , payload[Parameters .PING_YOFFSET_MAX ])
94
- }
95
-
96
- @Test
97
- @Throws(JSONException ::class , InterruptedException ::class )
98
- fun tracksStructuredEvent () {
99
- webInterface!! .trackWebViewEvent(
100
- eventName = " se" ,
101
- trackerVersion = " webview2" ,
102
- useragent = " Firefox" ,
103
- category = " cat" ,
104
- action = " act" ,
105
- property = " prop" ,
106
- label = " lbl" ,
107
- value = 10.0
108
- )
109
-
110
- Thread .sleep(200 )
111
- waitForEvents(networkConnection, 1 )
112
-
113
- assertEquals(1 , networkConnection.countRequests())
114
-
115
- val request = networkConnection.allRequests[0 ]
116
- val payload = request.payload.map
117
-
118
- assertEquals(" se" , payload[Parameters .EVENT ])
119
- assertEquals(" webview2" , payload[Parameters .TRACKER_VERSION ])
120
- assertEquals(" Firefox" , payload[Parameters .USERAGENT ])
121
104
assertEquals(" cat" , payload[Parameters .SE_CATEGORY ])
122
105
assertEquals(" act" , payload[Parameters .SE_ACTION ])
123
106
assertEquals(" prop" , payload[Parameters .SE_PROPERTY ])
124
107
assertEquals(" lbl" , payload[Parameters .SE_LABEL ])
125
108
assertEquals(" 10.0" , payload[Parameters .SE_VALUE ])
126
- }
127
-
128
- @Test
129
- @Throws(JSONException ::class , InterruptedException ::class )
130
- fun tracksSelfDescribingEvent () {
131
- // val data = "[{\"schema\":\"http://schema.com\",\"data\":{\"key\":\"val\"}}]"
132
- // webInterface!!.trackWebViewEvent(
133
- // eventName = "ue",
134
- // trackerVersion = "webview2",
135
- // useragent = "Firefox",
136
- // selfDescribingEventData = data
137
- // )
138
- //
139
- // Thread.sleep(200)
140
- //
141
- // assertEquals(1, trackedEvents.size)
142
- // assertEquals("webViewEvent", trackedEvents.first().name)
143
- //
144
- // val payload = trackedEvents.first().payload
145
- // assertEquals(data, payload["changeThis"])
109
+
110
+ assertTrue(payload.containsKey(Parameters .UNSTRUCTURED ))
111
+ val selfDescJson = JSONObject (payload[Parameters .UNSTRUCTURED ] as String )
112
+ assertEquals(TrackerConstants .SCHEMA_UNSTRUCT_EVENT , selfDescJson.getString(" schema" ))
113
+ assertEquals(data, selfDescJson.getString(" data" ))
146
114
}
147
115
148
116
@Test
@@ -171,6 +139,8 @@ class TrackerWebViewInterfaceV2Test {
171
139
assertEquals(0 , networkConnection.countRequests())
172
140
assertEquals(1 , networkConnection2.countRequests())
173
141
142
+ assertEquals(" pv" , networkConnection2.allRequests[0 ].payload.map[Parameters .EVENT ])
143
+
174
144
// tracks using default tracker if not specified
175
145
webInterface!! .trackWebViewEvent(
176
146
eventName = " pp" ,
@@ -202,7 +172,7 @@ class TrackerWebViewInterfaceV2Test {
202
172
assertEquals(1 , networkConnection.countRequests())
203
173
204
174
val relevantEntities = ArrayList <JSONObject >()
205
- val allEntities = JSONObject (networkConnection.allRequests[0 ].payload.map[" co " ] as String )
175
+ val allEntities = JSONObject (networkConnection.allRequests[0 ].payload.map[Parameters . CONTEXT ] as String )
206
176
.getJSONArray(" data" )
207
177
for (i in 0 until allEntities.length()) {
208
178
if (allEntities.getJSONObject(i).getString(" schema" ) == " iglu:com.example/etc" ) {
@@ -212,6 +182,13 @@ class TrackerWebViewInterfaceV2Test {
212
182
assertEquals(1 , relevantEntities.size)
213
183
assertEquals(" val" , relevantEntities[0 ].get(" key" ) as ? String )
214
184
}
185
+
186
+ @Test
187
+ @Throws(JSONException ::class , InterruptedException ::class )
188
+ fun addsEventNameAndSchemaForInspection () {
189
+
190
+ // TODO
191
+ }
215
192
216
193
// --- PRIVATE
217
194
private val context: Context
0 commit comments