update ConfigureRoomPresenter unit tests

This commit is contained in:
Florian Renaud 2023-04-14 09:17:44 +02:00
parent 490ed7ef98
commit b88c1f35a7

View file

@ -23,6 +23,7 @@ import app.cash.molecule.RecompositionClock
import app.cash.molecule.moleculeFlow import app.cash.molecule.moleculeFlow
import app.cash.turbine.test import app.cash.turbine.test
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import io.element.android.features.createroom.impl.CreateRoomConfig
import io.element.android.features.createroom.impl.CreateRoomDataStore import io.element.android.features.createroom.impl.CreateRoomDataStore
import io.element.android.features.userlist.api.UserListDataStore 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
@ -51,8 +52,11 @@ class ConfigureRoomPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
assertThat(initialState.config).isEqualTo(CreateRoomConfig())
assertThat(initialState.config.roomName).isNull() assertThat(initialState.config.roomName).isNull()
assertThat(initialState.config.topic).isNull() assertThat(initialState.config.topic).isNull()
assertThat(initialState.config.invites).isEmpty()
assertThat(initialState.config.avatarUrl).isNull()
assertThat(initialState.config.privacy).isNull() assertThat(initialState.config.privacy).isNull()
} }
} }
@ -63,24 +67,28 @@ class ConfigureRoomPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
var config = initialState.config
assertThat(initialState.isCreateButtonEnabled).isFalse() assertThat(initialState.isCreateButtonEnabled).isFalse()
// Room name not empty // Room name not empty
initialState.eventSink(ConfigureRoomEvents.RoomNameChanged(A_ROOM_NAME)) initialState.eventSink(ConfigureRoomEvents.RoomNameChanged(A_ROOM_NAME))
var newState: ConfigureRoomState = awaitItem() var newState: ConfigureRoomState = awaitItem()
assertThat(newState.config.roomName).isEqualTo(A_ROOM_NAME) config = config.copy(roomName = A_ROOM_NAME)
assertThat(newState.config).isEqualTo(config)
assertThat(newState.isCreateButtonEnabled).isFalse() assertThat(newState.isCreateButtonEnabled).isFalse()
// Select privacy // Select privacy
initialState.eventSink(ConfigureRoomEvents.RoomPrivacyChanged(RoomPrivacy.Private)) newState.eventSink(ConfigureRoomEvents.RoomPrivacyChanged(RoomPrivacy.Private))
newState = awaitItem() newState = awaitItem()
assertThat(newState.config.privacy).isEqualTo(RoomPrivacy.Private) config = config.copy(privacy = RoomPrivacy.Private)
assertThat(newState.config).isEqualTo(config)
assertThat(newState.isCreateButtonEnabled).isTrue() assertThat(newState.isCreateButtonEnabled).isTrue()
// Clear room name // Clear room name
initialState.eventSink(ConfigureRoomEvents.RoomNameChanged("")) newState.eventSink(ConfigureRoomEvents.RoomNameChanged(""))
newState = awaitItem() newState = awaitItem()
assertThat(newState.config.roomName).isNull() config = config.copy(roomName = null)
assertThat(newState.config).isEqualTo(config)
assertThat(newState.isCreateButtonEnabled).isFalse() assertThat(newState.isCreateButtonEnabled).isFalse()
} }
} }
@ -91,26 +99,32 @@ class ConfigureRoomPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
var config = initialState.config
// Room name // Room name
initialState.eventSink(ConfigureRoomEvents.RoomNameChanged(A_ROOM_NAME)) initialState.eventSink(ConfigureRoomEvents.RoomNameChanged(A_ROOM_NAME))
val stateAfterRoomNameChanged = awaitItem() var newState = awaitItem()
assertThat(stateAfterRoomNameChanged.config.roomName).isEqualTo(A_ROOM_NAME) config = config.copy(roomName = A_ROOM_NAME)
assertThat(newState.config).isEqualTo(config)
// Room topic // Room topic
stateAfterRoomNameChanged.eventSink(ConfigureRoomEvents.TopicChanged(A_MESSAGE)) newState.eventSink(ConfigureRoomEvents.TopicChanged(A_MESSAGE))
val stateAfterTopicChanged = awaitItem() newState = awaitItem()
assertThat(stateAfterTopicChanged.config.topic).isEqualTo(A_MESSAGE) config = config.copy(topic = A_MESSAGE)
assertThat(newState.config).isEqualTo(config)
// Room avatar // Room avatar
val anUri = Uri.parse(AN_AVATAR_URL) val anUri = Uri.parse(AN_AVATAR_URL)
stateAfterTopicChanged.eventSink(ConfigureRoomEvents.AvatarUriChanged(anUri)) newState.eventSink(ConfigureRoomEvents.AvatarUriChanged(anUri))
val stateAfterAvatarUriChanged = awaitItem() newState = awaitItem()
assertThat(stateAfterAvatarUriChanged.config.avatarUrl).isEqualTo(anUri.toString()) config = config.copy(avatarUrl = anUri.toString())
assertThat(newState.config).isEqualTo(config)
// Room privacy // Room privacy
stateAfterAvatarUriChanged.eventSink(ConfigureRoomEvents.RoomPrivacyChanged(RoomPrivacy.Public)) newState.eventSink(ConfigureRoomEvents.RoomPrivacyChanged(RoomPrivacy.Public))
val stateAfterPrivacyChanged = awaitItem() newState = awaitItem()
assertThat(stateAfterPrivacyChanged.config.privacy).isEqualTo(RoomPrivacy.Public) config = config.copy(privacy = RoomPrivacy.Public)
assertThat(newState.config).isEqualTo(config)
} }
} }
} }