Add test to JoinRoomPresenter to cover RoomPreview
This commit is contained in:
parent
2a256f4a7a
commit
1ed3e0c365
2 changed files with 109 additions and 3 deletions
|
|
@ -27,6 +27,8 @@ import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias
|
import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias
|
||||||
import io.element.android.libraries.matrix.api.room.CurrentUserMembership
|
import io.element.android.libraries.matrix.api.room.CurrentUserMembership
|
||||||
|
import io.element.android.libraries.matrix.api.room.preview.RoomPreview
|
||||||
|
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_ROOM_NAME
|
import io.element.android.libraries.matrix.test.A_ROOM_NAME
|
||||||
import io.element.android.libraries.matrix.test.FakeMatrixClient
|
import io.element.android.libraries.matrix.test.FakeMatrixClient
|
||||||
|
|
@ -240,6 +242,110 @@ class JoinRoomPresenterTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `present - when room is not known RoomPreview is loaded`() = runTest {
|
||||||
|
val client = FakeMatrixClient(
|
||||||
|
getRoomPreviewResult = {
|
||||||
|
Result.success(
|
||||||
|
RoomPreview(
|
||||||
|
roomId = A_ROOM_ID,
|
||||||
|
canonicalAlias = RoomAlias("#alias:matrix.org"),
|
||||||
|
name = "Room name",
|
||||||
|
topic = "Room topic",
|
||||||
|
avatarUrl = "avatarUrl",
|
||||||
|
numberOfJoinedMembers = 2,
|
||||||
|
roomType = null,
|
||||||
|
isHistoryWorldReadable = false,
|
||||||
|
isJoined = false,
|
||||||
|
isInvited = false,
|
||||||
|
isPublic = true,
|
||||||
|
canKnock = false,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
val presenter = createJoinRoomPresenter(
|
||||||
|
matrixClient = client
|
||||||
|
)
|
||||||
|
presenter.test {
|
||||||
|
skipItems(1)
|
||||||
|
awaitItem().also { state ->
|
||||||
|
assertThat(state.contentState).isEqualTo(
|
||||||
|
ContentState.Loaded(
|
||||||
|
roomId = A_ROOM_ID,
|
||||||
|
name = "Room name",
|
||||||
|
topic = "Room topic",
|
||||||
|
alias = RoomAlias("#alias:matrix.org"),
|
||||||
|
numberOfMembers = 2,
|
||||||
|
isDirect = false,
|
||||||
|
roomAvatarUrl = "avatarUrl",
|
||||||
|
joinAuthorisationStatus = JoinAuthorisationStatus.CanJoin
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `present - when room is not known RoomPreview is loaded with error`() = runTest {
|
||||||
|
val client = FakeMatrixClient(
|
||||||
|
getRoomPreviewResult = {
|
||||||
|
Result.failure(AN_EXCEPTION)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
val presenter = createJoinRoomPresenter(
|
||||||
|
matrixClient = client
|
||||||
|
)
|
||||||
|
presenter.test {
|
||||||
|
skipItems(1)
|
||||||
|
awaitItem().also { state ->
|
||||||
|
assertThat(state.contentState).isEqualTo(
|
||||||
|
ContentState.Failure(
|
||||||
|
roomIdOrAlias = A_ROOM_ID.toRoomIdOrAlias(),
|
||||||
|
error = AN_EXCEPTION
|
||||||
|
)
|
||||||
|
)
|
||||||
|
state.eventSink(JoinRoomEvents.Retry)
|
||||||
|
}
|
||||||
|
skipItems(1)
|
||||||
|
awaitItem().also { state ->
|
||||||
|
assertThat(state.contentState).isEqualTo(
|
||||||
|
ContentState.Loading(A_ROOM_ID.toRoomIdOrAlias())
|
||||||
|
)
|
||||||
|
}
|
||||||
|
awaitItem().also { state ->
|
||||||
|
assertThat(state.contentState).isEqualTo(
|
||||||
|
ContentState.Failure(
|
||||||
|
roomIdOrAlias = A_ROOM_ID.toRoomIdOrAlias(),
|
||||||
|
error = AN_EXCEPTION
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `present - when room is not known RoomPreview is loaded with error 403`() = runTest {
|
||||||
|
val client = FakeMatrixClient(
|
||||||
|
getRoomPreviewResult = {
|
||||||
|
Result.failure(Exception("403"))
|
||||||
|
}
|
||||||
|
)
|
||||||
|
val presenter = createJoinRoomPresenter(
|
||||||
|
matrixClient = client
|
||||||
|
)
|
||||||
|
presenter.test {
|
||||||
|
skipItems(1)
|
||||||
|
awaitItem().also { state ->
|
||||||
|
assertThat(state.contentState).isEqualTo(
|
||||||
|
ContentState.UnknownRoom(
|
||||||
|
roomIdOrAlias = A_ROOM_ID.toRoomIdOrAlias(),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun createJoinRoomPresenter(
|
private fun createJoinRoomPresenter(
|
||||||
roomId: RoomId = A_ROOM_ID,
|
roomId: RoomId = A_ROOM_ID,
|
||||||
roomDescription: Optional<RoomDescription> = Optional.empty(),
|
roomDescription: Optional<RoomDescription> = Optional.empty(),
|
||||||
|
|
|
||||||
|
|
@ -282,11 +282,11 @@ class FakeMatrixClient(
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun resolveRoomAlias(roomAlias: RoomAlias): Result<RoomId> = simulateLongTask {
|
override suspend fun resolveRoomAlias(roomAlias: RoomAlias): Result<RoomId> = simulateLongTask {
|
||||||
return resolveRoomAliasResult(roomAlias)
|
resolveRoomAliasResult(roomAlias)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun getRoomPreview(roomIdOrAlias: RoomIdOrAlias): Result<RoomPreview> {
|
override suspend fun getRoomPreview(roomIdOrAlias: RoomIdOrAlias): Result<RoomPreview> = simulateLongTask {
|
||||||
return getRoomPreviewResult(roomIdOrAlias)
|
getRoomPreviewResult(roomIdOrAlias)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun getRecentlyVisitedRooms(): Result<List<RoomId>> {
|
override suspend fun getRecentlyVisitedRooms(): Result<List<RoomId>> {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue