Add missing test

This commit is contained in:
Florian Renaud 2023-04-14 14:54:38 +02:00
parent 16aefb2039
commit d10e8b8f52

View file

@ -29,6 +29,9 @@ import io.element.android.features.userlist.api.UserListDataStore
import io.element.android.libraries.matrix.test.AN_AVATAR_URL import io.element.android.libraries.matrix.test.AN_AVATAR_URL
import io.element.android.libraries.matrix.test.A_MESSAGE import io.element.android.libraries.matrix.test.A_MESSAGE
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.ui.components.aMatrixUser
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
@ -40,10 +43,12 @@ import org.robolectric.RobolectricTestRunner
class ConfigureRoomPresenterTests { class ConfigureRoomPresenterTests {
private lateinit var presenter: ConfigureRoomPresenter private lateinit var presenter: ConfigureRoomPresenter
private lateinit var userListDataStore: UserListDataStore
@Before @Before
fun setup() { fun setup() {
presenter = ConfigureRoomPresenter(CreateRoomDataStore(UserListDataStore())) userListDataStore = UserListDataStore()
presenter = ConfigureRoomPresenter(CreateRoomDataStore(userListDataStore))
} }
@Test @Test
@ -99,32 +104,49 @@ class ConfigureRoomPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
var config = initialState.config var expectedConfig = CreateRoomConfig()
assertThat(initialState.config).isEqualTo(expectedConfig)
// Select User
val selectedUser1 = aMatrixUser()
val selectedUser2 = aMatrixUser("@id_of_bob:server.org", "Bob")
userListDataStore.selectUser(selectedUser1)
skipItems(1)
userListDataStore.selectUser(selectedUser2)
var newState = awaitItem()
expectedConfig = expectedConfig.copy(invites = persistentListOf(selectedUser1, selectedUser2))
assertThat(newState.config).isEqualTo(expectedConfig)
// Room name // Room name
initialState.eventSink(ConfigureRoomEvents.RoomNameChanged(A_ROOM_NAME)) initialState.eventSink(ConfigureRoomEvents.RoomNameChanged(A_ROOM_NAME))
var newState = awaitItem() newState = awaitItem()
config = config.copy(roomName = A_ROOM_NAME) expectedConfig = expectedConfig.copy(roomName = A_ROOM_NAME)
assertThat(newState.config).isEqualTo(config) assertThat(newState.config).isEqualTo(expectedConfig)
// Room topic // Room topic
newState.eventSink(ConfigureRoomEvents.TopicChanged(A_MESSAGE)) newState.eventSink(ConfigureRoomEvents.TopicChanged(A_MESSAGE))
newState = awaitItem() newState = awaitItem()
config = config.copy(topic = A_MESSAGE) expectedConfig = expectedConfig.copy(topic = A_MESSAGE)
assertThat(newState.config).isEqualTo(config) assertThat(newState.config).isEqualTo(expectedConfig)
// Room avatar // Room avatar
val anUri = Uri.parse(AN_AVATAR_URL) val anUri = Uri.parse(AN_AVATAR_URL)
newState.eventSink(ConfigureRoomEvents.AvatarUriChanged(anUri)) newState.eventSink(ConfigureRoomEvents.AvatarUriChanged(anUri))
newState = awaitItem() newState = awaitItem()
config = config.copy(avatarUrl = anUri.toString()) expectedConfig = expectedConfig.copy(avatarUrl = anUri.toString())
assertThat(newState.config).isEqualTo(config) assertThat(newState.config).isEqualTo(expectedConfig)
// Room privacy // Room privacy
newState.eventSink(ConfigureRoomEvents.RoomPrivacyChanged(RoomPrivacy.Public)) newState.eventSink(ConfigureRoomEvents.RoomPrivacyChanged(RoomPrivacy.Public))
newState = awaitItem() newState = awaitItem()
config = config.copy(privacy = RoomPrivacy.Public) expectedConfig = expectedConfig.copy(privacy = RoomPrivacy.Public)
assertThat(newState.config).isEqualTo(config) assertThat(newState.config).isEqualTo(expectedConfig)
// Remove user
newState.eventSink(ConfigureRoomEvents.RemoveFromSelection(selectedUser1))
newState = awaitItem()
expectedConfig = expectedConfig.copy(invites = expectedConfig.invites.minus(selectedUser1).toImmutableList())
assertThat(newState.config).isEqualTo(expectedConfig)
} }
} }
} }