@@ -6,7 +6,8 @@ import org.junit.Assert
66import org.junit.Rule
77import org.junit.Test
88import java.net.URL
9- import java.util.*
9+ import java.util.Calendar
10+ import java.util.UUID
1011
1112class TelemetryManagerTest {
1213
@@ -17,7 +18,7 @@ class TelemetryManagerTest {
1718 fun telemetryManager_sets_signal_properties () {
1819 val appID = " 32CB6574-6732-4238-879F-582FEBEB6536"
1920 val config = TelemetryManagerConfiguration (appID)
20- val manager = TelemetryManager .Builder ().configuration(config).build(null )
21+ val manager = TelemetryManager .Builder ().configuration(config).build(null )
2122
2223 manager.queue(" type" , " clientUser" , emptyMap())
2324
@@ -27,7 +28,10 @@ class TelemetryManagerTest {
2728 Assert .assertEquals(UUID .fromString(appID), queuedSignal!! .appID)
2829 Assert .assertEquals(config.sessionID, UUID .fromString(queuedSignal.sessionID))
2930 Assert .assertEquals(" type" , queuedSignal.type)
30- Assert .assertEquals(" 6721870580401922549fe8fdb09a064dba5b8792fa018d3bd9ffa90fe37a0149" , queuedSignal.clientUser)
31+ Assert .assertEquals(
32+ " 6721870580401922549fe8fdb09a064dba5b8792fa018d3bd9ffa90fe37a0149" ,
33+ queuedSignal.clientUser
34+ )
3135 Assert .assertEquals(" false" , queuedSignal.isTestMode)
3236 }
3337
@@ -246,9 +250,150 @@ class TelemetryManagerTest {
246250 Assert .assertEquals(1 , filteredSignals.count())
247251 Assert .assertEquals(" okSignal" , filteredSignals[0 ].type)
248252 }
253+
254+ @Test
255+ fun telemetryManager_navigate_source_destination_sets_default_parameters () {
256+ val config = TelemetryManagerConfiguration (" 32CB6574-6732-4238-879F-582FEBEB6536" )
257+ val manager = TelemetryManager .Builder ().configuration(config).build(null )
258+
259+ manager.navigate(" source" , " destination" )
260+
261+ val queuedSignal = manager.cache?.empty()?.first()
262+
263+ Assert .assertNotNull(queuedSignal)
264+
265+ // validate the signal type
266+ Assert .assertEquals(queuedSignal?.type, " TelemetryDeck.Navigation.pathChanged" )
267+
268+ // validate the navigation status payload
269+ // https://github.com/TelemetryDeck/KotlinSDK/issues/28
270+ Assert .assertEquals(
271+ queuedSignal?.payload?.single { it.startsWith(" TelemetryDeck.Navigation.schemaVersion" ) },
272+ " TelemetryDeck.Navigation.schemaVersion:1"
273+ )
274+ Assert .assertEquals(
275+ queuedSignal?.payload?.single { it.startsWith(" TelemetryDeck.Navigation.identifier" ) },
276+ " TelemetryDeck.Navigation.identifier:source -> destination"
277+ )
278+ Assert .assertEquals(
279+ queuedSignal?.payload?.single { it.startsWith(" TelemetryDeck.Navigation.sourcePath" ) },
280+ " TelemetryDeck.Navigation.sourcePath:source"
281+ )
282+ Assert .assertEquals(
283+ queuedSignal?.payload?.single { it.startsWith(" TelemetryDeck.Navigation.destinationPath" ) },
284+ " TelemetryDeck.Navigation.destinationPath:destination"
285+ )
286+ }
287+
288+ @Test
289+ fun telemetryManager_navigate_source_destination_sets_clientUser () {
290+ val config = TelemetryManagerConfiguration (" 32CB6574-6732-4238-879F-582FEBEB6536" )
291+ config.defaultUser = " user"
292+ val manager = TelemetryManager .Builder ().configuration(config).build(null )
293+
294+ manager.navigate(" source" , " destination" , " clientUser" )
295+
296+ val queuedSignal = manager.cache?.empty()?.first()
297+
298+ Assert .assertNotNull(queuedSignal)
299+
300+ // validate that the provided user was used and not default
301+ Assert .assertEquals(
302+ queuedSignal?.clientUser,
303+ " 6721870580401922549fe8fdb09a064dba5b8792fa018d3bd9ffa90fe37a0149"
304+ )
305+ }
306+
307+ @Test
308+ fun telemetryManager_navigate_source_destination_uses_default_user () {
309+ val config = TelemetryManagerConfiguration (" 32CB6574-6732-4238-879F-582FEBEB6536" )
310+ config.defaultUser = " clientUser"
311+ val manager = TelemetryManager .Builder ().configuration(config).build(null )
312+
313+ manager.navigate(" source" , " destination" )
314+
315+ val queuedSignal = manager.cache?.empty()?.first()
316+
317+ Assert .assertNotNull(queuedSignal)
318+
319+ // validate that the default user was used
320+ Assert .assertEquals(
321+ queuedSignal?.clientUser,
322+ " 6721870580401922549fe8fdb09a064dba5b8792fa018d3bd9ffa90fe37a0149"
323+ )
324+ }
325+
326+ @Test
327+ fun telemetryManager_navigate_destination_no_previous_source () {
328+ val config = TelemetryManagerConfiguration (" 32CB6574-6732-4238-879F-582FEBEB6536" )
329+ val manager = TelemetryManager .Builder ().configuration(config).build(null )
330+
331+ manager.navigate(" destination" )
332+
333+ val queuedSignal = manager.cache?.empty()?.first()
334+
335+ Assert .assertNotNull(queuedSignal)
336+
337+ // validate the signal type
338+ Assert .assertEquals(queuedSignal?.type, " TelemetryDeck.Navigation.pathChanged" )
339+
340+ // validate the navigation status payload
341+ // https://github.com/TelemetryDeck/KotlinSDK/issues/28
342+ Assert .assertEquals(
343+ queuedSignal?.payload?.single { it.startsWith(" TelemetryDeck.Navigation.schemaVersion" ) },
344+ " TelemetryDeck.Navigation.schemaVersion:1"
345+ )
346+ Assert .assertEquals(
347+ queuedSignal?.payload?.single { it.startsWith(" TelemetryDeck.Navigation.identifier" ) },
348+ " TelemetryDeck.Navigation.identifier: -> destination"
349+ )
350+ Assert .assertEquals(
351+ queuedSignal?.payload?.single { it.startsWith(" TelemetryDeck.Navigation.sourcePath" ) },
352+ " TelemetryDeck.Navigation.sourcePath:"
353+ )
354+ Assert .assertEquals(
355+ queuedSignal?.payload?.single { it.startsWith(" TelemetryDeck.Navigation.destinationPath" ) },
356+ " TelemetryDeck.Navigation.destinationPath:destination"
357+ )
358+ }
359+
360+ @Test
361+ fun telemetryManager_navigate_destination_uses_previous_destination_as_source () {
362+ val config = TelemetryManagerConfiguration (" 32CB6574-6732-4238-879F-582FEBEB6536" )
363+ val manager = TelemetryManager .Builder ().configuration(config).build(null )
364+
365+ manager.navigate(" destination1" )
366+ manager.navigate(" destination2" )
367+
368+ val queuedSignal = manager.cache?.empty()?.last()
369+
370+ Assert .assertNotNull(queuedSignal)
371+
372+ // validate the signal type
373+ Assert .assertEquals(queuedSignal?.type, " TelemetryDeck.Navigation.pathChanged" )
374+
375+ // validate the navigation status payload
376+ // https://github.com/TelemetryDeck/KotlinSDK/issues/28
377+ Assert .assertEquals(
378+ queuedSignal?.payload?.single { it.startsWith(" TelemetryDeck.Navigation.schemaVersion" ) },
379+ " TelemetryDeck.Navigation.schemaVersion:1"
380+ )
381+ Assert .assertEquals(
382+ queuedSignal?.payload?.single { it.startsWith(" TelemetryDeck.Navigation.identifier" ) },
383+ " TelemetryDeck.Navigation.identifier:destination1 -> destination2"
384+ )
385+ Assert .assertEquals(
386+ queuedSignal?.payload?.single { it.startsWith(" TelemetryDeck.Navigation.sourcePath" ) },
387+ " TelemetryDeck.Navigation.sourcePath:destination1"
388+ )
389+ Assert .assertEquals(
390+ queuedSignal?.payload?.single { it.startsWith(" TelemetryDeck.Navigation.destinationPath" ) },
391+ " TelemetryDeck.Navigation.destinationPath:destination2"
392+ )
393+ }
249394}
250395
251- open class TestProvider : TelemetryProvider {
396+ open class TestProvider : TelemetryProvider {
252397 var registered = false
253398 override fun register (ctx : Application ? , manager : TelemetryManager ) {
254399 registered = true
0 commit comments