misc (space) : update tests after rework
This commit is contained in:
parent
388cb31700
commit
0944ab0c28
4 changed files with 65 additions and 84 deletions
|
|
@ -12,8 +12,12 @@ import com.bumble.appyx.core.modality.BuildContext
|
||||||
import com.bumble.appyx.testing.junit4.util.MainDispatcherRule
|
import com.bumble.appyx.testing.junit4.util.MainDispatcherRule
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.features.space.api.SpaceEntryPoint
|
import io.element.android.features.space.api.SpaceEntryPoint
|
||||||
|
import io.element.android.features.space.impl.di.FakeSpaceFlowGraph
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import io.element.android.libraries.matrix.test.A_ROOM_ID
|
import io.element.android.libraries.matrix.test.A_ROOM_ID
|
||||||
|
import io.element.android.libraries.matrix.test.FakeMatrixClient
|
||||||
|
import io.element.android.libraries.matrix.test.spaces.FakeSpaceRoomList
|
||||||
|
import io.element.android.libraries.matrix.test.spaces.FakeSpaceService
|
||||||
import io.element.android.tests.testutils.lambda.lambdaError
|
import io.element.android.tests.testutils.lambda.lambdaError
|
||||||
import io.element.android.tests.testutils.node.TestParentNode
|
import io.element.android.tests.testutils.node.TestParentNode
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
|
|
@ -34,6 +38,12 @@ class DefaultSpaceEntryPointTest {
|
||||||
SpaceFlowNode(
|
SpaceFlowNode(
|
||||||
buildContext = buildContext,
|
buildContext = buildContext,
|
||||||
plugins = plugins,
|
plugins = plugins,
|
||||||
|
matrixClient = FakeMatrixClient(
|
||||||
|
spaceService = FakeSpaceService(
|
||||||
|
spaceRoomListResult = { _: RoomId -> FakeSpaceRoomList(A_ROOM_ID) }
|
||||||
|
)
|
||||||
|
),
|
||||||
|
graphFactory = FakeSpaceFlowGraph.Factory
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
val callback = object : SpaceEntryPoint.Callback {
|
val callback = object : SpaceEntryPoint.Callback {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2025 New Vector Ltd.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||||
|
* Please see LICENSE files in the repository root for full details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.element.android.features.space.impl.di
|
||||||
|
|
||||||
|
import com.bumble.appyx.core.node.Node
|
||||||
|
import io.element.android.libraries.architecture.AssistedNodeFactory
|
||||||
|
import io.element.android.libraries.matrix.api.spaces.SpaceRoomList
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
|
class FakeSpaceFlowGraph : SpaceFlowGraph {
|
||||||
|
object Factory : SpaceFlowGraph.Factory {
|
||||||
|
override fun create(spaceRoomList: SpaceRoomList): SpaceFlowGraph {
|
||||||
|
return FakeSpaceFlowGraph()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun nodeFactories(): Map<KClass<out Node>, AssistedNodeFactory<*>> {
|
||||||
|
return emptyMap()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -10,15 +10,11 @@
|
||||||
package io.element.android.features.space.impl.leave
|
package io.element.android.features.space.impl.leave
|
||||||
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.features.space.api.SpaceEntryPoint
|
|
||||||
import io.element.android.libraries.architecture.AsyncAction
|
import io.element.android.libraries.architecture.AsyncAction
|
||||||
import io.element.android.libraries.architecture.AsyncData
|
import io.element.android.libraries.architecture.AsyncData
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.spaces.SpaceRoomList
|
||||||
import io.element.android.libraries.matrix.test.A_ROOM_ID
|
|
||||||
import io.element.android.libraries.matrix.test.A_SPACE_NAME
|
import io.element.android.libraries.matrix.test.A_SPACE_NAME
|
||||||
import io.element.android.libraries.matrix.test.FakeMatrixClient
|
|
||||||
import io.element.android.libraries.matrix.test.spaces.FakeSpaceRoomList
|
import io.element.android.libraries.matrix.test.spaces.FakeSpaceRoomList
|
||||||
import io.element.android.libraries.matrix.test.spaces.FakeSpaceService
|
|
||||||
import io.element.android.libraries.previewutils.room.aSpaceRoom
|
import io.element.android.libraries.previewutils.room.aSpaceRoom
|
||||||
import io.element.android.tests.testutils.test
|
import io.element.android.tests.testutils.test
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
|
|
@ -29,15 +25,7 @@ import org.junit.Test
|
||||||
class LeaveSpacePresenterTest {
|
class LeaveSpacePresenterTest {
|
||||||
@Test
|
@Test
|
||||||
fun `present - initial state`() = runTest {
|
fun `present - initial state`() = runTest {
|
||||||
val presenter = createLeaveSpacePresenter(
|
val presenter = createLeaveSpacePresenter()
|
||||||
matrixClient = FakeMatrixClient(
|
|
||||||
spaceService = FakeSpaceService(
|
|
||||||
spaceRoomListResult = {
|
|
||||||
FakeSpaceRoomList()
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val state = awaitItem()
|
val state = awaitItem()
|
||||||
assertThat(state.spaceName).isNull()
|
assertThat(state.spaceName).isNull()
|
||||||
|
|
@ -51,11 +39,7 @@ class LeaveSpacePresenterTest {
|
||||||
fun `present - current space name`() = runTest {
|
fun `present - current space name`() = runTest {
|
||||||
val fakeSpaceRoomList = FakeSpaceRoomList()
|
val fakeSpaceRoomList = FakeSpaceRoomList()
|
||||||
val presenter = createLeaveSpacePresenter(
|
val presenter = createLeaveSpacePresenter(
|
||||||
matrixClient = FakeMatrixClient(
|
spaceRoomList = fakeSpaceRoomList,
|
||||||
spaceService = FakeSpaceService(
|
|
||||||
spaceRoomListResult = { fakeSpaceRoomList },
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val state = awaitItem()
|
val state = awaitItem()
|
||||||
|
|
@ -71,12 +55,10 @@ class LeaveSpacePresenterTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createLeaveSpacePresenter(
|
private fun createLeaveSpacePresenter(
|
||||||
inputs: SpaceEntryPoint.Inputs = SpaceEntryPoint.Inputs(A_ROOM_ID),
|
spaceRoomList: SpaceRoomList = FakeSpaceRoomList(),
|
||||||
matrixClient: MatrixClient = FakeMatrixClient(),
|
|
||||||
): LeaveSpacePresenter {
|
): LeaveSpacePresenter {
|
||||||
return LeaveSpacePresenter(
|
return LeaveSpacePresenter(
|
||||||
inputs = inputs,
|
spaceRoomList = spaceRoomList,
|
||||||
matrixClient = matrixClient,
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,13 +12,10 @@ package io.element.android.features.space.impl.root
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.features.invite.api.SeenInvitesStore
|
import io.element.android.features.invite.api.SeenInvitesStore
|
||||||
import io.element.android.features.invite.test.InMemorySeenInvitesStore
|
import io.element.android.features.invite.test.InMemorySeenInvitesStore
|
||||||
import io.element.android.features.space.api.SpaceEntryPoint
|
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
import io.element.android.libraries.matrix.api.spaces.SpaceRoomList
|
import io.element.android.libraries.matrix.api.spaces.SpaceRoomList
|
||||||
import io.element.android.libraries.matrix.test.A_ROOM_ID
|
|
||||||
import io.element.android.libraries.matrix.test.FakeMatrixClient
|
import io.element.android.libraries.matrix.test.FakeMatrixClient
|
||||||
import io.element.android.libraries.matrix.test.spaces.FakeSpaceRoomList
|
import io.element.android.libraries.matrix.test.spaces.FakeSpaceRoomList
|
||||||
import io.element.android.libraries.matrix.test.spaces.FakeSpaceService
|
|
||||||
import io.element.android.libraries.previewutils.room.aSpaceRoom
|
import io.element.android.libraries.previewutils.room.aSpaceRoom
|
||||||
import io.element.android.tests.testutils.lambda.lambdaRecorder
|
import io.element.android.tests.testutils.lambda.lambdaRecorder
|
||||||
import io.element.android.tests.testutils.test
|
import io.element.android.tests.testutils.test
|
||||||
|
|
@ -33,17 +30,8 @@ class SpacePresenterTest {
|
||||||
val paginateResult = lambdaRecorder<Result<Unit>> {
|
val paginateResult = lambdaRecorder<Result<Unit>> {
|
||||||
Result.success(Unit)
|
Result.success(Unit)
|
||||||
}
|
}
|
||||||
val presenter = createSpacePresenter(
|
val spaceRoomList = FakeSpaceRoomList(paginateResult = paginateResult)
|
||||||
client = FakeMatrixClient(
|
val presenter = createSpacePresenter(spaceRoomList = spaceRoomList)
|
||||||
spaceService = FakeSpaceService(
|
|
||||||
spaceRoomListResult = {
|
|
||||||
FakeSpaceRoomList(
|
|
||||||
paginateResult = paginateResult,
|
|
||||||
)
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val state = awaitItem()
|
val state = awaitItem()
|
||||||
assertThat(state.currentSpace).isNull()
|
assertThat(state.currentSpace).isNull()
|
||||||
|
|
@ -61,17 +49,8 @@ class SpacePresenterTest {
|
||||||
val paginateResult = lambdaRecorder<Result<Unit>> {
|
val paginateResult = lambdaRecorder<Result<Unit>> {
|
||||||
Result.success(Unit)
|
Result.success(Unit)
|
||||||
}
|
}
|
||||||
val presenter = createSpacePresenter(
|
val spaceRoomList = FakeSpaceRoomList(paginateResult = paginateResult)
|
||||||
client = FakeMatrixClient(
|
val presenter = createSpacePresenter(spaceRoomList = spaceRoomList)
|
||||||
spaceService = FakeSpaceService(
|
|
||||||
spaceRoomListResult = {
|
|
||||||
FakeSpaceRoomList(
|
|
||||||
paginateResult = paginateResult,
|
|
||||||
)
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val state = awaitItem()
|
val state = awaitItem()
|
||||||
advanceUntilIdle()
|
advanceUntilIdle()
|
||||||
|
|
@ -84,25 +63,20 @@ class SpacePresenterTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `present - has more to load value`() = runTest {
|
fun `present - has more to load value`() = runTest {
|
||||||
val fakeSpaceRoomList = FakeSpaceRoomList(
|
val paginateResult = lambdaRecorder<Result<Unit>> {
|
||||||
paginateResult = { Result.success(Unit) },
|
Result.success(Unit)
|
||||||
)
|
}
|
||||||
val presenter = createSpacePresenter(
|
val spaceRoomList = FakeSpaceRoomList(paginateResult = paginateResult)
|
||||||
client = FakeMatrixClient(
|
val presenter = createSpacePresenter(spaceRoomList = spaceRoomList)
|
||||||
spaceService = FakeSpaceService(
|
|
||||||
spaceRoomListResult = { fakeSpaceRoomList },
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val state = awaitItem()
|
val state = awaitItem()
|
||||||
advanceUntilIdle()
|
advanceUntilIdle()
|
||||||
assertThat(state.hasMoreToLoad).isTrue()
|
assertThat(state.hasMoreToLoad).isTrue()
|
||||||
fakeSpaceRoomList.emitPaginationStatus(
|
spaceRoomList.emitPaginationStatus(
|
||||||
SpaceRoomList.PaginationStatus.Idle(hasMoreToLoad = false)
|
SpaceRoomList.PaginationStatus.Idle(hasMoreToLoad = false)
|
||||||
)
|
)
|
||||||
assertThat(awaitItem().hasMoreToLoad).isFalse()
|
assertThat(awaitItem().hasMoreToLoad).isFalse()
|
||||||
fakeSpaceRoomList.emitPaginationStatus(
|
spaceRoomList.emitPaginationStatus(
|
||||||
SpaceRoomList.PaginationStatus.Idle(hasMoreToLoad = true)
|
SpaceRoomList.PaginationStatus.Idle(hasMoreToLoad = true)
|
||||||
)
|
)
|
||||||
assertThat(awaitItem().hasMoreToLoad).isTrue()
|
assertThat(awaitItem().hasMoreToLoad).isTrue()
|
||||||
|
|
@ -111,56 +85,46 @@ class SpacePresenterTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `present - current space value`() = runTest {
|
fun `present - current space value`() = runTest {
|
||||||
val fakeSpaceRoomList = FakeSpaceRoomList(
|
val paginateResult = lambdaRecorder<Result<Unit>> {
|
||||||
paginateResult = { Result.success(Unit) },
|
Result.success(Unit)
|
||||||
)
|
}
|
||||||
val presenter = createSpacePresenter(
|
val spaceRoomList = FakeSpaceRoomList(paginateResult = paginateResult)
|
||||||
client = FakeMatrixClient(
|
val presenter = createSpacePresenter(spaceRoomList = spaceRoomList)
|
||||||
spaceService = FakeSpaceService(
|
|
||||||
spaceRoomListResult = { fakeSpaceRoomList },
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val state = awaitItem()
|
val state = awaitItem()
|
||||||
advanceUntilIdle()
|
advanceUntilIdle()
|
||||||
assertThat(state.currentSpace).isNull()
|
assertThat(state.currentSpace).isNull()
|
||||||
val aSpace = aSpaceRoom()
|
val aSpace = aSpaceRoom()
|
||||||
fakeSpaceRoomList.emitCurrentSpace(aSpace)
|
spaceRoomList.emitCurrentSpace(aSpace)
|
||||||
assertThat(awaitItem().currentSpace).isEqualTo(aSpace)
|
assertThat(awaitItem().currentSpace).isEqualTo(aSpace)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `present - children value`() = runTest {
|
fun `present - children value`() = runTest {
|
||||||
val fakeSpaceRoomList = FakeSpaceRoomList(
|
val paginateResult = lambdaRecorder<Result<Unit>> {
|
||||||
paginateResult = { Result.success(Unit) },
|
Result.success(Unit)
|
||||||
)
|
}
|
||||||
val presenter = createSpacePresenter(
|
val spaceRoomList = FakeSpaceRoomList(paginateResult = paginateResult)
|
||||||
client = FakeMatrixClient(
|
val presenter = createSpacePresenter(spaceRoomList = spaceRoomList)
|
||||||
spaceService = FakeSpaceService(
|
|
||||||
spaceRoomListResult = { fakeSpaceRoomList },
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val state = awaitItem()
|
val state = awaitItem()
|
||||||
advanceUntilIdle()
|
advanceUntilIdle()
|
||||||
assertThat(state.children).isEmpty()
|
assertThat(state.children).isEmpty()
|
||||||
val aSpace = aSpaceRoom()
|
val aSpace = aSpaceRoom()
|
||||||
fakeSpaceRoomList.emitSpaceRooms(listOf(aSpace))
|
spaceRoomList.emitSpaceRooms(listOf(aSpace))
|
||||||
assertThat(awaitItem().children).containsExactly(aSpace)
|
assertThat(awaitItem().children).containsExactly(aSpace)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createSpacePresenter(
|
private fun createSpacePresenter(
|
||||||
inputs: SpaceEntryPoint.Inputs = SpaceEntryPoint.Inputs(A_ROOM_ID),
|
|
||||||
client: MatrixClient = FakeMatrixClient(),
|
client: MatrixClient = FakeMatrixClient(),
|
||||||
|
spaceRoomList: SpaceRoomList = FakeSpaceRoomList(),
|
||||||
seenInvitesStore: SeenInvitesStore = InMemorySeenInvitesStore(),
|
seenInvitesStore: SeenInvitesStore = InMemorySeenInvitesStore(),
|
||||||
): SpacePresenter {
|
): SpacePresenter {
|
||||||
return SpacePresenter(
|
return SpacePresenter(
|
||||||
inputs = inputs,
|
|
||||||
client = client,
|
client = client,
|
||||||
|
spaceRoomList = spaceRoomList,
|
||||||
seenInvitesStore = seenInvitesStore,
|
seenInvitesStore = seenInvitesStore,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue