Add missing tests.

This commit is contained in:
Benoit Marty
2025-09-22 17:53:30 +02:00
parent 09f4518eb7
commit e8c2fe3a75
2 changed files with 134 additions and 0 deletions

View File

@@ -43,4 +43,5 @@ dependencies {
testImplementation(projects.features.invite.test) testImplementation(projects.features.invite.test)
testImplementation(projects.libraries.matrix.test) testImplementation(projects.libraries.matrix.test)
testImplementation(projects.libraries.preferences.test) testImplementation(projects.libraries.preferences.test)
testImplementation(projects.libraries.previewutils)
} }

View File

@@ -50,8 +50,10 @@ import io.element.android.libraries.matrix.test.room.aRoomPreviewInfo
import io.element.android.libraries.matrix.test.room.join.FakeJoinRoom import io.element.android.libraries.matrix.test.room.join.FakeJoinRoom
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.matrix.ui.components.aMatrixUser
import io.element.android.libraries.matrix.ui.model.InviteSender import io.element.android.libraries.matrix.ui.model.InviteSender
import io.element.android.libraries.matrix.ui.model.toInviteSender import io.element.android.libraries.matrix.ui.model.toInviteSender
import io.element.android.libraries.previewutils.room.aSpaceRoom
import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.WarmUpRule
import io.element.android.tests.testutils.lambda.any import io.element.android.tests.testutils.lambda.any
import io.element.android.tests.testutils.lambda.assert import io.element.android.tests.testutils.lambda.assert
@@ -189,6 +191,137 @@ class JoinRoomPresenterTest {
} }
} }
@Test
fun `present - when space is invited then join authorization is equal to invited, an inviter is provided`() = runTest {
val inviter = aRoomMember(userId = A_USER_ID_2, displayName = "Bob")
val expectedInviteSender = inviter.toInviteSender()
val spaceHero = aMatrixUser()
val roomInfo = aRoomInfo(
isSpace = true,
currentUserMembership = CurrentUserMembership.INVITED,
joinedMembersCount = 5,
inviter = inviter,
heroes = listOf(spaceHero),
)
val inviteData = roomInfo.toInviteData()
val matrixClient = FakeMatrixClient(
getNotJoinedRoomResult = { _, _ ->
Result.success(
aRoomPreview(
info = aRoomPreviewInfo(
numberOfJoinedMembers = 5,
),
roomMembershipDetails = {
Result.success(aRoomMembershipDetails())
},
)
)
},
spaceService = FakeSpaceService(
spaceRoomListResult = {
FakeSpaceRoomList(
initialSpaceFlowValue = aSpaceRoom(
childrenCount = 3,
)
)
},
),
).apply {
getRoomInfoFlowLambda = { _ ->
flowOf(Optional.of(roomInfo))
}
}
val presenter = createJoinRoomPresenter(
matrixClient = matrixClient
)
presenter.test {
skipItems(2)
awaitItem().also { state ->
assertThat(state.joinAuthorisationStatus).isEqualTo(JoinAuthorisationStatus.IsInvited(inviteData, expectedInviteSender))
assertThat((state.contentState as ContentState.Loaded).numberOfMembers).isEqualTo(5)
// Space details are provided
assertThat(state.contentState.details).isEqualTo(
LoadedDetails.Space(
childrenCount = 3,
heroes = persistentListOf(spaceHero),
)
)
}
}
}
@Test
fun `present - space is invited - no room info`() = runTest {
val spaceHero = aMatrixUser()
val spaceRoom = aSpaceRoom(
childrenCount = 3,
heroes = listOf(spaceHero),
)
val matrixClient = FakeMatrixClient(
getNotJoinedRoomResult = { _, _ ->
Result.failure(Exception("Error"))
},
spaceService = FakeSpaceService(
spaceRoomListResult = {
FakeSpaceRoomList(
initialSpaceFlowValue = spaceRoom,
)
},
),
).apply {
getRoomInfoFlowLambda = { _ ->
flowOf(Optional.ofNullable(null))
}
}
val presenter = createJoinRoomPresenter(
matrixClient = matrixClient
)
presenter.test {
skipItems(1)
awaitItem().also { state ->
// Space details are provided
assertThat((state.contentState as ContentState.Loaded).details).isEqualTo(
LoadedDetails.Space(
childrenCount = 3,
heroes = persistentListOf(spaceHero),
)
)
}
}
}
@Test
fun `present - space is invited - no room info - space room state set`() = runTest {
val spaceRoom = aSpaceRoom(
state = CurrentUserMembership.INVITED,
)
val matrixClient = FakeMatrixClient(
getNotJoinedRoomResult = { _, _ ->
Result.failure(Exception("Error"))
},
spaceService = FakeSpaceService(
spaceRoomListResult = {
FakeSpaceRoomList(
initialSpaceFlowValue = spaceRoom,
)
},
),
).apply {
getRoomInfoFlowLambda = { _ ->
flowOf(Optional.ofNullable(null))
}
}
val presenter = createJoinRoomPresenter(
matrixClient = matrixClient
)
presenter.test {
awaitItem().also { state ->
// Space details are provided
assertThat(state.contentState).isInstanceOf(ContentState.Loading::class.java)
}
}
}
@Test @Test
fun `present - when room is invited read the number of member from the room preview`() = runTest { fun `present - when room is invited read the number of member from the room preview`() = runTest {
val roomInfo = aRoomInfo( val roomInfo = aRoomInfo(