diff --git a/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt index 7141f04fd0..274ae3f04e 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt @@ -217,7 +217,7 @@ class LoggedInPresenterTest { sessionVerificationService.givenVerifiedStatus(SessionVerifiedStatus.Verified) val distributor = Distributor("aDistributorValue1", "aDistributorName1") val pushProvider = FakePushProvider( - index = 1, + index = 0, name = "aFakePushProvider0", distributors = listOf( Distributor("aDistributorValue0", "aDistributorName0"), @@ -373,8 +373,8 @@ class LoggedInPresenterTest { val sessionVerificationService = FakeSessionVerificationService() sessionVerificationService.givenVerifiedStatus(SessionVerifiedStatus.Verified) val pushProvider = FakePushProvider( - index = 1, - name = "aFakePushProvider1", + index = 0, + name = "aFakePushProvider", distributors = emptyList(), ) val pushService = createFakePushService( @@ -411,6 +411,51 @@ class LoggedInPresenterTest { } } + @Test + fun `present - case two push providers but first one does not have distributor - second one will be used`() = runTest { + val lambda = lambdaRecorder> { _, _, _ -> + Result.success(Unit) + } + val sessionVerificationService = FakeSessionVerificationService() + sessionVerificationService.givenVerifiedStatus(SessionVerifiedStatus.Verified) + val pushProvider0 = FakePushProvider( + index = 0, + name = "aFakePushProvider0", + distributors = emptyList(), + ) + val distributor = Distributor("aDistributorValue1", "aDistributorName1") + val pushProvider1 = FakePushProvider( + index = 1, + name = "aFakePushProvider1", + distributors = listOf(distributor), + ) + val pushService = createFakePushService( + pushProvider0 = pushProvider0, + pushProvider1 = pushProvider1, + registerWithLambda = lambda, + ) + val presenter = createLoggedInPresenter( + pushService = pushService, + sessionVerificationService = sessionVerificationService, + ) + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { + skipItems(2) + val finalState = awaitItem() + assertThat(finalState.pusherRegistrationState.isSuccess()).isTrue() + lambda.assertions().isCalledOnce() + .with( + // MatrixClient + any(), + // PushProvider with the distributor + value(pushProvider1), + // First distributor of second push provider + value(distributor), + ) + } + } + private fun createFakePushService( pushProvider0: PushProvider? = FakePushProvider( index = 0,