Skip to content

Commit 8567c75

Browse files
committed
Update tests to use EventSink where possible
1 parent 22538da commit 8567c75

File tree

1 file changed

+50
-76
lines changed

1 file changed

+50
-76
lines changed

snowplow-tracker/src/androidTest/java/com/snowplowanalytics/snowplow/tracker/TrackerWebViewInterfaceV2Test.kt

Lines changed: 50 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ import com.snowplowanalytics.core.tracker.TrackerWebViewInterfaceV2
2323
import com.snowplowanalytics.snowplow.Snowplow.createTracker
2424
import com.snowplowanalytics.snowplow.Snowplow.removeAllTrackers
2525
import com.snowplowanalytics.snowplow.configuration.NetworkConfiguration
26-
import com.snowplowanalytics.snowplow.configuration.PluginConfiguration
2726
import com.snowplowanalytics.snowplow.configuration.TrackerConfiguration
2827
import com.snowplowanalytics.snowplow.controller.TrackerController
2928
import com.snowplowanalytics.snowplow.network.HttpMethod
29+
import com.snowplowanalytics.snowplow.util.EventSink
3030
import org.json.JSONException
3131
import org.json.JSONObject
3232
import org.junit.After
@@ -38,26 +38,29 @@ import org.junit.runner.RunWith
3838
@RunWith(AndroidJUnit4::class)
3939
class TrackerWebViewInterfaceV2Test {
4040
private var webInterface: TrackerWebViewInterfaceV2? = null
41-
private var networkConnection = MockNetworkConnection(HttpMethod.GET, 200)
42-
private var tracker: TrackerController? = null
4341

4442
@Before
4543
fun setUp() {
4644
webInterface = TrackerWebViewInterfaceV2()
47-
tracker = createTracker()
4845
}
4946

5047
@After
5148
fun tearDown() {
52-
tracker?.pause()
53-
tracker = null
5449
removeAllTrackers()
5550
Executor.shutdown()
5651
}
5752

5853
@Test
5954
@Throws(JSONException::class, InterruptedException::class)
6055
fun tracksEventWithAllOptions() {
56+
val networkConnection = MockNetworkConnection(HttpMethod.GET, 200)
57+
createTracker(
58+
context,
59+
"ns${Math.random()}",
60+
NetworkConfiguration(networkConnection),
61+
TrackerConfiguration("appId").base64encoding(false)
62+
)
63+
6164
val data = "{\"schema\":\"iglu:etc\",\"data\":{\"key\":\"val\"}}"
6265
val atomic = "{\"eventName\":\"ue\",\"trackerVersion\":\"webview\"," +
6366
"\"useragent\":\"Chrome\",\"pageUrl\":\"http://snowplow.com\"," +
@@ -71,8 +74,11 @@ class TrackerWebViewInterfaceV2Test {
7174
atomicProperties = atomic
7275
)
7376

74-
Thread.sleep(200)
75-
waitForEvents(networkConnection, 1)
77+
var i = 0
78+
while (i < 10 && networkConnection.countRequests() == 0) {
79+
Thread.sleep(1000)
80+
i++
81+
}
7682

7783
assertEquals(1, networkConnection.countRequests())
7884

@@ -104,118 +110,86 @@ class TrackerWebViewInterfaceV2Test {
104110
@Test
105111
@Throws(JSONException::class, InterruptedException::class)
106112
fun tracksEventWithCorrectTracker() {
107-
// create the second tracker
108-
val networkConnection2 = MockNetworkConnection(HttpMethod.GET, 200)
109-
createTracker(
110-
context,
111-
namespace = "ns2",
112-
NetworkConfiguration(networkConnection2),
113-
TrackerConfiguration("appId")
114-
)
113+
val eventSink1 = EventSink()
114+
val eventSink2 = EventSink()
115+
116+
createTracker("ns1", eventSink1)
117+
createTracker("ns2", eventSink2)
115118
Thread.sleep(200)
116119

117120
// track an event using the second tracker
118121
webInterface!!.trackWebViewEvent(
119-
atomicProperties = "{\"eventName\":\"pv\",\"trackerVersion\":\"webview\"}",
122+
atomicProperties = "{}",
120123
trackers = arrayOf("ns2")
121124
)
122125
Thread.sleep(200)
123-
waitForEvents(networkConnection2, 1)
124-
125-
assertEquals(0, networkConnection.countRequests())
126-
assertEquals(1, networkConnection2.countRequests())
127-
128-
assertEquals("pv", networkConnection2.allRequests[0].payload.map[Parameters.EVENT])
126+
127+
assertEquals(0, eventSink1.trackedEvents.size)
128+
assertEquals(1, eventSink2.trackedEvents.size)
129129

130130
// tracks using default tracker if not specified
131131
webInterface!!.trackWebViewEvent(atomicProperties = "{}")
132132
Thread.sleep(200)
133-
waitForEvents(networkConnection, 1)
134133

135-
assertEquals(1, networkConnection.countRequests())
136-
assertEquals(1, networkConnection2.countRequests())
134+
assertEquals(1, eventSink1.trackedEvents.size)
135+
assertEquals(1, eventSink2.trackedEvents.size)
137136
}
138137

139138
@Test
140139
@Throws(JSONException::class, InterruptedException::class)
141140
fun tracksEventWithEntity() {
141+
val namespace = "ns" + Math.random().toString()
142+
val eventSink = EventSink()
143+
createTracker(namespace, eventSink)
144+
142145
webInterface!!.trackWebViewEvent(
143146
atomicProperties = "{}",
144-
entities = "[{\"schema\":\"iglu:com.example/etc\",\"data\":{\"key\":\"val\"}}]"
147+
entities = "[{\"schema\":\"iglu:com.example/etc\",\"data\":{\"key\":\"val\"}}]",
148+
trackers = arrayOf(namespace)
145149
)
146150
Thread.sleep(200)
147-
waitForEvents(networkConnection, 1)
148-
149-
assertEquals(1, networkConnection.countRequests())
151+
val events = eventSink.trackedEvents
152+
assertEquals(1, events.size)
150153

151-
val relevantEntities = ArrayList<JSONObject>()
152-
val allEntities = JSONObject(networkConnection.allRequests[0].payload.map[Parameters.CONTEXT] as String)
153-
.getJSONArray("data")
154-
for (i in 0 until allEntities.length()) {
155-
if (allEntities.getJSONObject(i).getString("schema") == "iglu:com.example/etc") {
156-
relevantEntities.add(allEntities.getJSONObject(i).getJSONObject("data"))
157-
}
158-
}
154+
val relevantEntities = events[0].entities.filter { it.map["schema"] == "iglu:com.example/etc" }
159155
assertEquals(1, relevantEntities.size)
160-
assertEquals("val", relevantEntities[0].get("key") as? String)
156+
157+
val entityData = relevantEntities[0].map["data"] as HashMap<*, *>?
158+
assertEquals("val", entityData?.get("key"))
161159
}
162160

163161
@Test
164162
@Throws(JSONException::class, InterruptedException::class)
165163
fun addsEventNameAndSchemaForInspection() {
166-
val trackedEvents: MutableList<InspectableEvent> = mutableListOf()
167-
168164
val namespace = "ns" + Math.random().toString()
169-
val networkConfig = NetworkConfiguration(MockNetworkConnection(HttpMethod.POST, 200))
170-
171-
val plugin = PluginConfiguration("plugin")
172-
plugin.afterTrack { trackedEvents.add(it) }
173-
174-
createTracker(
175-
context,
176-
namespace,
177-
networkConfig,
178-
TrackerConfiguration("appId"),
179-
plugin
180-
)
165+
val eventSink = EventSink()
166+
createTracker(namespace, eventSink)
181167

182168
webInterface!!.trackWebViewEvent(
183-
atomicProperties = "{\"eventName\":\"se\",\"trackerVersion\":\"webview\"}",
169+
atomicProperties = "{\"eventName\":\"se\"}",
184170
selfDescribingEventData = "{\"schema\":\"iglu:etc\",\"data\":{\"key\":\"val\"}}",
185171
trackers = arrayOf(namespace)
186172
)
187173

188174
Thread.sleep(200)
189-
assertEquals(1, trackedEvents.size)
190-
assertEquals("se", trackedEvents[0].name)
191-
assertEquals("iglu:etc", trackedEvents[0].schema)
175+
val events = eventSink.trackedEvents
176+
177+
assertEquals(1, events.size)
178+
assertEquals("se", events[0].name)
179+
assertEquals("iglu:etc", events[0].schema)
192180
}
193181

194182
// --- PRIVATE
195183
private val context: Context
196184
get() = InstrumentationRegistry.getInstrumentation().targetContext
197185

198-
private fun createTracker(): TrackerController {
199-
val trackerConfig = TrackerConfiguration("appId")
200-
.installAutotracking(false)
201-
.lifecycleAutotracking(false)
202-
.platformContext(false)
203-
.base64encoding(false)
204-
186+
private fun createTracker(namespace: String, eventSink: EventSink): TrackerController {
187+
val networkConfig = NetworkConfiguration(MockNetworkConnection(HttpMethod.POST, 200))
205188
return createTracker(
206189
context,
207-
"ns${Math.random()}",
208-
NetworkConfiguration(networkConnection),
209-
trackerConfig
190+
namespace = namespace,
191+
network = networkConfig,
192+
configurations = arrayOf(eventSink)
210193
)
211194
}
212-
213-
@Throws(Exception::class)
214-
fun waitForEvents(networkConnection: MockNetworkConnection, eventsExpected: Int) {
215-
var i = 0
216-
while (i < 10 && networkConnection.countRequests() == eventsExpected - 1) {
217-
Thread.sleep(1000)
218-
i++
219-
}
220-
}
221195
}

0 commit comments

Comments
 (0)