Skip to content

Commit

Permalink
Room list invites: address some remarks and add small tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ganfra committed Apr 17, 2024
1 parent 97e79d9 commit 90e273c
Show file tree
Hide file tree
Showing 9 changed files with 46 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package io.element.android.features.joinroom.impl

import androidx.annotation.VisibleForTesting
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
Expand All @@ -31,7 +32,6 @@ import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.room.CurrentUserMembership
import io.element.android.libraries.matrix.api.room.MatrixRoomInfo
import org.jetbrains.annotations.VisibleForTesting
import java.util.Optional

class JoinRoomPresenter @AssistedInject constructor(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package io.element.android.features.roomlist.impl

import androidx.annotation.VisibleForTesting
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.MutableState
Expand Down Expand Up @@ -74,7 +75,6 @@ import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.takeWhile
import kotlinx.coroutines.launch
import org.jetbrains.annotations.VisibleForTesting
import javax.inject.Inject

private const val EXTENDED_RANGE_SIZE = 40
Expand Down Expand Up @@ -225,7 +225,7 @@ class RoomListPresenter @Inject constructor(
val initialState = RoomListState.ContextMenu.Shown(
roomId = event.roomListRoomSummary.roomId,
roomName = event.roomListRoomSummary.name,
isDm = event.roomListRoomSummary.isDirect,
isDm = event.roomListRoomSummary.isDm,
isFavorite = event.roomListRoomSummary.isFavorite,
markAsUnreadFeatureFlagEnabled = featureFlagService.isFeatureEnabled(FeatureFlags.MarkAsUnread),
hasNewContent = event.roomListRoomSummary.hasNewContent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ class RoomListRoomSummaryFactory @Inject constructor(
isDirect = false,

Check warning on line 52 in features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/datasource/RoomListRoomSummaryFactory.kt

View check run for this annotation

Codecov / codecov/patch

features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/datasource/RoomListRoomSummaryFactory.kt#L52

Added line #L52 was not covered by tests
isFavorite = false,
inviteSender = null,
isDm = false,
canonicalAlias = null,

Check warning on line 56 in features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/datasource/RoomListRoomSummaryFactory.kt

View check run for this annotation

Codecov / codecov/patch

features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/datasource/RoomListRoomSummaryFactory.kt#L54-L56

Added lines #L54 - L56 were not covered by tests
)
}
Expand Down Expand Up @@ -94,6 +95,7 @@ class RoomListRoomSummaryFactory @Inject constructor(
),
)
},
isDm = roomSummary.details.isDm,
canonicalAlias = roomSummary.details.canonicalAlias,
displayType = if (roomSummary.details.currentUserMembership == CurrentUserMembership.INVITED) {
RoomSummaryDisplayType.INVITE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ data class RoomListRoomSummary(
val userDefinedNotificationMode: RoomNotificationMode?,
val hasRoomCall: Boolean,
val isDirect: Boolean,
val isDm: Boolean,
val isFavorite: Boolean,
val inviteSender: InviteSender?,
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,27 +84,34 @@ open class RoomListRoomSummaryProvider : PreviewParameterProvider<RoomListRoomSu
listOf(
aRoomListRoomSummary(
displayType = RoomSummaryDisplayType.INVITE,
inviteSender = InviteSender(
userId = UserId("@alice:matrix.org"),
inviteSender = anInviteSender(
userId = "@alice:matrix.org",
displayName = "Alice",
avatarData = AvatarData("@alice:matrix.org", "Alice", size = AvatarSize.InviteSender),
),
canonicalAlias = "#alias:matrix.org",
),
aRoomListRoomSummary(
name = "Bob",
displayType = RoomSummaryDisplayType.INVITE,
inviteSender = InviteSender(
userId = UserId("@bob:matrix.org"),
inviteSender = anInviteSender(
userId = "@bob:matrix.org",
displayName = "Bob",
avatarData = AvatarData("@bob:matrix.org", "Bob", size = AvatarSize.InviteSender),
),
isDirect = true,
)
),
).flatten()
}

internal fun anInviteSender(
userId: String,
displayName: String,
) = InviteSender(
userId = UserId(userId),
displayName = displayName,
avatarData = AvatarData(userId, displayName, size = AvatarSize.InviteSender),
)

internal fun aRoomListRoomSummary(
id: String = "!roomId:domain",
name: String = "Room name",
Expand All @@ -118,6 +125,7 @@ internal fun aRoomListRoomSummary(
hasRoomCall: Boolean = false,
avatarData: AvatarData = AvatarData(id, name, size = AvatarSize.RoomListItem),
isDirect: Boolean = false,
isDm: Boolean = false,
isFavorite: Boolean = false,
inviteSender: InviteSender? = null,
displayType: RoomSummaryDisplayType = RoomSummaryDisplayType.ROOM,
Expand All @@ -136,6 +144,7 @@ internal fun aRoomListRoomSummary(
userDefinedNotificationMode = notificationMode,
hasRoomCall = hasRoomCall,
isDirect = isDirect,
isDm = isDm,
isFavorite = isFavorite,
inviteSender = inviteSender,
displayType = displayType,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,15 @@ class RoomListFiltersEmptyStateResourcesTest {
assertThat(result?.subtitle).isEqualTo(R.string.screen_roomlist_filter_favourites_empty_state_subtitle)
}

@Test
fun `fromSelectedFilters should return exact RoomListFiltersEmptyStateResources when selectedFilters has only invites filter`() {
val selectedFilters = listOf(RoomListFilter.Invites)
val result = RoomListFiltersEmptyStateResources.fromSelectedFilters(selectedFilters)
assertThat(result).isNotNull()
assertThat(result?.title).isEqualTo(R.string.screen_roomlist_filter_invites_empty_state_title)
assertThat(result?.subtitle).isEqualTo(R.string.screen_roomlist_filter_mixed_empty_state_subtitle)
}

@Test
fun `fromSelectedFilters should return exact RoomListFiltersEmptyStateResources when selectedFilters has multiple filters`() {
val selectedFilters = listOf(RoomListFilter.Unread, RoomListFilter.People, RoomListFilter.Rooms, RoomListFilter.Favourites)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,4 +109,5 @@ internal fun createRoomListRoomSummary(
isFavorite = isFavorite,
canonicalAlias = null,
inviteSender = null,
isDm = false,
)
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ sealed interface RoomListFilter {
data object Favorite : RoomListFilter

/**
* A filter that matches rooms that with Invited membership.
* A filter that matches rooms with Invited membership.
*/
data object Invite : RoomListFilter

Check warning on line 63 in libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomListFilter.kt

View check run for this annotation

Codecov / codecov/patch

libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomListFilter.kt#L63

Added line #L63 was not covered by tests

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package io.element.android.libraries.matrix.impl.roomlist

import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.matrix.api.room.CurrentUserMembership
import io.element.android.libraries.matrix.api.roomlist.RoomListFilter
import io.element.android.libraries.matrix.test.room.aRoomSummaryDetails
import io.element.android.libraries.matrix.test.room.aRoomSummaryFilled
Expand Down Expand Up @@ -54,14 +55,20 @@ class RoomListFilterTests {
name = "Room to search"
)
)
private val invitedRoom = aRoomSummaryFilled(
aRoomSummaryDetails(
currentUserMembership = CurrentUserMembership.INVITED
)
)

private val roomSummaries = listOf(
regularRoom,
directRoom,
favoriteRoom,
markedAsUnreadRoom,
unreadNotificationRoom,
roomToSearch
roomToSearch,
invitedRoom
)

@Test
Expand Down Expand Up @@ -100,6 +107,12 @@ class RoomListFilterTests {
assertThat(roomSummaries.filter(filter)).containsExactly(markedAsUnreadRoom, unreadNotificationRoom)
}

@Test
fun `Room list filter invites`() = runTest {
val filter = RoomListFilter.Invite
assertThat(roomSummaries.filter(filter)).containsExactly(invitedRoom)
}

@Test
fun `Room list filter normalized match room name`() = runTest {
val filter = RoomListFilter.NormalizedMatchRoomName("search")
Expand Down

0 comments on commit 90e273c

Please sign in to comment.