Browse Source

Add unit test on RoomDescriptionMapper

pull/3450/head
Benoit Marty 1 month ago committed by Benoit Marty
parent
commit
2d274a9b34
  1. 14
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RoomDescriptionMapper.kt
  2. 60
      libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RoomDescriptionMapperTest.kt

14
libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RoomDescriptionMapper.kt

@ -21,13 +21,17 @@ class RoomDescriptionMapper {
topic = roomDescription.topic, topic = roomDescription.topic,
avatarUrl = roomDescription.avatarUrl, avatarUrl = roomDescription.avatarUrl,
alias = roomDescription.alias?.let(::RoomAlias), alias = roomDescription.alias?.let(::RoomAlias),
joinRule = when (roomDescription.joinRule) { joinRule = roomDescription.joinRule.map(),
PublicRoomJoinRule.PUBLIC -> RoomDescription.JoinRule.PUBLIC
PublicRoomJoinRule.KNOCK -> RoomDescription.JoinRule.KNOCK
null -> RoomDescription.JoinRule.UNKNOWN
},
isWorldReadable = roomDescription.isWorldReadable, isWorldReadable = roomDescription.isWorldReadable,
numberOfMembers = roomDescription.joinedMembers.toLong(), numberOfMembers = roomDescription.joinedMembers.toLong(),
) )
} }
} }
internal fun PublicRoomJoinRule?.map(): RoomDescription.JoinRule {
return when (this) {
PublicRoomJoinRule.PUBLIC -> RoomDescription.JoinRule.PUBLIC
PublicRoomJoinRule.KNOCK -> RoomDescription.JoinRule.KNOCK
null -> RoomDescription.JoinRule.UNKNOWN
}
}

60
libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RoomDescriptionMapperTest.kt

@ -0,0 +1,60 @@
/*
* Copyright 2024 New Vector Ltd.
*
* SPDX-License-Identifier: AGPL-3.0-only
* Please see LICENSE in the repository root for full details.
*/
package io.element.android.libraries.matrix.impl.roomdirectory
import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.matrix.api.roomdirectory.RoomDescription
import io.element.android.libraries.matrix.test.A_ROOM_ALIAS
import io.element.android.libraries.matrix.test.A_ROOM_ID
import io.element.android.libraries.matrix.test.roomdirectory.aRoomDescription
import org.junit.Test
import org.matrix.rustcomponents.sdk.PublicRoomJoinRule
import org.matrix.rustcomponents.sdk.RoomDescription as RustRoomDescription
class RoomDescriptionMapperTest {
@Test
fun map() {
assertThat(RoomDescriptionMapper().map(aRustRoomDescription())).isEqualTo(
aRoomDescription(
roomId = A_ROOM_ID,
name = "name",
topic = "topic",
alias = A_ROOM_ALIAS,
avatarUrl = "avatarUrl",
joinRule = RoomDescription.JoinRule.PUBLIC,
isWorldReadable = true,
joinedMembers = 2L
)
)
}
@Test
fun mapWithNullAlias() {
assertThat(RoomDescriptionMapper().map(aRustRoomDescription().copy(alias = null)).alias).isNull()
}
@Test
fun `map join rule`() {
assertThat(PublicRoomJoinRule.PUBLIC.map()).isEqualTo(RoomDescription.JoinRule.PUBLIC)
assertThat(PublicRoomJoinRule.KNOCK.map()).isEqualTo(RoomDescription.JoinRule.KNOCK)
assertThat(null.map()).isEqualTo(RoomDescription.JoinRule.UNKNOWN)
}
}
internal fun aRustRoomDescription(): RustRoomDescription {
return RustRoomDescription(
roomId = A_ROOM_ID.value,
name = "name",
topic = "topic",
alias = A_ROOM_ALIAS.value,
avatarUrl = "avatarUrl",
joinRule = PublicRoomJoinRule.PUBLIC,
isWorldReadable = true,
joinedMembers = 2u
)
}
Loading…
Cancel
Save