forked from TelemetryDeck/KotlinSDK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSessionProviderTest.kt
113 lines (89 loc) · 3.91 KB
/
SessionProviderTest.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package com.telemetrydeck.sdk
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LifecycleRegistry
import androidx.lifecycle.ProcessLifecycleOwner
import org.junit.Assert
import org.junit.Rule
import org.junit.Test
import org.mockito.Mockito
class SessionProviderTest {
@get:Rule
val instantTaskExecutorRule = InstantTaskExecutorRule()
private fun testDefaultTelemetryManager(): TelemetryManager {
val builder = TelemetryManager.Builder()
return builder
.appID("32CB6574-6732-4238-879F-582FEBEB6536")
.build(null)
}
private fun testTelemetryManager(sendNewSessionBeganSignal: Boolean): TelemetryManager {
val builder = TelemetryManager.Builder()
return builder
.appID("32CB6574-6732-4238-879F-582FEBEB6536")
.sendNewSessionBeganSignal(sendNewSessionBeganSignal)
.build(null)
}
@Test
fun sessionProvider_default_configuration_onStart_sends_newSessionBegan() {
val lifecycleOwner: LifecycleOwner = Mockito.mock(LifecycleOwner::class.java)
val sut = SessionProvider()
val manager = testDefaultTelemetryManager()
sut.register(null, manager)
sut.onStart(lifecycleOwner)
Assert.assertEquals(1, manager.cache?.count())
Assert.assertEquals(SignalType.NewSessionBegan.type, manager.cache?.empty()?.get(0)?.type)
}
@Test
fun sessionProvider_sendNewSessionBeganSignal_onStart_sends_newSessionBegan() {
val lifecycleOwner: LifecycleOwner = Mockito.mock(LifecycleOwner::class.java)
val sut = SessionProvider()
val manager = testTelemetryManager(true)
sut.register(null, manager)
sut.onStart(lifecycleOwner)
Assert.assertEquals(1, manager.cache?.count())
Assert.assertEquals(SignalType.NewSessionBegan.type, manager.cache?.empty()?.get(0)?.type)
}
@Test
fun sessionProvider_not_sendNewSessionBeganSignal_onStart_no_signals() {
val lifecycleOwner: LifecycleOwner = Mockito.mock(LifecycleOwner::class.java)
val sut = SessionProvider()
val manager = testTelemetryManager(false)
sut.register(null, manager)
sut.onStart(lifecycleOwner)
Assert.assertEquals(0, manager.cache?.count())
}
@Test
fun sessionProvider_default_configuration_onStop_resets_the_sessionID() {
val lifecycleOwner: LifecycleOwner = Mockito.mock(LifecycleOwner::class.java)
val sut = SessionProvider()
val manager = testDefaultTelemetryManager()
sut.register(null, manager)
val initialSessionID = manager.configuration.sessionID
sut.onStop(lifecycleOwner)
val nextSessionID = manager.configuration.sessionID
Assert.assertNotEquals(initialSessionID, nextSessionID)
}
@Test
fun sessionProvider_sendNewSessionBeganSignal_onStop_resets_the_sessionID() {
val lifecycleOwner: LifecycleOwner = Mockito.mock(LifecycleOwner::class.java)
val sut = SessionProvider()
val manager = testTelemetryManager(true)
sut.register(null, manager)
val initialSessionID = manager.configuration.sessionID
sut.onStop(lifecycleOwner)
val nextSessionID = manager.configuration.sessionID
Assert.assertNotEquals(initialSessionID, nextSessionID)
}
@Test
fun sessionProvider_not_sendNewSessionBeganSignal_onStop_keeps_the_sessionID() {
val lifecycleOwner: LifecycleOwner = Mockito.mock(LifecycleOwner::class.java)
val sut = SessionProvider()
val manager = testTelemetryManager(false)
sut.register(null, manager)
val initialSessionID = manager.configuration.sessionID
sut.onStop(lifecycleOwner)
val nextSessionID = manager.configuration.sessionID
Assert.assertEquals(initialSessionID, nextSessionID)
}
}