mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-02 21:32:34 +00:00
Use presenter test extension
This commit is contained in:
committed by
Benoit Marty
parent
fd0ef1ae7a
commit
5b472fdc31
+4
-12
@@ -7,9 +7,6 @@
|
|||||||
|
|
||||||
package io.element.android.features.login.impl.screens.changeaccountprovider
|
package io.element.android.features.login.impl.screens.changeaccountprovider
|
||||||
|
|
||||||
import app.cash.molecule.RecompositionMode
|
|
||||||
import app.cash.molecule.moleculeFlow
|
|
||||||
import app.cash.turbine.test
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.features.enterprise.api.EnterpriseService
|
import io.element.android.features.enterprise.api.EnterpriseService
|
||||||
import io.element.android.features.enterprise.test.FakeEnterpriseService
|
import io.element.android.features.enterprise.test.FakeEnterpriseService
|
||||||
@@ -18,6 +15,7 @@ import io.element.android.features.login.impl.changeserver.aChangeServerState
|
|||||||
import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER
|
import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER
|
||||||
import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER_2
|
import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER_2
|
||||||
import io.element.android.tests.testutils.WarmUpRule
|
import io.element.android.tests.testutils.WarmUpRule
|
||||||
|
import io.element.android.tests.testutils.test
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@@ -34,9 +32,7 @@ class ChangeAccountProviderPresenterTest {
|
|||||||
defaultHomeserverListResult = { emptyList() }
|
defaultHomeserverListResult = { emptyList() }
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
assertThat(initialState.accountProviders).isEqualTo(
|
assertThat(initialState.accountProviders).isEqualTo(
|
||||||
listOf(
|
listOf(
|
||||||
@@ -63,9 +59,7 @@ class ChangeAccountProviderPresenterTest {
|
|||||||
}
|
}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
assertThat(initialState.accountProviders).isEqualTo(
|
assertThat(initialState.accountProviders).isEqualTo(
|
||||||
listOf(
|
listOf(
|
||||||
@@ -99,9 +93,7 @@ class ChangeAccountProviderPresenterTest {
|
|||||||
}
|
}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
assertThat(initialState.accountProviders).isEqualTo(
|
assertThat(initialState.accountProviders).isEqualTo(
|
||||||
listOf(
|
listOf(
|
||||||
|
|||||||
+15
-45
@@ -7,9 +7,6 @@
|
|||||||
|
|
||||||
package io.element.android.features.login.impl.screens.confirmaccountprovider
|
package io.element.android.features.login.impl.screens.confirmaccountprovider
|
||||||
|
|
||||||
import app.cash.molecule.RecompositionMode
|
|
||||||
import app.cash.molecule.moleculeFlow
|
|
||||||
import app.cash.turbine.test
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.appconfig.AuthenticationConfig
|
import io.element.android.appconfig.AuthenticationConfig
|
||||||
import io.element.android.features.enterprise.test.FakeEnterpriseService
|
import io.element.android.features.enterprise.test.FakeEnterpriseService
|
||||||
@@ -28,6 +25,7 @@ import io.element.android.libraries.oidc.api.OidcAction
|
|||||||
import io.element.android.libraries.oidc.api.OidcActionFlow
|
import io.element.android.libraries.oidc.api.OidcActionFlow
|
||||||
import io.element.android.libraries.oidc.test.customtab.FakeOidcActionFlow
|
import io.element.android.libraries.oidc.test.customtab.FakeOidcActionFlow
|
||||||
import io.element.android.tests.testutils.WarmUpRule
|
import io.element.android.tests.testutils.WarmUpRule
|
||||||
|
import io.element.android.tests.testutils.test
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@@ -39,9 +37,7 @@ class ConfirmAccountProviderPresenterTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `present - initial test`() = runTest {
|
fun `present - initial test`() = runTest {
|
||||||
val presenter = createConfirmAccountProviderPresenter()
|
val presenter = createConfirmAccountProviderPresenter()
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
assertThat(initialState.isAccountCreation).isFalse()
|
assertThat(initialState.isAccountCreation).isFalse()
|
||||||
assertThat(initialState.submitEnabled).isTrue()
|
assertThat(initialState.submitEnabled).isTrue()
|
||||||
@@ -60,9 +56,7 @@ class ConfirmAccountProviderPresenterTest {
|
|||||||
val presenter = createConfirmAccountProviderPresenter(
|
val presenter = createConfirmAccountProviderPresenter(
|
||||||
matrixAuthenticationService = authenticationService,
|
matrixAuthenticationService = authenticationService,
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
||||||
val loadingState = awaitItem()
|
val loadingState = awaitItem()
|
||||||
@@ -85,9 +79,7 @@ class ConfirmAccountProviderPresenterTest {
|
|||||||
val presenter = createConfirmAccountProviderPresenter(
|
val presenter = createConfirmAccountProviderPresenter(
|
||||||
matrixAuthenticationService = authenticationService,
|
matrixAuthenticationService = authenticationService,
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
||||||
val loadingState = awaitItem()
|
val loadingState = awaitItem()
|
||||||
@@ -112,9 +104,7 @@ class ConfirmAccountProviderPresenterTest {
|
|||||||
matrixAuthenticationService = authenticationService,
|
matrixAuthenticationService = authenticationService,
|
||||||
defaultOidcActionFlow = defaultOidcActionFlow,
|
defaultOidcActionFlow = defaultOidcActionFlow,
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
||||||
val loadingState = awaitItem()
|
val loadingState = awaitItem()
|
||||||
@@ -143,9 +133,7 @@ class ConfirmAccountProviderPresenterTest {
|
|||||||
matrixAuthenticationService = authenticationService,
|
matrixAuthenticationService = authenticationService,
|
||||||
defaultOidcActionFlow = defaultOidcActionFlow,
|
defaultOidcActionFlow = defaultOidcActionFlow,
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
||||||
val loadingState = awaitItem()
|
val loadingState = awaitItem()
|
||||||
@@ -173,9 +161,7 @@ class ConfirmAccountProviderPresenterTest {
|
|||||||
matrixAuthenticationService = authenticationService,
|
matrixAuthenticationService = authenticationService,
|
||||||
defaultOidcActionFlow = defaultOidcActionFlow,
|
defaultOidcActionFlow = defaultOidcActionFlow,
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
||||||
val loadingState = awaitItem()
|
val loadingState = awaitItem()
|
||||||
@@ -199,9 +185,7 @@ class ConfirmAccountProviderPresenterTest {
|
|||||||
matrixAuthenticationService = authenticationService,
|
matrixAuthenticationService = authenticationService,
|
||||||
defaultOidcActionFlow = defaultOidcActionFlow,
|
defaultOidcActionFlow = defaultOidcActionFlow,
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
||||||
val loadingState = awaitItem()
|
val loadingState = awaitItem()
|
||||||
@@ -232,9 +216,7 @@ class ConfirmAccountProviderPresenterTest {
|
|||||||
matrixAuthenticationService = authenticationService,
|
matrixAuthenticationService = authenticationService,
|
||||||
defaultOidcActionFlow = defaultOidcActionFlow,
|
defaultOidcActionFlow = defaultOidcActionFlow,
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
||||||
val loadingState = awaitItem()
|
val loadingState = awaitItem()
|
||||||
@@ -260,9 +242,7 @@ class ConfirmAccountProviderPresenterTest {
|
|||||||
val presenter = createConfirmAccountProviderPresenter(
|
val presenter = createConfirmAccountProviderPresenter(
|
||||||
matrixAuthenticationService = authenticationService,
|
matrixAuthenticationService = authenticationService,
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
|
||||||
skipItems(1) // Loading
|
skipItems(1) // Loading
|
||||||
@@ -282,9 +262,7 @@ class ConfirmAccountProviderPresenterTest {
|
|||||||
val presenter = createConfirmAccountProviderPresenter(
|
val presenter = createConfirmAccountProviderPresenter(
|
||||||
matrixAuthenticationService = authenticationService,
|
matrixAuthenticationService = authenticationService,
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
|
|
||||||
// Submit will return an error
|
// Submit will return an error
|
||||||
@@ -317,9 +295,7 @@ class ConfirmAccountProviderPresenterTest {
|
|||||||
throw AccountCreationNotSupported()
|
throw AccountCreationNotSupported()
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink(ConfirmAccountProviderEvents.Continue)
|
initialState.eventSink(ConfirmAccountProviderEvents.Continue)
|
||||||
skipItems(1) // Loading
|
skipItems(1) // Loading
|
||||||
@@ -344,9 +320,7 @@ class ConfirmAccountProviderPresenterTest {
|
|||||||
params = ConfirmAccountProviderPresenter.Params(isAccountCreation = true),
|
params = ConfirmAccountProviderPresenter.Params(isAccountCreation = true),
|
||||||
matrixAuthenticationService = authenticationService,
|
matrixAuthenticationService = authenticationService,
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink(ConfirmAccountProviderEvents.Continue)
|
initialState.eventSink(ConfirmAccountProviderEvents.Continue)
|
||||||
skipItems(1) // Loading
|
skipItems(1) // Loading
|
||||||
@@ -369,9 +343,7 @@ class ConfirmAccountProviderPresenterTest {
|
|||||||
matrixAuthenticationService = authenticationService,
|
matrixAuthenticationService = authenticationService,
|
||||||
webClientUrlForAuthenticationRetriever = FakeWebClientUrlForAuthenticationRetriever { aUrl },
|
webClientUrlForAuthenticationRetriever = FakeWebClientUrlForAuthenticationRetriever { aUrl },
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink(ConfirmAccountProviderEvents.Continue)
|
initialState.eventSink(ConfirmAccountProviderEvents.Continue)
|
||||||
skipItems(1) // Loading
|
skipItems(1) // Loading
|
||||||
@@ -394,9 +366,7 @@ class ConfirmAccountProviderPresenterTest {
|
|||||||
matrixAuthenticationService = authenticationService,
|
matrixAuthenticationService = authenticationService,
|
||||||
webClientUrlForAuthenticationRetriever = FakeWebClientUrlForAuthenticationRetriever { aUrl },
|
webClientUrlForAuthenticationRetriever = FakeWebClientUrlForAuthenticationRetriever { aUrl },
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink(ConfirmAccountProviderEvents.Continue)
|
initialState.eventSink(ConfirmAccountProviderEvents.Continue)
|
||||||
skipItems(1) // Loading
|
skipItems(1) // Loading
|
||||||
|
|||||||
+7
-21
@@ -7,9 +7,6 @@
|
|||||||
|
|
||||||
package io.element.android.features.login.impl.screens.createaccount
|
package io.element.android.features.login.impl.screens.createaccount
|
||||||
|
|
||||||
import app.cash.molecule.RecompositionMode
|
|
||||||
import app.cash.molecule.moleculeFlow
|
|
||||||
import app.cash.turbine.test
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.libraries.architecture.AsyncAction
|
import io.element.android.libraries.architecture.AsyncAction
|
||||||
import io.element.android.libraries.core.meta.BuildMeta
|
import io.element.android.libraries.core.meta.BuildMeta
|
||||||
@@ -26,6 +23,7 @@ import io.element.android.libraries.matrix.test.verification.FakeSessionVerifica
|
|||||||
import io.element.android.tests.testutils.WarmUpRule
|
import io.element.android.tests.testutils.WarmUpRule
|
||||||
import io.element.android.tests.testutils.lambda.lambdaRecorder
|
import io.element.android.tests.testutils.lambda.lambdaRecorder
|
||||||
import io.element.android.tests.testutils.lambda.value
|
import io.element.android.tests.testutils.lambda.value
|
||||||
|
import io.element.android.tests.testutils.test
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@@ -37,9 +35,7 @@ class CreateAccountPresenterTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `present - initial state`() = runTest {
|
fun `present - initial state`() = runTest {
|
||||||
val presenter = createPresenter()
|
val presenter = createPresenter()
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
assertThat(initialState.url).isEqualTo("aUrl")
|
assertThat(initialState.url).isEqualTo("aUrl")
|
||||||
assertThat(initialState.pageProgress).isEqualTo(0)
|
assertThat(initialState.pageProgress).isEqualTo(0)
|
||||||
@@ -51,9 +47,7 @@ class CreateAccountPresenterTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `present - set up progress update the state`() = runTest {
|
fun `present - set up progress update the state`() = runTest {
|
||||||
val presenter = createPresenter()
|
val presenter = createPresenter()
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink(CreateAccountEvents.SetPageProgress(33))
|
initialState.eventSink(CreateAccountEvents.SetPageProgress(33))
|
||||||
assertThat(awaitItem().pageProgress).isEqualTo(33)
|
assertThat(awaitItem().pageProgress).isEqualTo(33)
|
||||||
@@ -65,9 +59,7 @@ class CreateAccountPresenterTest {
|
|||||||
val presenter = createPresenter(
|
val presenter = createPresenter(
|
||||||
messageParser = FakeMessageParser { error("An error") }
|
messageParser = FakeMessageParser { error("An error") }
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink(CreateAccountEvents.OnMessageReceived(""))
|
initialState.eventSink(CreateAccountEvents.OnMessageReceived(""))
|
||||||
assertThat(awaitItem().createAction).isInstanceOf(AsyncAction.Failure::class.java)
|
assertThat(awaitItem().createAction).isInstanceOf(AsyncAction.Failure::class.java)
|
||||||
@@ -77,9 +69,7 @@ class CreateAccountPresenterTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `present - receiving a message containing isTrusted is ignored`() = runTest {
|
fun `present - receiving a message containing isTrusted is ignored`() = runTest {
|
||||||
val presenter = createPresenter()
|
val presenter = createPresenter()
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink(CreateAccountEvents.OnMessageReceived("isTrusted"))
|
initialState.eventSink(CreateAccountEvents.OnMessageReceived("isTrusted"))
|
||||||
}
|
}
|
||||||
@@ -98,9 +88,7 @@ class CreateAccountPresenterTest {
|
|||||||
messageParser = FakeMessageParser(lambda),
|
messageParser = FakeMessageParser(lambda),
|
||||||
clientProvider = clientProvider,
|
clientProvider = clientProvider,
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink(CreateAccountEvents.OnMessageReceived("aMessage"))
|
initialState.eventSink(CreateAccountEvents.OnMessageReceived("aMessage"))
|
||||||
assertThat(awaitItem().createAction.isLoading()).isTrue()
|
assertThat(awaitItem().createAction.isLoading()).isTrue()
|
||||||
@@ -118,9 +106,7 @@ class CreateAccountPresenterTest {
|
|||||||
),
|
),
|
||||||
messageParser = FakeMessageParser { anExternalSession() }
|
messageParser = FakeMessageParser { anExternalSession() }
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink(CreateAccountEvents.OnMessageReceived(""))
|
initialState.eventSink(CreateAccountEvents.OnMessageReceived(""))
|
||||||
assertThat(awaitItem().createAction.isLoading()).isTrue()
|
assertThat(awaitItem().createAction.isLoading()).isTrue()
|
||||||
|
|||||||
+4
-12
@@ -7,14 +7,12 @@
|
|||||||
|
|
||||||
package io.element.android.features.login.impl.screens.qrcode.intro
|
package io.element.android.features.login.impl.screens.qrcode.intro
|
||||||
|
|
||||||
import app.cash.molecule.RecompositionMode
|
|
||||||
import app.cash.molecule.moleculeFlow
|
|
||||||
import app.cash.turbine.test
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.libraries.core.meta.BuildMeta
|
import io.element.android.libraries.core.meta.BuildMeta
|
||||||
import io.element.android.libraries.matrix.test.core.aBuildMeta
|
import io.element.android.libraries.matrix.test.core.aBuildMeta
|
||||||
import io.element.android.libraries.permissions.test.FakePermissionsPresenter
|
import io.element.android.libraries.permissions.test.FakePermissionsPresenter
|
||||||
import io.element.android.libraries.permissions.test.FakePermissionsPresenterFactory
|
import io.element.android.libraries.permissions.test.FakePermissionsPresenterFactory
|
||||||
|
import io.element.android.tests.testutils.test
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
@@ -22,9 +20,7 @@ class QrCodeIntroPresenterTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `present - initial state`() = runTest {
|
fun `present - initial state`() = runTest {
|
||||||
val presenter = createQrCodeIntroPresenter()
|
val presenter = createQrCodeIntroPresenter()
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
awaitItem().run {
|
awaitItem().run {
|
||||||
assertThat(appName).isEqualTo("AppName")
|
assertThat(appName).isEqualTo("AppName")
|
||||||
assertThat(desktopAppName).isEqualTo("DesktopAppName")
|
assertThat(desktopAppName).isEqualTo("DesktopAppName")
|
||||||
@@ -39,9 +35,7 @@ class QrCodeIntroPresenterTest {
|
|||||||
val permissionsPresenter = FakePermissionsPresenter().apply { setPermissionGranted() }
|
val permissionsPresenter = FakePermissionsPresenter().apply { setPermissionGranted() }
|
||||||
val permissionsPresenterFactory = FakePermissionsPresenterFactory(permissionsPresenter)
|
val permissionsPresenterFactory = FakePermissionsPresenterFactory(permissionsPresenter)
|
||||||
val presenter = createQrCodeIntroPresenter(permissionsPresenterFactory = permissionsPresenterFactory)
|
val presenter = createQrCodeIntroPresenter(permissionsPresenterFactory = permissionsPresenterFactory)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
awaitItem().eventSink(QrCodeIntroEvents.Continue)
|
awaitItem().eventSink(QrCodeIntroEvents.Continue)
|
||||||
assertThat(awaitItem().canContinue).isTrue()
|
assertThat(awaitItem().canContinue).isTrue()
|
||||||
}
|
}
|
||||||
@@ -52,9 +46,7 @@ class QrCodeIntroPresenterTest {
|
|||||||
val permissionsPresenter = FakePermissionsPresenter()
|
val permissionsPresenter = FakePermissionsPresenter()
|
||||||
val permissionsPresenterFactory = FakePermissionsPresenterFactory(permissionsPresenter)
|
val permissionsPresenterFactory = FakePermissionsPresenterFactory(permissionsPresenter)
|
||||||
val presenter = createQrCodeIntroPresenter(permissionsPresenterFactory = permissionsPresenterFactory)
|
val presenter = createQrCodeIntroPresenter(permissionsPresenterFactory = permissionsPresenterFactory)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
awaitItem().eventSink(QrCodeIntroEvents.Continue)
|
awaitItem().eventSink(QrCodeIntroEvents.Continue)
|
||||||
assertThat(awaitItem().cameraPermissionState.showDialog).isTrue()
|
assertThat(awaitItem().cameraPermissionState.showDialog).isTrue()
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-12
@@ -7,9 +7,6 @@
|
|||||||
|
|
||||||
package io.element.android.features.login.impl.screens.qrcode.scan
|
package io.element.android.features.login.impl.screens.qrcode.scan
|
||||||
|
|
||||||
import app.cash.molecule.RecompositionMode
|
|
||||||
import app.cash.molecule.moleculeFlow
|
|
||||||
import app.cash.turbine.test
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.features.enterprise.api.EnterpriseService
|
import io.element.android.features.enterprise.api.EnterpriseService
|
||||||
import io.element.android.features.enterprise.test.FakeEnterpriseService
|
import io.element.android.features.enterprise.test.FakeEnterpriseService
|
||||||
@@ -34,9 +31,7 @@ class QrCodeScanPresenterTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `present - initial state`() = runTest {
|
fun `present - initial state`() = runTest {
|
||||||
val presenter = createQrCodeScanPresenter()
|
val presenter = createQrCodeScanPresenter()
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
awaitItem().run {
|
awaitItem().run {
|
||||||
assertThat(isScanning).isTrue()
|
assertThat(isScanning).isTrue()
|
||||||
assertThat(authenticationAction.isUninitialized()).isTrue()
|
assertThat(authenticationAction.isUninitialized()).isTrue()
|
||||||
@@ -114,9 +109,7 @@ class QrCodeScanPresenterTest {
|
|||||||
parseQrCodeLoginDataResult = { Result.failure(Exception("Failed to parse QR code")) }
|
parseQrCodeLoginDataResult = { Result.failure(Exception("Failed to parse QR code")) }
|
||||||
)
|
)
|
||||||
val presenter = createQrCodeScanPresenter(qrCodeLoginDataFactory = qrCodeLoginDataFactory)
|
val presenter = createQrCodeScanPresenter(qrCodeLoginDataFactory = qrCodeLoginDataFactory)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink(QrCodeScanEvents.QrCodeScanned(byteArrayOf()))
|
initialState.eventSink(QrCodeScanEvents.QrCodeScanned(byteArrayOf()))
|
||||||
assertThat(awaitItem().isScanning).isFalse()
|
assertThat(awaitItem().isScanning).isFalse()
|
||||||
@@ -140,9 +133,7 @@ class QrCodeScanPresenterTest {
|
|||||||
}
|
}
|
||||||
qrCodeLoginManager.resetAction = resetAction
|
qrCodeLoginManager.resetAction = resetAction
|
||||||
val presenter = createQrCodeScanPresenter(qrCodeLoginDataFactory = qrCodeLoginDataFactory, qrCodeLoginManager = qrCodeLoginManager)
|
val presenter = createQrCodeScanPresenter(qrCodeLoginDataFactory = qrCodeLoginDataFactory, qrCodeLoginManager = qrCodeLoginManager)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
// Skip initial item
|
// Skip initial item
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
|
|
||||||
|
|||||||
+6
-18
@@ -7,9 +7,6 @@
|
|||||||
|
|
||||||
package io.element.android.features.login.impl.screens.searchaccountprovider
|
package io.element.android.features.login.impl.screens.searchaccountprovider
|
||||||
|
|
||||||
import app.cash.molecule.RecompositionMode
|
|
||||||
import app.cash.molecule.moleculeFlow
|
|
||||||
import app.cash.turbine.test
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.features.login.impl.changeserver.aChangeServerState
|
import io.element.android.features.login.impl.changeserver.aChangeServerState
|
||||||
import io.element.android.features.login.impl.resolver.HomeserverResolver
|
import io.element.android.features.login.impl.resolver.HomeserverResolver
|
||||||
@@ -18,6 +15,7 @@ import io.element.android.libraries.matrix.test.auth.FakeHomeServerLoginCompatib
|
|||||||
import io.element.android.tests.testutils.WarmUpRule
|
import io.element.android.tests.testutils.WarmUpRule
|
||||||
import io.element.android.tests.testutils.lambda.lambdaRecorder
|
import io.element.android.tests.testutils.lambda.lambdaRecorder
|
||||||
import io.element.android.tests.testutils.lambda.value
|
import io.element.android.tests.testutils.lambda.value
|
||||||
|
import io.element.android.tests.testutils.test
|
||||||
import io.element.android.tests.testutils.testCoroutineDispatchers
|
import io.element.android.tests.testutils.testCoroutineDispatchers
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
@@ -34,9 +32,7 @@ class SearchAccountProviderPresenterTest {
|
|||||||
homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker),
|
homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker),
|
||||||
changeServerPresenter = { aChangeServerState() }
|
changeServerPresenter = { aChangeServerState() }
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
assertThat(initialState.userInput).isEmpty()
|
assertThat(initialState.userInput).isEmpty()
|
||||||
assertThat(initialState.userInputResult).isEqualTo(AsyncData.Uninitialized)
|
assertThat(initialState.userInputResult).isEqualTo(AsyncData.Uninitialized)
|
||||||
@@ -50,9 +46,7 @@ class SearchAccountProviderPresenterTest {
|
|||||||
homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker),
|
homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker),
|
||||||
changeServerPresenter = { aChangeServerState() }
|
changeServerPresenter = { aChangeServerState() }
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink.invoke(SearchAccountProviderEvents.UserInput("https://test.org"))
|
initialState.eventSink.invoke(SearchAccountProviderEvents.UserInput("https://test.org"))
|
||||||
val withInputState = awaitItem()
|
val withInputState = awaitItem()
|
||||||
@@ -76,9 +70,7 @@ class SearchAccountProviderPresenterTest {
|
|||||||
homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRetriever),
|
homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRetriever),
|
||||||
changeServerPresenter = { aChangeServerState() }
|
changeServerPresenter = { aChangeServerState() }
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink.invoke(SearchAccountProviderEvents.UserInput("test"))
|
initialState.eventSink.invoke(SearchAccountProviderEvents.UserInput("test"))
|
||||||
val withInputState = awaitItem()
|
val withInputState = awaitItem()
|
||||||
@@ -111,9 +103,7 @@ class SearchAccountProviderPresenterTest {
|
|||||||
homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker),
|
homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker),
|
||||||
changeServerPresenter = { aChangeServerState() }
|
changeServerPresenter = { aChangeServerState() }
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink.invoke(SearchAccountProviderEvents.UserInput("test"))
|
initialState.eventSink.invoke(SearchAccountProviderEvents.UserInput("test"))
|
||||||
val withInputState = awaitItem()
|
val withInputState = awaitItem()
|
||||||
@@ -153,9 +143,7 @@ class SearchAccountProviderPresenterTest {
|
|||||||
homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker),
|
homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker),
|
||||||
changeServerPresenter = { aChangeServerState() }
|
changeServerPresenter = { aChangeServerState() }
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
presenter.test {
|
||||||
presenter.present()
|
|
||||||
}.test {
|
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink.invoke(SearchAccountProviderEvents.UserInput("test"))
|
initialState.eventSink.invoke(SearchAccountProviderEvents.UserInput("test"))
|
||||||
val withInputState = awaitItem()
|
val withInputState = awaitItem()
|
||||||
|
|||||||
Reference in New Issue
Block a user