From 6ea0fc8d17384bfbcc027abebfbf150d6beb0cd0 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 17 Jun 2024 17:54:55 +0200 Subject: [PATCH] Add test about selecting the first provider with a distributor. --- .../appnav/loggedin/LoggedInPresenterTest.kt | 51 +++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) 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,