Skip to content

Commit d8532c0

Browse files
committed
Sync on push : fix CallScreenPresenterTests after last changes.
1 parent e1a1e48 commit d8532c0

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

features/call/impl/src/test/kotlin/io/element/android/features/call/ui/CallScreenPresenterTest.kt

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,21 @@ import io.element.android.libraries.matrix.test.A_SESSION_ID
3636
import io.element.android.libraries.matrix.test.FakeMatrixClient
3737
import io.element.android.libraries.matrix.test.FakeMatrixClientProvider
3838
import io.element.android.libraries.matrix.test.room.FakeMatrixRoom
39+
import io.element.android.libraries.matrix.test.sync.FakeSyncService
3940
import io.element.android.libraries.matrix.test.widget.FakeMatrixWidgetDriver
4041
import io.element.android.libraries.network.useragent.UserAgentProvider
4142
import io.element.android.services.analytics.api.ScreenTracker
4243
import io.element.android.services.analytics.test.FakeScreenTracker
4344
import io.element.android.services.toolbox.api.systemclock.SystemClock
4445
import io.element.android.tests.testutils.WarmUpRule
4546
import io.element.android.tests.testutils.consumeItemsUntilTimeout
47+
import io.element.android.tests.testutils.lambda.assert
4648
import io.element.android.tests.testutils.lambda.lambdaRecorder
4749
import io.element.android.tests.testutils.lambda.value
4850
import io.element.android.tests.testutils.testCoroutineDispatchers
4951
import kotlinx.coroutines.ExperimentalCoroutinesApi
5052
import kotlinx.coroutines.cancelAndJoin
53+
import kotlinx.coroutines.flow.MutableStateFlow
5154
import kotlinx.coroutines.launch
5255
import kotlinx.coroutines.sync.Mutex
5356
import kotlinx.coroutines.test.TestScope
@@ -86,8 +89,9 @@ class CallScreenPresenterTest {
8689
@Test
8790
fun `present - with CallType RoomCall sets call as active, loads URL, runs WidgetDriver and notifies the other clients a call started`() = runTest {
8891
val sendCallNotificationIfNeededLambda = lambdaRecorder<Result<Unit>> { Result.success(Unit) }
92+
val syncService = FakeSyncService(MutableStateFlow(SyncState.Running))
8993
val fakeRoom = FakeMatrixRoom(sendCallNotificationIfNeededResult = sendCallNotificationIfNeededLambda)
90-
val client = FakeMatrixClient().apply {
94+
val client = FakeMatrixClient(syncService = syncService).apply {
9195
givenGetRoomResult(A_ROOM_ID, fakeRoom)
9296
}
9397
val widgetDriver = FakeMatrixWidgetDriver()
@@ -216,7 +220,12 @@ class CallScreenPresenterTest {
216220
fun `present - automatically starts the Matrix client sync when on RoomCall`() = runTest {
217221
val navigator = FakeCallScreenNavigator()
218222
val widgetDriver = FakeMatrixWidgetDriver()
219-
val matrixClient = FakeMatrixClient()
223+
val syncStateFlow = MutableStateFlow(SyncState.Idle)
224+
val startSyncLambda = lambdaRecorder<Result<Unit>> { Result.success(Unit) }
225+
val syncService = FakeSyncService(syncStateFlow = syncStateFlow).apply {
226+
this.startSyncLambda = startSyncLambda
227+
}
228+
val matrixClient = FakeMatrixClient(syncService = syncService)
220229
val presenter = createCallScreenPresenter(
221230
callType = CallType.RoomCall(A_SESSION_ID, A_ROOM_ID),
222231
widgetDriver = widgetDriver,
@@ -230,7 +239,7 @@ class CallScreenPresenterTest {
230239
}.test {
231240
consumeItemsUntilTimeout()
232241

233-
assertThat(matrixClient.syncService().syncState.value).isEqualTo(SyncState.Running)
242+
assert(startSyncLambda).isCalledOnce()
234243

235244
cancelAndIgnoreRemainingEvents()
236245
}
@@ -240,7 +249,12 @@ class CallScreenPresenterTest {
240249
fun `present - automatically stops the Matrix client sync on dispose`() = runTest {
241250
val navigator = FakeCallScreenNavigator()
242251
val widgetDriver = FakeMatrixWidgetDriver()
243-
val matrixClient = FakeMatrixClient()
252+
val syncStateFlow = MutableStateFlow(SyncState.Running)
253+
val stopSyncLambda = lambdaRecorder<Result<Unit>> { Result.success(Unit) }
254+
val syncService = FakeSyncService(syncStateFlow = syncStateFlow).apply {
255+
this.stopSyncLambda = stopSyncLambda
256+
}
257+
val matrixClient = FakeMatrixClient(syncService = syncService)
244258
val presenter = createCallScreenPresenter(
245259
callType = CallType.RoomCall(A_SESSION_ID, A_ROOM_ID),
246260
widgetDriver = widgetDriver,
@@ -262,7 +276,7 @@ class CallScreenPresenterTest {
262276

263277
job.cancelAndJoin()
264278

265-
assertThat(matrixClient.syncService().syncState.value).isEqualTo(SyncState.Terminated)
279+
assert(stopSyncLambda).isCalledOnce()
266280
}
267281

268282
private fun TestScope.createCallScreenPresenter(

0 commit comments

Comments
 (0)