diff --git a/features/linknewdevice/impl/src/main/kotlin/io/element/android/features/linknewdevice/impl/screens/root/LinkNewDeviceRootPresenter.kt b/features/linknewdevice/impl/src/main/kotlin/io/element/android/features/linknewdevice/impl/screens/root/LinkNewDeviceRootPresenter.kt index e39179c463..a17ed88fd3 100644 --- a/features/linknewdevice/impl/src/main/kotlin/io/element/android/features/linknewdevice/impl/screens/root/LinkNewDeviceRootPresenter.kt +++ b/features/linknewdevice/impl/src/main/kotlin/io/element/android/features/linknewdevice/impl/screens/root/LinkNewDeviceRootPresenter.kt @@ -64,7 +64,7 @@ class LinkNewDeviceRootPresenter( fun handleEvent(event: LinkNewDeviceRootEvent) { when (event) { - is LinkNewDeviceRootEvent.LinkMobileDevice -> coroutineScope.launch { + LinkNewDeviceRootEvent.LinkMobileDevice -> coroutineScope.launch { qrCodeData = AsyncData.Loading() // Wait for the QrCode to be ready linkNewMobileHandler.reset() diff --git a/features/linknewdevice/impl/src/test/kotlin/io/element/android/features/linknewdevice/impl/screens/root/LinkNewDeviceRootPresenterTest.kt b/features/linknewdevice/impl/src/test/kotlin/io/element/android/features/linknewdevice/impl/screens/root/LinkNewDeviceRootPresenterTest.kt index 5d945e9605..88a68786f3 100644 --- a/features/linknewdevice/impl/src/test/kotlin/io/element/android/features/linknewdevice/impl/screens/root/LinkNewDeviceRootPresenterTest.kt +++ b/features/linknewdevice/impl/src/test/kotlin/io/element/android/features/linknewdevice/impl/screens/root/LinkNewDeviceRootPresenterTest.kt @@ -12,6 +12,7 @@ import io.element.android.features.linknewdevice.impl.LinkNewMobileHandler import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.test.AN_EXCEPTION import io.element.android.libraries.matrix.test.FakeMatrixClient +import io.element.android.libraries.matrix.test.linknewdevice.FakeLinkMobileHandler import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.test import kotlinx.coroutines.test.runTest @@ -25,7 +26,7 @@ class LinkNewDeviceRootPresenterTest { @Test fun `present - initial state`() = runTest { val matrixClient = FakeMatrixClient( - canLinkNewDeviceResult = { Result.success(true) } + canLinkNewDeviceResult = { Result.success(true) }, ) createPresenter( matrixClient = matrixClient, @@ -39,7 +40,7 @@ class LinkNewDeviceRootPresenterTest { @Test fun `present - new login device not supported`() = runTest { val matrixClient = FakeMatrixClient( - canLinkNewDeviceResult = { Result.success(false) } + canLinkNewDeviceResult = { Result.success(false) }, ) createPresenter( matrixClient = matrixClient, @@ -53,7 +54,7 @@ class LinkNewDeviceRootPresenterTest { @Test fun `present - error`() = runTest { val matrixClient = FakeMatrixClient( - canLinkNewDeviceResult = { Result.failure(AN_EXCEPTION) } + canLinkNewDeviceResult = { Result.failure(AN_EXCEPTION) }, ) createPresenter( matrixClient = matrixClient, @@ -64,6 +65,28 @@ class LinkNewDeviceRootPresenterTest { } } + @Test + fun `present - link new mobile device`() = runTest { + val linkMobileHandler = FakeLinkMobileHandler( + startResult = {}, + ) + val matrixClient = FakeMatrixClient( + canLinkNewDeviceResult = { Result.success(true) }, + sessionCoroutineScope = backgroundScope, + createLinkMobileHandlerResult = { Result.success(linkMobileHandler) } + ) + createPresenter( + matrixClient = matrixClient, + ).test { + skipItems(1) + val initialState = awaitItem() + assertThat(initialState.isSupported.dataOrNull()).isTrue() + initialState.eventSink(LinkNewDeviceRootEvent.LinkMobileDevice) + val loadingState = awaitItem() + assertThat(loadingState.qrCodeData.isLoading()).isTrue() + } + } + private fun createPresenter( matrixClient: MatrixClient = FakeMatrixClient(), linkNewMobileHandler: LinkNewMobileHandler = LinkNewMobileHandler(matrixClient),