Skip to content

Commit a87aebe

Browse files
committed
Multi accounts - Add test on AccountSelectPresenter
1 parent f578e2b commit a87aebe

File tree

2 files changed

+46
-8
lines changed

2 files changed

+46
-8
lines changed

libraries/accountselect/impl/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,6 @@ dependencies {
3535
testImplementation(libs.test.turbine)
3636
testImplementation(projects.libraries.matrix.test)
3737
testImplementation(projects.libraries.sessionStorage.implMemory)
38+
testImplementation(projects.libraries.sessionStorage.test)
3839
testImplementation(projects.tests.testutils)
3940
}

libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/AccountSelectPresenterTest.kt

Lines changed: 45 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,16 @@
77

88
package io.element.android.libraries.accountselect.impl
99

10-
import app.cash.molecule.RecompositionMode
11-
import app.cash.molecule.moleculeFlow
12-
import app.cash.turbine.test
1310
import com.google.common.truth.Truth.assertThat
11+
import io.element.android.libraries.matrix.api.user.MatrixUser
12+
import io.element.android.libraries.matrix.test.A_SESSION_ID
13+
import io.element.android.libraries.matrix.test.A_SESSION_ID_2
1414
import io.element.android.libraries.sessionstorage.api.SessionStore
15+
import io.element.android.libraries.sessionstorage.impl.memory.InMemoryMultiSessionsStore
1516
import io.element.android.libraries.sessionstorage.impl.memory.InMemorySessionStore
17+
import io.element.android.libraries.sessionstorage.test.aSessionData
1618
import io.element.android.tests.testutils.WarmUpRule
17-
import kotlinx.coroutines.test.TestScope
19+
import io.element.android.tests.testutils.test
1820
import kotlinx.coroutines.test.runTest
1921
import org.junit.Rule
2022
import org.junit.Test
@@ -26,15 +28,50 @@ class AccountSelectPresenterTest {
2628
@Test
2729
fun `present - initial state`() = runTest {
2830
val presenter = createAccountSelectPresenter()
29-
moleculeFlow(RecompositionMode.Immediate) {
30-
presenter.present()
31-
}.test {
31+
presenter.test {
3232
val initialState = awaitItem()
3333
assertThat(initialState.accounts).isEmpty()
3434
}
3535
}
3636

37-
private fun TestScope.createAccountSelectPresenter(
37+
@Test
38+
fun `present - multiple accounts case`() = runTest {
39+
val presenter = createAccountSelectPresenter(
40+
sessionStore = InMemoryMultiSessionsStore().apply {
41+
addSession(aSessionData(sessionId = A_SESSION_ID.value))
42+
addSession(
43+
aSessionData(
44+
sessionId = A_SESSION_ID_2.value,
45+
userDisplayName = "Bob",
46+
userAvatarUrl = "avatarUrl",
47+
)
48+
)
49+
}
50+
)
51+
presenter.test {
52+
skipItems(1)
53+
val initialState = awaitItem()
54+
assertThat(initialState.accounts).hasSize(2)
55+
val firstAccount = initialState.accounts[0]
56+
assertThat(firstAccount).isEqualTo(
57+
MatrixUser(
58+
userId = A_SESSION_ID,
59+
displayName = null,
60+
avatarUrl = null,
61+
)
62+
)
63+
val secondAccount = initialState.accounts[1]
64+
assertThat(secondAccount).isEqualTo(
65+
MatrixUser(
66+
userId = A_SESSION_ID_2,
67+
displayName = "Bob",
68+
avatarUrl = "avatarUrl",
69+
)
70+
)
71+
}
72+
}
73+
74+
private fun createAccountSelectPresenter(
3875
sessionStore: SessionStore = InMemorySessionStore(),
3976
) = AccountSelectPresenter(
4077
sessionStore = sessionStore,

0 commit comments

Comments
 (0)