Browse Source

StartDMAction : small improvements after review

pull/1938/head
ganfra 10 months ago
parent
commit
785a27151e
  1. 2
      features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultStartDMAction.kt
  2. 4
      features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultStartDMActionTests.kt
  3. 5
      features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt
  4. 1
      features/createroom/test/build.gradle.kts
  5. 5
      features/createroom/test/src/main/kotlin/io/element/android/features/createroom/test/FakeStartDMAction.kt
  6. 4
      features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTests.kt
  7. 4
      libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/StartDM.kt

2
features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultStartDMAction.kt

@ -46,7 +46,7 @@ class DefaultStartDMAction @Inject constructor(
actionState.value = Async.Success(result.roomId) actionState.value = Async.Success(result.roomId)
} }
is StartDMResult.Failure -> { is StartDMResult.Failure -> {
actionState.value = Async.Failure(result) actionState.value = Async.Failure(result.throwable)
} }
} }
} }

4
features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultStartDMActionTests.kt

@ -22,8 +22,6 @@ import im.vector.app.features.analytics.plan.CreatedRoom
import io.element.android.libraries.architecture.Async import io.element.android.libraries.architecture.Async
import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.room.StartDMResult
import io.element.android.libraries.matrix.test.A_FAILURE_REASON
import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_ID
import io.element.android.libraries.matrix.test.A_THROWABLE import io.element.android.libraries.matrix.test.A_THROWABLE
import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.A_USER_ID
@ -69,7 +67,7 @@ class DefaultStartDMActionTests {
val action = createStartDMAction(matrixClient) val action = createStartDMAction(matrixClient)
val state = mutableStateOf<Async<RoomId>>(Async.Uninitialized) val state = mutableStateOf<Async<RoomId>>(Async.Uninitialized)
action.execute(A_USER_ID, state) action.execute(A_USER_ID, state)
assertThat(state.value).isEqualTo(Async.Failure<RoomId>(StartDMResult.Failure(A_FAILURE_REASON))) assertThat(state.value).isEqualTo(Async.Failure<RoomId>(A_THROWABLE))
} }
private fun createStartDMAction( private fun createStartDMAction(

5
features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt

@ -28,10 +28,9 @@ import io.element.android.features.createroom.test.FakeStartDMAction
import io.element.android.libraries.architecture.Async import io.element.android.libraries.architecture.Async
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.room.StartDMResult
import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.matrix.test.A_FAILURE_REASON
import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_ID
import io.element.android.libraries.matrix.test.A_THROWABLE
import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.test.core.aBuildMeta
import io.element.android.libraries.usersearch.test.FakeUserRepository import io.element.android.libraries.usersearch.test.FakeUserRepository
import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.WarmUpRule
@ -61,7 +60,7 @@ class CreateRoomRootPresenterTests {
val matrixUser = MatrixUser(UserId("@name:domain")) val matrixUser = MatrixUser(UserId("@name:domain"))
val startDMSuccessResult = Async.Success(A_ROOM_ID) val startDMSuccessResult = Async.Success(A_ROOM_ID)
val startDMFailureResult = Async.Failure<RoomId>(StartDMResult.Failure(A_FAILURE_REASON)) val startDMFailureResult = Async.Failure<RoomId>(A_THROWABLE)
// Failure // Failure
startDMAction.givenExecuteResult(startDMFailureResult) startDMAction.givenExecuteResult(startDMFailureResult)

1
features/createroom/test/build.gradle.kts

@ -26,7 +26,6 @@ dependencies {
implementation(libs.coroutines.core) implementation(libs.coroutines.core)
implementation(projects.libraries.matrix.api) implementation(projects.libraries.matrix.api)
implementation(projects.libraries.matrix.test) implementation(projects.libraries.matrix.test)
implementation(projects.tests.testutils)
implementation(projects.libraries.architecture) implementation(projects.libraries.architecture)
api(projects.features.createroom.api) api(projects.features.createroom.api)
} }

5
features/createroom/test/src/main/kotlin/io/element/android/features/createroom/test/FakeStartDMAction.kt

@ -22,7 +22,7 @@ import io.element.android.libraries.architecture.Async
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_ID
import io.element.android.tests.testutils.simulateLongTask import kotlinx.coroutines.delay
class FakeStartDMAction : StartDMAction { class FakeStartDMAction : StartDMAction {
@ -32,8 +32,9 @@ class FakeStartDMAction : StartDMAction {
executeResult = result executeResult = result
} }
override suspend fun execute(userId: UserId, actionState: MutableState<Async<RoomId>>) = simulateLongTask { override suspend fun execute(userId: UserId, actionState: MutableState<Async<RoomId>>) {
actionState.value = Async.Loading() actionState.value = Async.Loading()
delay(1)
actionState.value = executeResult actionState.value = executeResult
} }
} }

4
features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/details/RoomMemberDetailsPresenterTests.kt

@ -33,8 +33,6 @@ import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.room.MatrixRoom
import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState
import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.RoomMember
import io.element.android.libraries.matrix.api.room.StartDMResult
import io.element.android.libraries.matrix.test.A_FAILURE_REASON
import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_ID
import io.element.android.libraries.matrix.test.A_THROWABLE import io.element.android.libraries.matrix.test.A_THROWABLE
import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.FakeMatrixClient
@ -208,7 +206,7 @@ class RoomMemberDetailsPresenterTests {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.startDmActionState).isInstanceOf(Async.Uninitialized::class.java) Truth.assertThat(initialState.startDmActionState).isInstanceOf(Async.Uninitialized::class.java)
val startDMSuccessResult = Async.Success(A_ROOM_ID) val startDMSuccessResult = Async.Success(A_ROOM_ID)
val startDMFailureResult = Async.Failure<RoomId>(StartDMResult.Failure(A_FAILURE_REASON)) val startDMFailureResult = Async.Failure<RoomId>(A_THROWABLE)
// Failure // Failure
startDMAction.givenExecuteResult(startDMFailureResult) startDMAction.givenExecuteResult(startDMFailureResult)

4
libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/StartDM.kt

@ -30,12 +30,12 @@ suspend fun MatrixClient.startDM(userId: UserId): StartDMResult {
} else { } else {
createDM(userId).fold( createDM(userId).fold(
{ StartDMResult.Success(it, isNew = true) }, { StartDMResult.Success(it, isNew = true) },
{ StartDMResult.Failure(it.localizedMessage) } { StartDMResult.Failure(it) }
) )
} }
} }
sealed interface StartDMResult { sealed interface StartDMResult {
data class Success(val roomId: RoomId, val isNew: Boolean) : StartDMResult data class Success(val roomId: RoomId, val isNew: Boolean) : StartDMResult
data class Failure(override val message: String?) : StartDMResult, Exception(message) data class Failure(val throwable: Throwable) : StartDMResult
} }

Loading…
Cancel
Save