Update tests
This commit is contained in:
parent
7035a81e0f
commit
3c64eeb1c4
1 changed files with 4 additions and 135 deletions
|
|
@ -14,15 +14,12 @@ 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.MatrixClient
|
||||||
import io.element.android.libraries.matrix.test.AN_EXCEPTION
|
|
||||||
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.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.FakeMatrixClient
|
||||||
import io.element.android.libraries.matrix.test.room.FakeBaseRoom
|
|
||||||
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.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.test
|
import io.element.android.tests.testutils.test
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
import kotlinx.coroutines.test.advanceUntilIdle
|
import kotlinx.coroutines.test.advanceUntilIdle
|
||||||
|
|
@ -32,16 +29,11 @@ import org.junit.Test
|
||||||
class LeaveSpacePresenterTest {
|
class LeaveSpacePresenterTest {
|
||||||
@Test
|
@Test
|
||||||
fun `present - initial state`() = runTest {
|
fun `present - initial state`() = runTest {
|
||||||
val paginateResult = lambdaRecorder<Result<Unit>> {
|
|
||||||
Result.success(Unit)
|
|
||||||
}
|
|
||||||
val presenter = createLeaveSpacePresenter(
|
val presenter = createLeaveSpacePresenter(
|
||||||
matrixClient = FakeMatrixClient(
|
matrixClient = FakeMatrixClient(
|
||||||
spaceService = FakeSpaceService(
|
spaceService = FakeSpaceService(
|
||||||
spaceRoomListResult = {
|
spaceRoomListResult = {
|
||||||
FakeSpaceRoomList(
|
FakeSpaceRoomList()
|
||||||
paginateResult = paginateResult,
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
@ -49,10 +41,9 @@ class LeaveSpacePresenterTest {
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val state = awaitItem()
|
val state = awaitItem()
|
||||||
assertThat(state.spaceName).isNull()
|
assertThat(state.spaceName).isNull()
|
||||||
assertThat(state.selectableSpaceRooms).isEqualTo(AsyncAction.Uninitialized)
|
assertThat(state.selectableSpaceRooms).isEqualTo(AsyncData.Uninitialized)
|
||||||
assertThat(state.leaveSpaceAction).isEqualTo(AsyncAction.Uninitialized)
|
assertThat(state.leaveSpaceAction).isEqualTo(AsyncAction.Uninitialized)
|
||||||
advanceUntilIdle()
|
skipItems(1)
|
||||||
paginateResult.assertions().isCalledOnce()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -74,133 +65,11 @@ class LeaveSpacePresenterTest {
|
||||||
name = A_SPACE_NAME
|
name = A_SPACE_NAME
|
||||||
)
|
)
|
||||||
fakeSpaceRoomList.emitCurrentSpace(aSpace)
|
fakeSpaceRoomList.emitCurrentSpace(aSpace)
|
||||||
|
skipItems(1)
|
||||||
assertThat(awaitItem().spaceName).isEqualTo(A_SPACE_NAME)
|
assertThat(awaitItem().spaceName).isEqualTo(A_SPACE_NAME)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `present - leave space and cancel`() = runTest {
|
|
||||||
val fakeSpaceRoomList = FakeSpaceRoomList(
|
|
||||||
paginateResult = { Result.success(Unit) },
|
|
||||||
)
|
|
||||||
val presenter = createLeaveSpacePresenter(
|
|
||||||
matrixClient = FakeMatrixClient(
|
|
||||||
spaceService = FakeSpaceService(
|
|
||||||
spaceRoomListResult = { fakeSpaceRoomList },
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
presenter.test {
|
|
||||||
val state = awaitItem()
|
|
||||||
advanceUntilIdle()
|
|
||||||
assertThat(state.leaveSpaceAction).isEqualTo(AsyncAction.Uninitialized)
|
|
||||||
state.eventSink(LeaveSpaceEvents.LeaveSpace)
|
|
||||||
val stateAfterStarting = awaitItem()
|
|
||||||
assertThat(stateAfterStarting.leaveSpaceAction).isInstanceOf(LeaveSpaceState::class.java)
|
|
||||||
val shown = stateAfterStarting.leaveSpaceAction as LeaveSpaceState
|
|
||||||
assertThat(shown.spaceName).isNull()
|
|
||||||
assertThat(shown.selectableSpaceRooms).isInstanceOf(AsyncData.Loading::class.java)
|
|
||||||
val stateAfterLoading = awaitItem()
|
|
||||||
val shownLoaded = stateAfterLoading.leaveSpaceAction as LeaveSpaceState
|
|
||||||
assertThat(shownLoaded.selectableSpaceRooms.dataOrNull()!!).isEmpty()
|
|
||||||
stateAfterLoading.eventSink(LeaveSpaceEvents.CloseError)
|
|
||||||
val stateAfterCancel = awaitItem()
|
|
||||||
assertThat(stateAfterCancel.leaveSpaceAction).isEqualTo(AsyncAction.Uninitialized)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `present - leave space and confirm`() = runTest {
|
|
||||||
val fakeSpaceRoomList = FakeSpaceRoomList(
|
|
||||||
paginateResult = { Result.success(Unit) },
|
|
||||||
)
|
|
||||||
val leaveRoomLambda = lambdaRecorder<Result<Unit>> {
|
|
||||||
Result.success(Unit)
|
|
||||||
}
|
|
||||||
val presenter = createLeaveSpacePresenter(
|
|
||||||
matrixClient = FakeMatrixClient(
|
|
||||||
spaceService = FakeSpaceService(
|
|
||||||
spaceRoomListResult = { fakeSpaceRoomList },
|
|
||||||
),
|
|
||||||
).apply {
|
|
||||||
givenGetRoomResult(
|
|
||||||
roomId = A_ROOM_ID,
|
|
||||||
result = FakeBaseRoom(
|
|
||||||
leaveRoomLambda = leaveRoomLambda,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
},
|
|
||||||
)
|
|
||||||
presenter.test {
|
|
||||||
val state = awaitItem()
|
|
||||||
advanceUntilIdle()
|
|
||||||
assertThat(state.leaveSpaceAction).isEqualTo(AsyncAction.Uninitialized)
|
|
||||||
state.eventSink(LeaveSpaceEvents.LeaveSpace)
|
|
||||||
val stateAfterStarting = awaitItem()
|
|
||||||
assertThat(stateAfterStarting.leaveSpaceAction).isInstanceOf(LeaveSpaceState::class.java)
|
|
||||||
val shown = stateAfterStarting.leaveSpaceAction as LeaveSpaceState
|
|
||||||
assertThat(shown.spaceName).isNull()
|
|
||||||
assertThat(shown.selectableSpaceRooms).isInstanceOf(AsyncData.Loading::class.java)
|
|
||||||
val stateAfterLoading = awaitItem()
|
|
||||||
val shownLoaded = stateAfterLoading.leaveSpaceAction as LeaveSpaceState
|
|
||||||
assertThat(shownLoaded.selectableSpaceRooms.dataOrNull()!!).isEmpty()
|
|
||||||
stateAfterLoading.eventSink(LeaveSpaceEvents.LeaveSpace)
|
|
||||||
val stateLoading = awaitItem()
|
|
||||||
assertThat(stateLoading.leaveSpaceAction).isEqualTo(AsyncAction.Loading)
|
|
||||||
val stateFinal = awaitItem()
|
|
||||||
assertThat(stateFinal.leaveSpaceAction).isEqualTo(AsyncAction.Success(Unit))
|
|
||||||
leaveRoomLambda.assertions().isCalledOnce()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `present - leave space, confirm then failure`() = runTest {
|
|
||||||
val fakeSpaceRoomList = FakeSpaceRoomList(
|
|
||||||
paginateResult = { Result.success(Unit) },
|
|
||||||
)
|
|
||||||
val leaveRoomLambda = lambdaRecorder<Result<Unit>> {
|
|
||||||
Result.failure(AN_EXCEPTION)
|
|
||||||
}
|
|
||||||
val presenter = createLeaveSpacePresenter(
|
|
||||||
matrixClient = FakeMatrixClient(
|
|
||||||
spaceService = FakeSpaceService(
|
|
||||||
spaceRoomListResult = { fakeSpaceRoomList },
|
|
||||||
),
|
|
||||||
).apply {
|
|
||||||
givenGetRoomResult(
|
|
||||||
roomId = A_ROOM_ID,
|
|
||||||
result = FakeBaseRoom(
|
|
||||||
leaveRoomLambda = leaveRoomLambda,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
},
|
|
||||||
)
|
|
||||||
presenter.test {
|
|
||||||
val state = awaitItem()
|
|
||||||
advanceUntilIdle()
|
|
||||||
assertThat(state.leaveSpaceAction).isEqualTo(AsyncAction.Uninitialized)
|
|
||||||
state.eventSink(LeaveSpaceEvents.LeaveSpace)
|
|
||||||
val stateAfterStarting = awaitItem()
|
|
||||||
assertThat(stateAfterStarting.leaveSpaceAction).isInstanceOf(LeaveSpaceState::class.java)
|
|
||||||
val shown = stateAfterStarting.leaveSpaceAction as LeaveSpaceState
|
|
||||||
assertThat(shown.spaceName).isNull()
|
|
||||||
assertThat(shown.selectableSpaceRooms).isInstanceOf(AsyncData.Loading::class.java)
|
|
||||||
val stateAfterLoading = awaitItem()
|
|
||||||
val shownLoaded = stateAfterLoading.leaveSpaceAction as LeaveSpaceState
|
|
||||||
assertThat(shownLoaded.selectableSpaceRooms.dataOrNull()!!).isEmpty()
|
|
||||||
stateAfterLoading.eventSink(LeaveSpaceEvents.LeaveSpace)
|
|
||||||
val stateLoading = awaitItem()
|
|
||||||
assertThat(stateLoading.leaveSpaceAction).isEqualTo(AsyncAction.Loading)
|
|
||||||
val stateError = awaitItem()
|
|
||||||
assertThat(stateError.leaveSpaceAction).isEqualTo(AsyncAction.Failure(AN_EXCEPTION))
|
|
||||||
leaveRoomLambda.assertions().isCalledOnce()
|
|
||||||
// Close error
|
|
||||||
stateError.eventSink(LeaveSpaceEvents.CloseError)
|
|
||||||
val stateFinal = awaitItem()
|
|
||||||
assertThat(stateFinal.leaveSpaceAction).isEqualTo(AsyncAction.Uninitialized)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun createLeaveSpacePresenter(
|
private fun createLeaveSpacePresenter(
|
||||||
inputs: SpaceEntryPoint.Inputs = SpaceEntryPoint.Inputs(A_ROOM_ID),
|
inputs: SpaceEntryPoint.Inputs = SpaceEntryPoint.Inputs(A_ROOM_ID),
|
||||||
matrixClient: MatrixClient = FakeMatrixClient(),
|
matrixClient: MatrixClient = FakeMatrixClient(),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue