RoomMockE2ETest.kt
2.7 KB
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
package io.livekit.android.room
import android.content.Context
import androidx.test.core.app.ApplicationProvider
import io.livekit.android.coroutines.TestCoroutineRule
import io.livekit.android.mock.MockWebsocketFactory
import io.livekit.android.mock.dagger.DaggerTestLiveKitComponent
import io.livekit.android.room.participant.ConnectionQuality
import io.livekit.android.util.toOkioByteString
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.TestCoroutineScope
import kotlinx.coroutines.test.runBlockingTest
import org.junit.Assert
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito
import org.mockito.junit.MockitoJUnit
import org.robolectric.RobolectricTestRunner
@ExperimentalCoroutinesApi
@RunWith(RobolectricTestRunner::class)
class RoomMockE2ETest {
@get:Rule
var mockitoRule = MockitoJUnit.rule()
@get:Rule
var coroutineRule = TestCoroutineRule()
lateinit var context: Context
lateinit var room: Room
lateinit var wsFactory: MockWebsocketFactory
@Before
fun setup() {
context = ApplicationProvider.getApplicationContext()
val component = DaggerTestLiveKitComponent
.factory()
.create(context)
room = component.roomFactory()
.create(context)
wsFactory = component.websocketFactory()
}
fun connect() {
val job = coroutineRule.scope.launch {
room.connect(
url = "http://www.example.com",
token = "",
options = null
)
}
wsFactory.listener.onMessage(wsFactory.ws, SignalClientTest.JOIN.toOkioByteString())
runBlockingTest {
job.join()
}
}
@Test
fun connectTest() {
connect()
}
@Test
fun roomUpdateTest() {
connect()
wsFactory.listener.onMessage(wsFactory.ws, SignalClientTest.ROOM_UPDATE.toOkioByteString())
Assert.assertEquals(
SignalClientTest.ROOM_UPDATE.roomUpdate.room.metadata,
room.metadata
)
}
@Test
fun connectionQualityUpdateTest() {
val roomListener = Mockito.mock(RoomListener::class.java)
room.listener = roomListener
connect()
wsFactory.listener.onMessage(
wsFactory.ws,
SignalClientTest.CONNECTION_QUALITY.toOkioByteString()
)
Assert.assertEquals(
ConnectionQuality.EXCELLENT,
room.localParticipant.connectionQuality
)
Mockito.verify(roomListener)
.onConnectionQualityChanged(room.localParticipant, ConnectionQuality.EXCELLENT)
}
}