Add Konsist test to check that assertThat is imported, and fix existing issues.

This commit is contained in:
Benoit Marty 2023-12-04 15:06:38 +01:00
parent fdc6d9d912
commit 45883975c4
26 changed files with 677 additions and 662 deletions

View file

@ -25,7 +25,7 @@ import com.bumble.appyx.core.plugin.Plugin
import com.bumble.appyx.navmodel.backstack.activeElement import com.bumble.appyx.navmodel.backstack.activeElement
import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.bumble.appyx.testing.junit4.util.MainDispatcherRule
import com.bumble.appyx.testing.unit.common.helper.parentNodeTestHelper import com.bumble.appyx.testing.unit.common.helper.parentNodeTestHelper
import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat
import io.element.android.appnav.di.RoomComponentFactory import io.element.android.appnav.di.RoomComponentFactory
import io.element.android.appnav.room.RoomLoadedFlowNode import io.element.android.appnav.room.RoomLoadedFlowNode
import io.element.android.features.messages.api.MessagesEntryPoint import io.element.android.features.messages.api.MessagesEntryPoint
@ -83,7 +83,7 @@ class RoomFlowNodeTest {
} }
override fun build(): Node { override fun build(): Node {
return node(buildContext) {}.also { return node(buildContext) {}.also {
nodeId = it.id nodeId = it.id
} }
} }
@ -122,10 +122,10 @@ class RoomFlowNodeTest {
val roomFlowNodeTestHelper = roomFlowNode.parentNodeTestHelper() val roomFlowNodeTestHelper = roomFlowNode.parentNodeTestHelper()
// THEN // THEN
Truth.assertThat(roomFlowNode.backstack.activeElement).isEqualTo(RoomLoadedFlowNode.NavTarget.Messages) assertThat(roomFlowNode.backstack.activeElement).isEqualTo(RoomLoadedFlowNode.NavTarget.Messages)
roomFlowNodeTestHelper.assertChildHasLifecycle(RoomLoadedFlowNode.NavTarget.Messages, Lifecycle.State.CREATED) roomFlowNodeTestHelper.assertChildHasLifecycle(RoomLoadedFlowNode.NavTarget.Messages, Lifecycle.State.CREATED)
val messagesNode = roomFlowNode.childNode(RoomLoadedFlowNode.NavTarget.Messages)!! val messagesNode = roomFlowNode.childNode(RoomLoadedFlowNode.NavTarget.Messages)!!
Truth.assertThat(messagesNode.id).isEqualTo(fakeMessagesEntryPoint.nodeId) assertThat(messagesNode.id).isEqualTo(fakeMessagesEntryPoint.nodeId)
} }
@Test @Test
@ -147,6 +147,6 @@ class RoomFlowNodeTest {
// THEN // THEN
roomFlowNodeTestHelper.assertChildHasLifecycle(RoomLoadedFlowNode.NavTarget.RoomDetails, Lifecycle.State.CREATED) roomFlowNodeTestHelper.assertChildHasLifecycle(RoomLoadedFlowNode.NavTarget.RoomDetails, Lifecycle.State.CREATED)
val roomDetailsNode = roomFlowNode.childNode(RoomLoadedFlowNode.NavTarget.RoomDetails)!! val roomDetailsNode = roomFlowNode.childNode(RoomLoadedFlowNode.NavTarget.RoomDetails)!!
Truth.assertThat(roomDetailsNode.id).isEqualTo(fakeRoomDetailsEntryPoint.nodeId) assertThat(roomDetailsNode.id).isEqualTo(fakeRoomDetailsEntryPoint.nodeId)
} }
} }

View file

@ -17,7 +17,7 @@
package io.element.android.appnav.room package io.element.android.appnav.room
import app.cash.turbine.test import app.cash.turbine.test
import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.matrix.api.roomlist.RoomList import io.element.android.libraries.matrix.api.roomlist.RoomList
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_SESSION_ID import io.element.android.libraries.matrix.test.A_SESSION_ID
@ -39,8 +39,8 @@ class LoadingRoomStateFlowFactoryTest {
flowFactory flowFactory
.create(this, A_ROOM_ID) .create(this, A_ROOM_ID)
.test { .test {
Truth.assertThat(awaitItem()).isEqualTo(LoadingRoomState.Loading) assertThat(awaitItem()).isEqualTo(LoadingRoomState.Loading)
Truth.assertThat(awaitItem()).isEqualTo(LoadingRoomState.Loaded(room)) assertThat(awaitItem()).isEqualTo(LoadingRoomState.Loaded(room))
} }
} }
@ -53,10 +53,10 @@ class LoadingRoomStateFlowFactoryTest {
flowFactory flowFactory
.create(this, A_ROOM_ID) .create(this, A_ROOM_ID)
.test { .test {
Truth.assertThat(awaitItem()).isEqualTo(LoadingRoomState.Loading) assertThat(awaitItem()).isEqualTo(LoadingRoomState.Loading)
matrixClient.givenGetRoomResult(A_ROOM_ID, room) matrixClient.givenGetRoomResult(A_ROOM_ID, room)
roomListService.postAllRoomsLoadingState(RoomList.LoadingState.Loaded(1)) roomListService.postAllRoomsLoadingState(RoomList.LoadingState.Loaded(1))
Truth.assertThat(awaitItem()).isEqualTo(LoadingRoomState.Loaded(room)) assertThat(awaitItem()).isEqualTo(LoadingRoomState.Loaded(room))
} }
} }
@ -68,12 +68,9 @@ class LoadingRoomStateFlowFactoryTest {
flowFactory flowFactory
.create(this, A_ROOM_ID) .create(this, A_ROOM_ID)
.test { .test {
Truth.assertThat(awaitItem()).isEqualTo(LoadingRoomState.Loading) assertThat(awaitItem()).isEqualTo(LoadingRoomState.Loading)
roomListService.postAllRoomsLoadingState(RoomList.LoadingState.Loaded(1)) roomListService.postAllRoomsLoadingState(RoomList.LoadingState.Loaded(1))
Truth.assertThat(awaitItem()).isEqualTo(LoadingRoomState.Error) assertThat(awaitItem()).isEqualTo(LoadingRoomState.Error)
} }
} }
} }

View file

@ -16,7 +16,7 @@
package io.element.android.features.cachecleaner.impl package io.element.android.features.cachecleaner.impl
import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat
import io.element.android.tests.testutils.testCoroutineDispatchers import io.element.android.tests.testutils.testCoroutineDispatchers
import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
@ -46,9 +46,9 @@ class DefaultCacheCleanerTest {
// Check the files are gone but the sub dirs are not. // Check the files are gone but the sub dirs are not.
DefaultCacheCleaner.SUBDIRS_TO_CLEANUP.forEach { DefaultCacheCleaner.SUBDIRS_TO_CLEANUP.forEach {
File(temporaryFolder.root, it).apply { File(temporaryFolder.root, it).apply {
Truth.assertThat(exists()).isTrue() assertThat(exists()).isTrue()
Truth.assertThat(isDirectory).isTrue() assertThat(isDirectory).isTrue()
Truth.assertThat(listFiles()).isEmpty() assertThat(listFiles()).isEmpty()
} }
} }
} }

View file

@ -20,7 +20,8 @@ import android.os.Build
import app.cash.molecule.RecompositionMode import app.cash.molecule.RecompositionMode
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 import com.google.common.Truth
import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.permissions.api.PermissionStateProvider import io.element.android.libraries.permissions.api.PermissionStateProvider
import io.element.android.libraries.permissions.api.PermissionsPresenter import io.element.android.libraries.permissions.api.PermissionsPresenter
import io.element.android.libraries.permissions.impl.FakePermissionStateProvider import io.element.android.libraries.permissions.impl.FakePermissionStateProvider
@ -52,7 +53,7 @@ class NotificationsOptInPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.notificationsPermissionState.showDialog).isFalse() assertThat(initialState.notificationsPermissionState.showDialog).isFalse()
} }
} }
@ -65,7 +66,7 @@ class NotificationsOptInPresenterTests {
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
initialState.eventSink(NotificationsOptInEvents.ContinueClicked) initialState.eventSink(NotificationsOptInEvents.ContinueClicked)
Truth.assertThat(awaitItem().notificationsPermissionState.showDialog).isTrue() assertThat(awaitItem().notificationsPermissionState.showDialog).isTrue()
} }
} }
@ -80,7 +81,7 @@ class NotificationsOptInPresenterTests {
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
initialState.eventSink(NotificationsOptInEvents.ContinueClicked) initialState.eventSink(NotificationsOptInEvents.ContinueClicked)
Truth.assertThat(isFinished).isTrue() assertThat(isFinished).isTrue()
} }
} }
@ -96,7 +97,7 @@ class NotificationsOptInPresenterTests {
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
initialState.eventSink(NotificationsOptInEvents.NotNowClicked) initialState.eventSink(NotificationsOptInEvents.NotNowClicked)
Truth.assertThat(isFinished).isTrue() assertThat(isFinished).isTrue()
} }
} }
@ -122,7 +123,7 @@ class NotificationsOptInPresenterTests {
val isPermissionDenied = runBlocking { val isPermissionDenied = runBlocking {
permissionStateProvider.isPermissionDenied("notifications").first() permissionStateProvider.isPermissionDenied("notifications").first()
} }
Truth.assertThat(isPermissionDenied).isTrue() assertThat(isPermissionDenied).isTrue()
} }
} }

View file

@ -19,7 +19,7 @@ package io.element.android.features.invitelist.impl
import app.cash.molecule.RecompositionMode import app.cash.molecule.RecompositionMode
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 import com.google.common.truth.Truth.assertThat
import io.element.android.features.invitelist.api.SeenInvitesStore import io.element.android.features.invitelist.api.SeenInvitesStore
import io.element.android.features.invitelist.test.FakeSeenInvitesStore import io.element.android.features.invitelist.test.FakeSeenInvitesStore
import io.element.android.libraries.architecture.Async import io.element.android.libraries.architecture.Async
@ -63,14 +63,14 @@ class InviteListPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.inviteList).isEmpty() assertThat(initialState.inviteList).isEmpty()
roomListService.postInviteRooms(listOf(aRoomSummary())) roomListService.postInviteRooms(listOf(aRoomSummary()))
val withInviteState = awaitItem() val withInviteState = awaitItem()
Truth.assertThat(withInviteState.inviteList.size).isEqualTo(1) assertThat(withInviteState.inviteList.size).isEqualTo(1)
Truth.assertThat(withInviteState.inviteList[0].roomId).isEqualTo(A_ROOM_ID) assertThat(withInviteState.inviteList[0].roomId).isEqualTo(A_ROOM_ID)
Truth.assertThat(withInviteState.inviteList[0].roomName).isEqualTo(A_ROOM_NAME) assertThat(withInviteState.inviteList[0].roomName).isEqualTo(A_ROOM_NAME)
} }
} }
@ -84,11 +84,11 @@ class InviteListPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val withInviteState = awaitItem() val withInviteState = awaitItem()
Truth.assertThat(withInviteState.inviteList.size).isEqualTo(1) assertThat(withInviteState.inviteList.size).isEqualTo(1)
Truth.assertThat(withInviteState.inviteList[0].roomId).isEqualTo(A_ROOM_ID) assertThat(withInviteState.inviteList[0].roomId).isEqualTo(A_ROOM_ID)
Truth.assertThat(withInviteState.inviteList[0].roomAlias).isEqualTo(A_USER_ID.value) assertThat(withInviteState.inviteList[0].roomAlias).isEqualTo(A_USER_ID.value)
Truth.assertThat(withInviteState.inviteList[0].roomName).isEqualTo(A_ROOM_NAME) assertThat(withInviteState.inviteList[0].roomName).isEqualTo(A_ROOM_NAME)
Truth.assertThat(withInviteState.inviteList[0].roomAvatarData).isEqualTo( assertThat(withInviteState.inviteList[0].roomAvatarData).isEqualTo(
AvatarData( AvatarData(
id = A_USER_ID.value, id = A_USER_ID.value,
name = A_USER_NAME, name = A_USER_NAME,
@ -96,7 +96,7 @@ class InviteListPresenterTests {
size = AvatarSize.RoomInviteItem, size = AvatarSize.RoomInviteItem,
) )
) )
Truth.assertThat(withInviteState.inviteList[0].sender).isNull() assertThat(withInviteState.inviteList[0].sender).isNull()
} }
} }
@ -110,10 +110,10 @@ class InviteListPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val withInviteState = awaitItem() val withInviteState = awaitItem()
Truth.assertThat(withInviteState.inviteList.size).isEqualTo(1) assertThat(withInviteState.inviteList.size).isEqualTo(1)
Truth.assertThat(withInviteState.inviteList[0].sender?.displayName).isEqualTo(A_USER_NAME) assertThat(withInviteState.inviteList[0].sender?.displayName).isEqualTo(A_USER_NAME)
Truth.assertThat(withInviteState.inviteList[0].sender?.userId).isEqualTo(A_USER_ID) assertThat(withInviteState.inviteList[0].sender?.userId).isEqualTo(A_USER_ID)
Truth.assertThat(withInviteState.inviteList[0].sender?.avatarData).isEqualTo( assertThat(withInviteState.inviteList[0].sender?.avatarData).isEqualTo(
AvatarData( AvatarData(
id = A_USER_ID.value, id = A_USER_ID.value,
name = A_USER_NAME, name = A_USER_NAME,
@ -142,11 +142,11 @@ class InviteListPresenterTests {
originalState.eventSink(InviteListEvents.DeclineInvite(originalState.inviteList[0])) originalState.eventSink(InviteListEvents.DeclineInvite(originalState.inviteList[0]))
val newState = awaitItem() val newState = awaitItem()
Truth.assertThat(newState.declineConfirmationDialog).isInstanceOf(InviteDeclineConfirmationDialog.Visible::class.java) assertThat(newState.declineConfirmationDialog).isInstanceOf(InviteDeclineConfirmationDialog.Visible::class.java)
val confirmDialog = newState.declineConfirmationDialog as InviteDeclineConfirmationDialog.Visible val confirmDialog = newState.declineConfirmationDialog as InviteDeclineConfirmationDialog.Visible
Truth.assertThat(confirmDialog.isDirect).isTrue() assertThat(confirmDialog.isDirect).isTrue()
Truth.assertThat(confirmDialog.name).isEqualTo(A_ROOM_NAME) assertThat(confirmDialog.name).isEqualTo(A_ROOM_NAME)
} }
} }
@ -163,11 +163,11 @@ class InviteListPresenterTests {
originalState.eventSink(InviteListEvents.DeclineInvite(originalState.inviteList[0])) originalState.eventSink(InviteListEvents.DeclineInvite(originalState.inviteList[0]))
val newState = awaitItem() val newState = awaitItem()
Truth.assertThat(newState.declineConfirmationDialog).isInstanceOf(InviteDeclineConfirmationDialog.Visible::class.java) assertThat(newState.declineConfirmationDialog).isInstanceOf(InviteDeclineConfirmationDialog.Visible::class.java)
val confirmDialog = newState.declineConfirmationDialog as InviteDeclineConfirmationDialog.Visible val confirmDialog = newState.declineConfirmationDialog as InviteDeclineConfirmationDialog.Visible
Truth.assertThat(confirmDialog.isDirect).isFalse() assertThat(confirmDialog.isDirect).isFalse()
Truth.assertThat(confirmDialog.name).isEqualTo(A_ROOM_NAME) assertThat(confirmDialog.name).isEqualTo(A_ROOM_NAME)
} }
} }
@ -188,7 +188,7 @@ class InviteListPresenterTests {
originalState.eventSink(InviteListEvents.CancelDeclineInvite) originalState.eventSink(InviteListEvents.CancelDeclineInvite)
val newState = awaitItem() val newState = awaitItem()
Truth.assertThat(newState.declineConfirmationDialog).isInstanceOf(InviteDeclineConfirmationDialog.Hidden::class.java) assertThat(newState.declineConfirmationDialog).isInstanceOf(InviteDeclineConfirmationDialog.Hidden::class.java)
} }
} }
@ -215,7 +215,7 @@ class InviteListPresenterTests {
skipItems(2) skipItems(2)
Truth.assertThat(fakeNotificationDrawerManager.getClearMembershipNotificationForRoomCount(client.sessionId, A_ROOM_ID)).isEqualTo(1) assertThat(fakeNotificationDrawerManager.getClearMembershipNotificationForRoomCount(client.sessionId, A_ROOM_ID)).isEqualTo(1)
} }
} }
@ -245,7 +245,7 @@ class InviteListPresenterTests {
val newState = awaitItem() val newState = awaitItem()
Truth.assertThat(newState.declinedAction).isEqualTo(Async.Failure<Unit>(ex)) assertThat(newState.declinedAction).isEqualTo(Async.Failure<Unit>(ex))
} }
} }
@ -277,7 +277,7 @@ class InviteListPresenterTests {
val newState = awaitItem() val newState = awaitItem()
Truth.assertThat(newState.declinedAction).isEqualTo(Async.Uninitialized) assertThat(newState.declinedAction).isEqualTo(Async.Uninitialized)
} }
} }
@ -300,8 +300,8 @@ class InviteListPresenterTests {
val newState = awaitItem() val newState = awaitItem()
Truth.assertThat(newState.acceptedAction).isEqualTo(Async.Success(A_ROOM_ID)) assertThat(newState.acceptedAction).isEqualTo(Async.Success(A_ROOM_ID))
Truth.assertThat(fakeNotificationDrawerManager.getClearMembershipNotificationForRoomCount(client.sessionId, A_ROOM_ID)).isEqualTo(1) assertThat(fakeNotificationDrawerManager.getClearMembershipNotificationForRoomCount(client.sessionId, A_ROOM_ID)).isEqualTo(1)
} }
} }
@ -323,7 +323,7 @@ class InviteListPresenterTests {
val originalState = awaitItem() val originalState = awaitItem()
originalState.eventSink(InviteListEvents.AcceptInvite(originalState.inviteList[0])) originalState.eventSink(InviteListEvents.AcceptInvite(originalState.inviteList[0]))
Truth.assertThat(awaitItem().acceptedAction).isEqualTo(Async.Failure<RoomId>(ex)) assertThat(awaitItem().acceptedAction).isEqualTo(Async.Failure<RoomId>(ex))
} }
} }
@ -350,7 +350,7 @@ class InviteListPresenterTests {
originalState.eventSink(InviteListEvents.DismissAcceptError) originalState.eventSink(InviteListEvents.DismissAcceptError)
val newState = awaitItem() val newState = awaitItem()
Truth.assertThat(newState.acceptedAction).isEqualTo(Async.Uninitialized) assertThat(newState.acceptedAction).isEqualTo(Async.Uninitialized)
} }
} }
@ -375,19 +375,19 @@ class InviteListPresenterTests {
roomListService.postInviteRooms(listOf(aRoomSummary())) roomListService.postInviteRooms(listOf(aRoomSummary()))
awaitItem() awaitItem()
Truth.assertThat(store.getProvidedRoomIds()).isEqualTo(setOf(A_ROOM_ID)) assertThat(store.getProvidedRoomIds()).isEqualTo(setOf(A_ROOM_ID))
// When a second is added, both are saved // When a second is added, both are saved
roomListService.postInviteRooms(listOf(aRoomSummary(), aRoomSummary(A_ROOM_ID_2))) roomListService.postInviteRooms(listOf(aRoomSummary(), aRoomSummary(A_ROOM_ID_2)))
awaitItem() awaitItem()
Truth.assertThat(store.getProvidedRoomIds()).isEqualTo(setOf(A_ROOM_ID, A_ROOM_ID_2)) assertThat(store.getProvidedRoomIds()).isEqualTo(setOf(A_ROOM_ID, A_ROOM_ID_2))
// When they're both dismissed, an empty set is saved // When they're both dismissed, an empty set is saved
roomListService.postInviteRooms(listOf()) roomListService.postInviteRooms(listOf())
awaitItem() awaitItem()
Truth.assertThat(store.getProvidedRoomIds()).isEmpty() assertThat(store.getProvidedRoomIds()).isEmpty()
} }
} }
@ -413,11 +413,11 @@ class InviteListPresenterTests {
skipItems(1) skipItems(1)
val withInviteState = awaitItem() val withInviteState = awaitItem()
Truth.assertThat(withInviteState.inviteList.size).isEqualTo(2) assertThat(withInviteState.inviteList.size).isEqualTo(2)
Truth.assertThat(withInviteState.inviteList[0].roomId).isEqualTo(A_ROOM_ID) assertThat(withInviteState.inviteList[0].roomId).isEqualTo(A_ROOM_ID)
Truth.assertThat(withInviteState.inviteList[0].isNew).isFalse() assertThat(withInviteState.inviteList[0].isNew).isFalse()
Truth.assertThat(withInviteState.inviteList[1].roomId).isEqualTo(A_ROOM_ID_2) assertThat(withInviteState.inviteList[1].roomId).isEqualTo(A_ROOM_ID_2)
Truth.assertThat(withInviteState.inviteList[1].isNew).isTrue() assertThat(withInviteState.inviteList[1].isNew).isTrue()
} }
} }

View file

@ -19,7 +19,7 @@ package io.element.android.features.location.impl.send
import app.cash.molecule.RecompositionMode import app.cash.molecule.RecompositionMode
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 import com.google.common.truth.Truth.assertThat
import im.vector.app.features.analytics.plan.Composer import im.vector.app.features.analytics.plan.Composer
import io.element.android.features.location.api.Location import io.element.android.features.location.api.Location
import io.element.android.features.location.impl.aPermissionsState import io.element.android.features.location.impl.aPermissionsState
@ -77,16 +77,16 @@ class SendLocationPresenterTest {
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.permissionDialog).isEqualTo(SendLocationState.Dialog.None) assertThat(initialState.permissionDialog).isEqualTo(SendLocationState.Dialog.None)
Truth.assertThat(initialState.mode).isEqualTo(SendLocationState.Mode.SenderLocation) assertThat(initialState.mode).isEqualTo(SendLocationState.Mode.SenderLocation)
Truth.assertThat(initialState.hasLocationPermission).isEqualTo(true) assertThat(initialState.hasLocationPermission).isEqualTo(true)
// Swipe the map to switch mode // Swipe the map to switch mode
initialState.eventSink(SendLocationEvents.SwitchToPinLocationMode) initialState.eventSink(SendLocationEvents.SwitchToPinLocationMode)
val myLocationState = awaitItem() val myLocationState = awaitItem()
Truth.assertThat(myLocationState.permissionDialog).isEqualTo(SendLocationState.Dialog.None) assertThat(myLocationState.permissionDialog).isEqualTo(SendLocationState.Dialog.None)
Truth.assertThat(myLocationState.mode).isEqualTo(SendLocationState.Mode.PinLocation) assertThat(myLocationState.mode).isEqualTo(SendLocationState.Mode.PinLocation)
Truth.assertThat(myLocationState.hasLocationPermission).isEqualTo(true) assertThat(myLocationState.hasLocationPermission).isEqualTo(true)
} }
} }
@ -104,16 +104,16 @@ class SendLocationPresenterTest {
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.permissionDialog).isEqualTo(SendLocationState.Dialog.None) assertThat(initialState.permissionDialog).isEqualTo(SendLocationState.Dialog.None)
Truth.assertThat(initialState.mode).isEqualTo(SendLocationState.Mode.SenderLocation) assertThat(initialState.mode).isEqualTo(SendLocationState.Mode.SenderLocation)
Truth.assertThat(initialState.hasLocationPermission).isEqualTo(true) assertThat(initialState.hasLocationPermission).isEqualTo(true)
// Swipe the map to switch mode // Swipe the map to switch mode
initialState.eventSink(SendLocationEvents.SwitchToPinLocationMode) initialState.eventSink(SendLocationEvents.SwitchToPinLocationMode)
val myLocationState = awaitItem() val myLocationState = awaitItem()
Truth.assertThat(myLocationState.permissionDialog).isEqualTo(SendLocationState.Dialog.None) assertThat(myLocationState.permissionDialog).isEqualTo(SendLocationState.Dialog.None)
Truth.assertThat(myLocationState.mode).isEqualTo(SendLocationState.Mode.PinLocation) assertThat(myLocationState.mode).isEqualTo(SendLocationState.Mode.PinLocation)
Truth.assertThat(myLocationState.hasLocationPermission).isEqualTo(true) assertThat(myLocationState.hasLocationPermission).isEqualTo(true)
} }
} }
@ -130,16 +130,16 @@ class SendLocationPresenterTest {
sendLocationPresenter.present() sendLocationPresenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.permissionDialog).isEqualTo(SendLocationState.Dialog.None) assertThat(initialState.permissionDialog).isEqualTo(SendLocationState.Dialog.None)
Truth.assertThat(initialState.mode).isEqualTo(SendLocationState.Mode.PinLocation) assertThat(initialState.mode).isEqualTo(SendLocationState.Mode.PinLocation)
Truth.assertThat(initialState.hasLocationPermission).isEqualTo(false) assertThat(initialState.hasLocationPermission).isEqualTo(false)
// Click on the button to switch mode // Click on the button to switch mode
initialState.eventSink(SendLocationEvents.SwitchToMyLocationMode) initialState.eventSink(SendLocationEvents.SwitchToMyLocationMode)
val myLocationState = awaitItem() val myLocationState = awaitItem()
Truth.assertThat(myLocationState.permissionDialog).isEqualTo(SendLocationState.Dialog.PermissionDenied) assertThat(myLocationState.permissionDialog).isEqualTo(SendLocationState.Dialog.PermissionDenied)
Truth.assertThat(myLocationState.mode).isEqualTo(SendLocationState.Mode.PinLocation) assertThat(myLocationState.mode).isEqualTo(SendLocationState.Mode.PinLocation)
Truth.assertThat(myLocationState.hasLocationPermission).isEqualTo(false) assertThat(myLocationState.hasLocationPermission).isEqualTo(false)
} }
} }
@ -156,16 +156,16 @@ class SendLocationPresenterTest {
sendLocationPresenter.present() sendLocationPresenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.permissionDialog).isEqualTo(SendLocationState.Dialog.None) assertThat(initialState.permissionDialog).isEqualTo(SendLocationState.Dialog.None)
Truth.assertThat(initialState.mode).isEqualTo(SendLocationState.Mode.PinLocation) assertThat(initialState.mode).isEqualTo(SendLocationState.Mode.PinLocation)
Truth.assertThat(initialState.hasLocationPermission).isEqualTo(false) assertThat(initialState.hasLocationPermission).isEqualTo(false)
// Click on the button to switch mode // Click on the button to switch mode
initialState.eventSink(SendLocationEvents.SwitchToMyLocationMode) initialState.eventSink(SendLocationEvents.SwitchToMyLocationMode)
val myLocationState = awaitItem() val myLocationState = awaitItem()
Truth.assertThat(myLocationState.permissionDialog).isEqualTo(SendLocationState.Dialog.PermissionRationale) assertThat(myLocationState.permissionDialog).isEqualTo(SendLocationState.Dialog.PermissionRationale)
Truth.assertThat(myLocationState.mode).isEqualTo(SendLocationState.Mode.PinLocation) assertThat(myLocationState.mode).isEqualTo(SendLocationState.Mode.PinLocation)
Truth.assertThat(myLocationState.hasLocationPermission).isEqualTo(false) assertThat(myLocationState.hasLocationPermission).isEqualTo(false)
} }
} }
@ -187,16 +187,16 @@ class SendLocationPresenterTest {
// Click on the button to switch mode // Click on the button to switch mode
initialState.eventSink(SendLocationEvents.SwitchToMyLocationMode) initialState.eventSink(SendLocationEvents.SwitchToMyLocationMode)
val myLocationState = awaitItem() val myLocationState = awaitItem()
Truth.assertThat(myLocationState.permissionDialog).isEqualTo(SendLocationState.Dialog.PermissionRationale) assertThat(myLocationState.permissionDialog).isEqualTo(SendLocationState.Dialog.PermissionRationale)
Truth.assertThat(myLocationState.mode).isEqualTo(SendLocationState.Mode.PinLocation) assertThat(myLocationState.mode).isEqualTo(SendLocationState.Mode.PinLocation)
Truth.assertThat(myLocationState.hasLocationPermission).isEqualTo(false) assertThat(myLocationState.hasLocationPermission).isEqualTo(false)
// Dismiss the dialog // Dismiss the dialog
myLocationState.eventSink(SendLocationEvents.DismissDialog) myLocationState.eventSink(SendLocationEvents.DismissDialog)
val dialogDismissedState = awaitItem() val dialogDismissedState = awaitItem()
Truth.assertThat(dialogDismissedState.permissionDialog).isEqualTo(SendLocationState.Dialog.None) assertThat(dialogDismissedState.permissionDialog).isEqualTo(SendLocationState.Dialog.None)
Truth.assertThat(dialogDismissedState.mode).isEqualTo(SendLocationState.Mode.PinLocation) assertThat(dialogDismissedState.mode).isEqualTo(SendLocationState.Mode.PinLocation)
Truth.assertThat(dialogDismissedState.hasLocationPermission).isEqualTo(false) assertThat(dialogDismissedState.hasLocationPermission).isEqualTo(false)
} }
} }
@ -218,13 +218,13 @@ class SendLocationPresenterTest {
// Click on the button to switch mode // Click on the button to switch mode
initialState.eventSink(SendLocationEvents.SwitchToMyLocationMode) initialState.eventSink(SendLocationEvents.SwitchToMyLocationMode)
val myLocationState = awaitItem() val myLocationState = awaitItem()
Truth.assertThat(myLocationState.permissionDialog).isEqualTo(SendLocationState.Dialog.PermissionRationale) assertThat(myLocationState.permissionDialog).isEqualTo(SendLocationState.Dialog.PermissionRationale)
Truth.assertThat(myLocationState.mode).isEqualTo(SendLocationState.Mode.PinLocation) assertThat(myLocationState.mode).isEqualTo(SendLocationState.Mode.PinLocation)
Truth.assertThat(myLocationState.hasLocationPermission).isEqualTo(false) assertThat(myLocationState.hasLocationPermission).isEqualTo(false)
// Continue the dialog sends permission request to the permissions presenter // Continue the dialog sends permission request to the permissions presenter
myLocationState.eventSink(SendLocationEvents.RequestPermissions) myLocationState.eventSink(SendLocationEvents.RequestPermissions)
Truth.assertThat(permissionsPresenterFake.events.last()).isEqualTo(PermissionsEvents.RequestPermissions) assertThat(permissionsPresenterFake.events.last()).isEqualTo(PermissionsEvents.RequestPermissions)
} }
} }
@ -246,16 +246,16 @@ class SendLocationPresenterTest {
// Click on the button to switch mode // Click on the button to switch mode
initialState.eventSink(SendLocationEvents.SwitchToMyLocationMode) initialState.eventSink(SendLocationEvents.SwitchToMyLocationMode)
val myLocationState = awaitItem() val myLocationState = awaitItem()
Truth.assertThat(myLocationState.permissionDialog).isEqualTo(SendLocationState.Dialog.PermissionDenied) assertThat(myLocationState.permissionDialog).isEqualTo(SendLocationState.Dialog.PermissionDenied)
Truth.assertThat(myLocationState.mode).isEqualTo(SendLocationState.Mode.PinLocation) assertThat(myLocationState.mode).isEqualTo(SendLocationState.Mode.PinLocation)
Truth.assertThat(myLocationState.hasLocationPermission).isEqualTo(false) assertThat(myLocationState.hasLocationPermission).isEqualTo(false)
// Dismiss the dialog // Dismiss the dialog
myLocationState.eventSink(SendLocationEvents.DismissDialog) myLocationState.eventSink(SendLocationEvents.DismissDialog)
val dialogDismissedState = awaitItem() val dialogDismissedState = awaitItem()
Truth.assertThat(dialogDismissedState.permissionDialog).isEqualTo(SendLocationState.Dialog.None) assertThat(dialogDismissedState.permissionDialog).isEqualTo(SendLocationState.Dialog.None)
Truth.assertThat(dialogDismissedState.mode).isEqualTo(SendLocationState.Mode.PinLocation) assertThat(dialogDismissedState.mode).isEqualTo(SendLocationState.Mode.PinLocation)
Truth.assertThat(dialogDismissedState.hasLocationPermission).isEqualTo(false) assertThat(dialogDismissedState.hasLocationPermission).isEqualTo(false)
} }
} }
@ -292,8 +292,8 @@ class SendLocationPresenterTest {
delay(1) // Wait for the coroutine to finish delay(1) // Wait for the coroutine to finish
Truth.assertThat(fakeMatrixRoom.sentLocations.size).isEqualTo(1) assertThat(fakeMatrixRoom.sentLocations.size).isEqualTo(1)
Truth.assertThat(fakeMatrixRoom.sentLocations.last()).isEqualTo( assertThat(fakeMatrixRoom.sentLocations.last()).isEqualTo(
SendLocationInvocation( SendLocationInvocation(
body = "Location was shared at geo:3.0,4.0;u=5.0", body = "Location was shared at geo:3.0,4.0;u=5.0",
geoUri = "geo:3.0,4.0;u=5.0", geoUri = "geo:3.0,4.0;u=5.0",
@ -303,8 +303,8 @@ class SendLocationPresenterTest {
) )
) )
Truth.assertThat(fakeAnalyticsService.capturedEvents.size).isEqualTo(1) assertThat(fakeAnalyticsService.capturedEvents.size).isEqualTo(1)
Truth.assertThat(fakeAnalyticsService.capturedEvents.last()).isEqualTo( assertThat(fakeAnalyticsService.capturedEvents.last()).isEqualTo(
Composer( Composer(
inThread = false, inThread = false,
isEditing = false, isEditing = false,
@ -348,8 +348,8 @@ class SendLocationPresenterTest {
delay(1) // Wait for the coroutine to finish delay(1) // Wait for the coroutine to finish
Truth.assertThat(fakeMatrixRoom.sentLocations.size).isEqualTo(1) assertThat(fakeMatrixRoom.sentLocations.size).isEqualTo(1)
Truth.assertThat(fakeMatrixRoom.sentLocations.last()).isEqualTo( assertThat(fakeMatrixRoom.sentLocations.last()).isEqualTo(
SendLocationInvocation( SendLocationInvocation(
body = "Location was shared at geo:0.0,1.0", body = "Location was shared at geo:0.0,1.0",
geoUri = "geo:0.0,1.0", geoUri = "geo:0.0,1.0",
@ -359,8 +359,8 @@ class SendLocationPresenterTest {
) )
) )
Truth.assertThat(fakeAnalyticsService.capturedEvents.size).isEqualTo(1) assertThat(fakeAnalyticsService.capturedEvents.size).isEqualTo(1)
Truth.assertThat(fakeAnalyticsService.capturedEvents.last()).isEqualTo( assertThat(fakeAnalyticsService.capturedEvents.last()).isEqualTo(
Composer( Composer(
inThread = false, inThread = false,
isEditing = false, isEditing = false,
@ -405,8 +405,8 @@ class SendLocationPresenterTest {
delay(1) // Wait for the coroutine to finish delay(1) // Wait for the coroutine to finish
Truth.assertThat(fakeAnalyticsService.capturedEvents.size).isEqualTo(1) assertThat(fakeAnalyticsService.capturedEvents.size).isEqualTo(1)
Truth.assertThat(fakeAnalyticsService.capturedEvents.last()).isEqualTo( assertThat(fakeAnalyticsService.capturedEvents.last()).isEqualTo(
Composer( Composer(
inThread = false, inThread = false,
isEditing = true, isEditing = true,
@ -444,8 +444,8 @@ class SendLocationPresenterTest {
dialogShownState.eventSink(SendLocationEvents.OpenAppSettings) dialogShownState.eventSink(SendLocationEvents.OpenAppSettings)
val settingsOpenedState = awaitItem() val settingsOpenedState = awaitItem()
Truth.assertThat(settingsOpenedState.permissionDialog).isEqualTo(SendLocationState.Dialog.None) assertThat(settingsOpenedState.permissionDialog).isEqualTo(SendLocationState.Dialog.None)
Truth.assertThat(fakeLocationActions.openSettingsInvocationsCount).isEqualTo(1) assertThat(fakeLocationActions.openSettingsInvocationsCount).isEqualTo(1)
} }
} }
@ -455,7 +455,7 @@ class SendLocationPresenterTest {
sendLocationPresenter.present() sendLocationPresenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.appName).isEqualTo("app name") assertThat(initialState.appName).isEqualTo("app name")
} }
} }
} }

View file

@ -19,7 +19,7 @@ package io.element.android.features.location.impl.show
import app.cash.molecule.RecompositionMode import app.cash.molecule.RecompositionMode
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 import com.google.common.truth.Truth.assertThat
import io.element.android.features.location.api.Location import io.element.android.features.location.api.Location
import io.element.android.features.location.impl.aPermissionsState import io.element.android.features.location.impl.aPermissionsState
import io.element.android.features.location.impl.common.actions.FakeLocationActions import io.element.android.features.location.impl.common.actions.FakeLocationActions
@ -66,10 +66,10 @@ class ShowLocationPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.location).isEqualTo(location) assertThat(initialState.location).isEqualTo(location)
Truth.assertThat(initialState.description).isEqualTo(A_DESCRIPTION) assertThat(initialState.description).isEqualTo(A_DESCRIPTION)
Truth.assertThat(initialState.hasLocationPermission).isEqualTo(false) assertThat(initialState.hasLocationPermission).isEqualTo(false)
Truth.assertThat(initialState.isTrackMyLocation).isEqualTo(false) assertThat(initialState.isTrackMyLocation).isEqualTo(false)
} }
} }
@ -86,10 +86,10 @@ class ShowLocationPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.location).isEqualTo(location) assertThat(initialState.location).isEqualTo(location)
Truth.assertThat(initialState.description).isEqualTo(A_DESCRIPTION) assertThat(initialState.description).isEqualTo(A_DESCRIPTION)
Truth.assertThat(initialState.hasLocationPermission).isEqualTo(false) assertThat(initialState.hasLocationPermission).isEqualTo(false)
Truth.assertThat(initialState.isTrackMyLocation).isEqualTo(false) assertThat(initialState.isTrackMyLocation).isEqualTo(false)
} }
} }
@ -101,10 +101,10 @@ class ShowLocationPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.location).isEqualTo(location) assertThat(initialState.location).isEqualTo(location)
Truth.assertThat(initialState.description).isEqualTo(A_DESCRIPTION) assertThat(initialState.description).isEqualTo(A_DESCRIPTION)
Truth.assertThat(initialState.hasLocationPermission).isEqualTo(true) assertThat(initialState.hasLocationPermission).isEqualTo(true)
Truth.assertThat(initialState.isTrackMyLocation).isEqualTo(false) assertThat(initialState.isTrackMyLocation).isEqualTo(false)
} }
} }
@ -116,10 +116,10 @@ class ShowLocationPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.location).isEqualTo(location) assertThat(initialState.location).isEqualTo(location)
Truth.assertThat(initialState.description).isEqualTo(A_DESCRIPTION) assertThat(initialState.description).isEqualTo(A_DESCRIPTION)
Truth.assertThat(initialState.hasLocationPermission).isEqualTo(true) assertThat(initialState.hasLocationPermission).isEqualTo(true)
Truth.assertThat(initialState.isTrackMyLocation).isEqualTo(false) assertThat(initialState.isTrackMyLocation).isEqualTo(false)
} }
} }
@ -131,8 +131,8 @@ class ShowLocationPresenterTest {
val initialState = awaitItem() val initialState = awaitItem()
initialState.eventSink(ShowLocationEvents.Share) initialState.eventSink(ShowLocationEvents.Share)
Truth.assertThat(fakeLocationActions.sharedLocation).isEqualTo(location) assertThat(fakeLocationActions.sharedLocation).isEqualTo(location)
Truth.assertThat(fakeLocationActions.sharedLabel).isEqualTo(A_DESCRIPTION) assertThat(fakeLocationActions.sharedLabel).isEqualTo(A_DESCRIPTION)
} }
} }
@ -144,23 +144,23 @@ class ShowLocationPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.hasLocationPermission).isEqualTo(true) assertThat(initialState.hasLocationPermission).isEqualTo(true)
Truth.assertThat(initialState.isTrackMyLocation).isEqualTo(false) assertThat(initialState.isTrackMyLocation).isEqualTo(false)
initialState.eventSink(ShowLocationEvents.TrackMyLocation(true)) initialState.eventSink(ShowLocationEvents.TrackMyLocation(true))
val trackMyLocationState = awaitItem() val trackMyLocationState = awaitItem()
delay(1) delay(1)
Truth.assertThat(trackMyLocationState.hasLocationPermission).isEqualTo(true) assertThat(trackMyLocationState.hasLocationPermission).isEqualTo(true)
Truth.assertThat(trackMyLocationState.isTrackMyLocation).isEqualTo(true) assertThat(trackMyLocationState.isTrackMyLocation).isEqualTo(true)
// Swipe the map to switch mode // Swipe the map to switch mode
initialState.eventSink(ShowLocationEvents.TrackMyLocation(false)) initialState.eventSink(ShowLocationEvents.TrackMyLocation(false))
val trackLocationDisabledState = awaitItem() val trackLocationDisabledState = awaitItem()
Truth.assertThat(trackLocationDisabledState.permissionDialog).isEqualTo(ShowLocationState.Dialog.None) assertThat(trackLocationDisabledState.permissionDialog).isEqualTo(ShowLocationState.Dialog.None)
Truth.assertThat(trackLocationDisabledState.isTrackMyLocation).isEqualTo(false) assertThat(trackLocationDisabledState.isTrackMyLocation).isEqualTo(false)
Truth.assertThat(trackLocationDisabledState.hasLocationPermission).isEqualTo(true) assertThat(trackLocationDisabledState.hasLocationPermission).isEqualTo(true)
} }
} }
@ -182,16 +182,16 @@ class ShowLocationPresenterTest {
// Click on the button to switch mode // Click on the button to switch mode
initialState.eventSink(ShowLocationEvents.TrackMyLocation(true)) initialState.eventSink(ShowLocationEvents.TrackMyLocation(true))
val trackLocationState = awaitItem() val trackLocationState = awaitItem()
Truth.assertThat(trackLocationState.permissionDialog).isEqualTo(ShowLocationState.Dialog.PermissionRationale) assertThat(trackLocationState.permissionDialog).isEqualTo(ShowLocationState.Dialog.PermissionRationale)
Truth.assertThat(trackLocationState.isTrackMyLocation).isEqualTo(false) assertThat(trackLocationState.isTrackMyLocation).isEqualTo(false)
Truth.assertThat(trackLocationState.hasLocationPermission).isEqualTo(false) assertThat(trackLocationState.hasLocationPermission).isEqualTo(false)
// Dismiss the dialog // Dismiss the dialog
initialState.eventSink(ShowLocationEvents.DismissDialog) initialState.eventSink(ShowLocationEvents.DismissDialog)
val dialogDismissedState = awaitItem() val dialogDismissedState = awaitItem()
Truth.assertThat(dialogDismissedState.permissionDialog).isEqualTo(ShowLocationState.Dialog.None) assertThat(dialogDismissedState.permissionDialog).isEqualTo(ShowLocationState.Dialog.None)
Truth.assertThat(dialogDismissedState.isTrackMyLocation).isEqualTo(false) assertThat(dialogDismissedState.isTrackMyLocation).isEqualTo(false)
Truth.assertThat(dialogDismissedState.hasLocationPermission).isEqualTo(false) assertThat(dialogDismissedState.hasLocationPermission).isEqualTo(false)
} }
} }
@ -213,13 +213,13 @@ class ShowLocationPresenterTest {
// Click on the button to switch mode // Click on the button to switch mode
initialState.eventSink(ShowLocationEvents.TrackMyLocation(true)) initialState.eventSink(ShowLocationEvents.TrackMyLocation(true))
val trackLocationState = awaitItem() val trackLocationState = awaitItem()
Truth.assertThat(trackLocationState.permissionDialog).isEqualTo(ShowLocationState.Dialog.PermissionRationale) assertThat(trackLocationState.permissionDialog).isEqualTo(ShowLocationState.Dialog.PermissionRationale)
Truth.assertThat(trackLocationState.isTrackMyLocation).isEqualTo(false) assertThat(trackLocationState.isTrackMyLocation).isEqualTo(false)
Truth.assertThat(trackLocationState.hasLocationPermission).isEqualTo(false) assertThat(trackLocationState.hasLocationPermission).isEqualTo(false)
// Continue the dialog sends permission request to the permissions presenter // Continue the dialog sends permission request to the permissions presenter
trackLocationState.eventSink(ShowLocationEvents.RequestPermissions) trackLocationState.eventSink(ShowLocationEvents.RequestPermissions)
Truth.assertThat(permissionsPresenterFake.events.last()).isEqualTo(PermissionsEvents.RequestPermissions) assertThat(permissionsPresenterFake.events.last()).isEqualTo(PermissionsEvents.RequestPermissions)
} }
} }
@ -241,16 +241,16 @@ class ShowLocationPresenterTest {
// Click on the button to switch mode // Click on the button to switch mode
initialState.eventSink(ShowLocationEvents.TrackMyLocation(true)) initialState.eventSink(ShowLocationEvents.TrackMyLocation(true))
val trackLocationState = awaitItem() val trackLocationState = awaitItem()
Truth.assertThat(trackLocationState.permissionDialog).isEqualTo(ShowLocationState.Dialog.PermissionDenied) assertThat(trackLocationState.permissionDialog).isEqualTo(ShowLocationState.Dialog.PermissionDenied)
Truth.assertThat(trackLocationState.isTrackMyLocation).isEqualTo(false) assertThat(trackLocationState.isTrackMyLocation).isEqualTo(false)
Truth.assertThat(trackLocationState.hasLocationPermission).isEqualTo(false) assertThat(trackLocationState.hasLocationPermission).isEqualTo(false)
// Dismiss the dialog // Dismiss the dialog
initialState.eventSink(ShowLocationEvents.DismissDialog) initialState.eventSink(ShowLocationEvents.DismissDialog)
val dialogDismissedState = awaitItem() val dialogDismissedState = awaitItem()
Truth.assertThat(dialogDismissedState.permissionDialog).isEqualTo(ShowLocationState.Dialog.None) assertThat(dialogDismissedState.permissionDialog).isEqualTo(ShowLocationState.Dialog.None)
Truth.assertThat(dialogDismissedState.isTrackMyLocation).isEqualTo(false) assertThat(dialogDismissedState.isTrackMyLocation).isEqualTo(false)
Truth.assertThat(dialogDismissedState.hasLocationPermission).isEqualTo(false) assertThat(dialogDismissedState.hasLocationPermission).isEqualTo(false)
} }
} }
@ -276,8 +276,8 @@ class ShowLocationPresenterTest {
dialogShownState.eventSink(ShowLocationEvents.OpenAppSettings) dialogShownState.eventSink(ShowLocationEvents.OpenAppSettings)
val settingsOpenedState = awaitItem() val settingsOpenedState = awaitItem()
Truth.assertThat(settingsOpenedState.permissionDialog).isEqualTo(ShowLocationState.Dialog.None) assertThat(settingsOpenedState.permissionDialog).isEqualTo(ShowLocationState.Dialog.None)
Truth.assertThat(fakeLocationActions.openSettingsInvocationsCount).isEqualTo(1) assertThat(fakeLocationActions.openSettingsInvocationsCount).isEqualTo(1)
} }
} }
@ -287,7 +287,7 @@ class ShowLocationPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.appName).isEqualTo("app name") assertThat(initialState.appName).isEqualTo("app name")
} }
} }

View file

@ -16,7 +16,7 @@
package io.element.android.features.messages.impl.timeline.factories.event package io.element.android.features.messages.impl.timeline.factories.event
import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemPollContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemPollContent
import io.element.android.features.poll.api.PollAnswerItem import io.element.android.features.poll.api.PollAnswerItem
import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.featureflag.api.FeatureFlags
@ -55,13 +55,13 @@ internal class TimelineItemContentPollFactoryTest {
@Test @Test
fun `Disclosed poll - not ended, no votes`() = runTest { fun `Disclosed poll - not ended, no votes`() = runTest {
Truth.assertThat(factory.create(aPollContent(), eventId = null)).isEqualTo(aTimelineItemPollContent()) assertThat(factory.create(aPollContent(), eventId = null)).isEqualTo(aTimelineItemPollContent())
} }
@Test @Test
fun `Disclosed poll - not ended, some votes, including one from current user`() = runTest { fun `Disclosed poll - not ended, some votes, including one from current user`() = runTest {
val votes = MY_USER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap() val votes = MY_USER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap()
Truth.assertThat( assertThat(
factory.create(aPollContent(votes = votes), eventId = null) factory.create(aPollContent(votes = votes), eventId = null)
) )
.isEqualTo( .isEqualTo(
@ -78,7 +78,7 @@ internal class TimelineItemContentPollFactoryTest {
@Test @Test
fun `Disclosed poll - ended, no votes, no winner`() = runTest { fun `Disclosed poll - ended, no votes, no winner`() = runTest {
Truth.assertThat( assertThat(
factory.create(aPollContent(endTime = 1UL), eventId = null) factory.create(aPollContent(endTime = 1UL), eventId = null)
).isEqualTo( ).isEqualTo(
aTimelineItemPollContent().let { aTimelineItemPollContent().let {
@ -93,7 +93,7 @@ internal class TimelineItemContentPollFactoryTest {
@Test @Test
fun `Disclosed poll - ended, some votes, including one from current user (winner)`() = runTest { fun `Disclosed poll - ended, some votes, including one from current user (winner)`() = runTest {
val votes = MY_USER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap() val votes = MY_USER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap()
Truth.assertThat( assertThat(
factory.create(aPollContent(votes = votes, endTime = 1UL), eventId = null) factory.create(aPollContent(votes = votes, endTime = 1UL), eventId = null)
) )
.isEqualTo( .isEqualTo(
@ -112,7 +112,7 @@ internal class TimelineItemContentPollFactoryTest {
@Test @Test
fun `Disclosed poll - ended, some votes, including one from current user (not winner) and two winning votes`() = runTest { fun `Disclosed poll - ended, some votes, including one from current user (not winner) and two winning votes`() = runTest {
val votes = OTHER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap() val votes = OTHER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap()
Truth.assertThat( assertThat(
factory.create(aPollContent(votes = votes, endTime = 1UL), eventId = null) factory.create(aPollContent(votes = votes, endTime = 1UL), eventId = null)
) )
.isEqualTo( .isEqualTo(
@ -130,7 +130,7 @@ internal class TimelineItemContentPollFactoryTest {
@Test @Test
fun `Undisclosed poll - not ended, no votes`() = runTest { fun `Undisclosed poll - not ended, no votes`() = runTest {
Truth.assertThat( assertThat(
factory.create(aPollContent(PollKind.Undisclosed).copy(), eventId = null) factory.create(aPollContent(PollKind.Undisclosed).copy(), eventId = null)
).isEqualTo( ).isEqualTo(
aTimelineItemPollContent(pollKind = PollKind.Undisclosed).let { aTimelineItemPollContent(pollKind = PollKind.Undisclosed).let {
@ -142,7 +142,7 @@ internal class TimelineItemContentPollFactoryTest {
@Test @Test
fun `Undisclosed poll - not ended, some votes, including one from current user`() = runTest { fun `Undisclosed poll - not ended, some votes, including one from current user`() = runTest {
val votes = MY_USER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap() val votes = MY_USER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap()
Truth.assertThat( assertThat(
factory.create(aPollContent(pollKind = PollKind.Undisclosed, votes = votes), eventId = null) factory.create(aPollContent(pollKind = PollKind.Undisclosed, votes = votes), eventId = null)
) )
.isEqualTo( .isEqualTo(
@ -160,7 +160,7 @@ internal class TimelineItemContentPollFactoryTest {
@Test @Test
fun `Undisclosed poll - ended, no votes, no winner`() = runTest { fun `Undisclosed poll - ended, no votes, no winner`() = runTest {
Truth.assertThat( assertThat(
factory.create(aPollContent(pollKind = PollKind.Undisclosed, endTime = 1UL), eventId = null) factory.create(aPollContent(pollKind = PollKind.Undisclosed, endTime = 1UL), eventId = null)
).isEqualTo( ).isEqualTo(
aTimelineItemPollContent().let { aTimelineItemPollContent().let {
@ -178,7 +178,7 @@ internal class TimelineItemContentPollFactoryTest {
@Test @Test
fun `Undisclosed poll - ended, some votes, including one from current user (winner)`() = runTest { fun `Undisclosed poll - ended, some votes, including one from current user (winner)`() = runTest {
val votes = MY_USER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap() val votes = MY_USER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap()
Truth.assertThat( assertThat(
factory.create(aPollContent(pollKind = PollKind.Undisclosed, votes = votes, endTime = 1UL), eventId = null) factory.create(aPollContent(pollKind = PollKind.Undisclosed, votes = votes, endTime = 1UL), eventId = null)
) )
.isEqualTo( .isEqualTo(
@ -198,7 +198,7 @@ internal class TimelineItemContentPollFactoryTest {
@Test @Test
fun `Undisclosed poll - ended, some votes, including one from current user (not winner) and two winning votes`() = runTest { fun `Undisclosed poll - ended, some votes, including one from current user (not winner) and two winning votes`() = runTest {
val votes = OTHER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap() val votes = OTHER_WINNING_VOTES.mapKeys { it.key.id }.toImmutableMap()
Truth.assertThat( assertThat(
factory.create(aPollContent(PollKind.Undisclosed).copy(votes = votes, endTime = 1UL), eventId = null) factory.create(aPollContent(PollKind.Undisclosed).copy(votes = votes, endTime = 1UL), eventId = null)
) )
.isEqualTo( .isEqualTo(
@ -217,10 +217,10 @@ internal class TimelineItemContentPollFactoryTest {
@Test @Test
fun `eventId is populated`() = runTest { fun `eventId is populated`() = runTest {
Truth.assertThat(factory.create(aPollContent(), eventId = null)) assertThat(factory.create(aPollContent(), eventId = null))
.isEqualTo(aTimelineItemPollContent(eventId = null)) .isEqualTo(aTimelineItemPollContent(eventId = null))
Truth.assertThat(factory.create(aPollContent(), eventId = AN_EVENT_ID)) assertThat(factory.create(aPollContent(), eventId = AN_EVENT_ID))
.isEqualTo(aTimelineItemPollContent(eventId = AN_EVENT_ID)) .isEqualTo(aTimelineItemPollContent(eventId = AN_EVENT_ID))
} }

View file

@ -26,7 +26,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import app.cash.molecule.RecompositionMode import app.cash.molecule.RecompositionMode
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 import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.EventId
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.media.AudioInfo import io.element.android.libraries.matrix.api.media.AudioInfo
@ -59,7 +59,7 @@ class InReplyToMetadataKtTest {
anInReplyToDetails(eventContent = aMessageContent()).metadata() anInReplyToDetails(eventContent = aMessageContent()).metadata()
}.test { }.test {
awaitItem().let { awaitItem().let {
Truth.assertThat(it).isEqualTo(InReplyToMetadata.Text("textContent")) assertThat(it).isEqualTo(InReplyToMetadata.Text("textContent"))
} }
} }
} }
@ -78,7 +78,7 @@ class InReplyToMetadataKtTest {
).metadata() ).metadata()
}.test { }.test {
awaitItem().let { awaitItem().let {
Truth.assertThat(it).isEqualTo( assertThat(it).isEqualTo(
InReplyToMetadata.Thumbnail( InReplyToMetadata.Thumbnail(
attachmentThumbnailInfo = AttachmentThumbnailInfo( attachmentThumbnailInfo = AttachmentThumbnailInfo(
thumbnailSource = aMediaSource(), thumbnailSource = aMediaSource(),
@ -115,7 +115,7 @@ class InReplyToMetadataKtTest {
).metadata() ).metadata()
}.test { }.test {
awaitItem().let { awaitItem().let {
Truth.assertThat(it).isEqualTo( assertThat(it).isEqualTo(
InReplyToMetadata.Thumbnail( InReplyToMetadata.Thumbnail(
attachmentThumbnailInfo = AttachmentThumbnailInfo( attachmentThumbnailInfo = AttachmentThumbnailInfo(
thumbnailSource = aMediaSource(), thumbnailSource = aMediaSource(),
@ -148,7 +148,7 @@ class InReplyToMetadataKtTest {
).metadata() ).metadata()
}.test { }.test {
awaitItem().let { awaitItem().let {
Truth.assertThat(it).isEqualTo( assertThat(it).isEqualTo(
InReplyToMetadata.Thumbnail( InReplyToMetadata.Thumbnail(
attachmentThumbnailInfo = AttachmentThumbnailInfo( attachmentThumbnailInfo = AttachmentThumbnailInfo(
thumbnailSource = aMediaSource(), thumbnailSource = aMediaSource(),
@ -180,7 +180,7 @@ class InReplyToMetadataKtTest {
).metadata() ).metadata()
}.test { }.test {
awaitItem().let { awaitItem().let {
Truth.assertThat(it).isEqualTo( assertThat(it).isEqualTo(
InReplyToMetadata.Thumbnail( InReplyToMetadata.Thumbnail(
attachmentThumbnailInfo = AttachmentThumbnailInfo( attachmentThumbnailInfo = AttachmentThumbnailInfo(
textContent = "body", textContent = "body",
@ -209,7 +209,7 @@ class InReplyToMetadataKtTest {
} }
}.test { }.test {
awaitItem().let { awaitItem().let {
Truth.assertThat(it).isEqualTo( assertThat(it).isEqualTo(
InReplyToMetadata.Thumbnail( InReplyToMetadata.Thumbnail(
attachmentThumbnailInfo = AttachmentThumbnailInfo( attachmentThumbnailInfo = AttachmentThumbnailInfo(
thumbnailSource = null, thumbnailSource = null,
@ -240,7 +240,7 @@ class InReplyToMetadataKtTest {
} }
}.test { }.test {
awaitItem().let { awaitItem().let {
Truth.assertThat(it).isEqualTo( assertThat(it).isEqualTo(
InReplyToMetadata.Thumbnail( InReplyToMetadata.Thumbnail(
attachmentThumbnailInfo = AttachmentThumbnailInfo( attachmentThumbnailInfo = AttachmentThumbnailInfo(
thumbnailSource = null, thumbnailSource = null,
@ -262,7 +262,7 @@ class InReplyToMetadataKtTest {
).metadata() ).metadata()
}.test { }.test {
awaitItem().let { awaitItem().let {
Truth.assertThat(it).isEqualTo( assertThat(it).isEqualTo(
InReplyToMetadata.Thumbnail( InReplyToMetadata.Thumbnail(
attachmentThumbnailInfo = AttachmentThumbnailInfo( attachmentThumbnailInfo = AttachmentThumbnailInfo(
thumbnailSource = null, thumbnailSource = null,
@ -284,7 +284,7 @@ class InReplyToMetadataKtTest {
).metadata() ).metadata()
}.test { }.test {
awaitItem().let { awaitItem().let {
Truth.assertThat(it).isEqualTo(null) assertThat(it).isEqualTo(null)
} }
} }
} }

View file

@ -16,7 +16,7 @@
package io.element.android.features.messages.impl.voicemessages.timeline package io.element.android.features.messages.impl.voicemessages.timeline
import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.core.mimetype.MimeTypes import io.element.android.libraries.core.mimetype.MimeTypes
import io.element.android.libraries.matrix.api.media.MatrixMediaLoader import io.element.android.libraries.matrix.api.media.MatrixMediaLoader
import io.element.android.libraries.matrix.api.media.MediaSource import io.element.android.libraries.matrix.api.media.MediaSource
@ -43,10 +43,10 @@ class DefaultVoiceMessageMediaRepoTest {
) )
repo.getMediaFile().let { result -> repo.getMediaFile().let { result ->
Truth.assertThat(result.isSuccess).isTrue() assertThat(result.isSuccess).isTrue()
result.getOrThrow().let { file -> result.getOrThrow().let { file ->
Truth.assertThat(file.path).isEqualTo(temporaryFolder.cachedFilePath) assertThat(file.path).isEqualTo(temporaryFolder.cachedFilePath)
Truth.assertThat(file.exists()).isTrue() assertThat(file.exists()).isTrue()
} }
} }
} }
@ -62,9 +62,9 @@ class DefaultVoiceMessageMediaRepoTest {
) )
repo.getMediaFile().let { result -> repo.getMediaFile().let { result ->
Truth.assertThat(result.isFailure).isTrue() assertThat(result.isFailure).isTrue()
result.exceptionOrNull()!!.let { exception -> result.exceptionOrNull()!!.let { exception ->
Truth.assertThat(exception).isInstanceOf(RuntimeException::class.java) assertThat(exception).isInstanceOf(RuntimeException::class.java)
} }
} }
} }
@ -87,9 +87,9 @@ class DefaultVoiceMessageMediaRepoTest {
) )
repo.getMediaFile().let { result -> repo.getMediaFile().let { result ->
Truth.assertThat(result.isFailure).isTrue() assertThat(result.isFailure).isTrue()
result.exceptionOrNull()?.let { exception -> result.exceptionOrNull()?.let { exception ->
Truth.assertThat(exception).apply { assertThat(exception).apply {
isInstanceOf(IllegalStateException::class.java) isInstanceOf(IllegalStateException::class.java)
hasMessageThat().isEqualTo("Failed to move file to cache.") hasMessageThat().isEqualTo("Failed to move file to cache.")
} }
@ -109,10 +109,10 @@ class DefaultVoiceMessageMediaRepoTest {
) )
repo.getMediaFile().let { result -> repo.getMediaFile().let { result ->
Truth.assertThat(result.isSuccess).isTrue() assertThat(result.isSuccess).isTrue()
result.getOrThrow().let { file -> result.getOrThrow().let { file ->
Truth.assertThat(file.path).isEqualTo(temporaryFolder.cachedFilePath) assertThat(file.path).isEqualTo(temporaryFolder.cachedFilePath)
Truth.assertThat(file.exists()).isTrue() assertThat(file.exists()).isTrue()
} }
} }
} }
@ -124,10 +124,10 @@ class DefaultVoiceMessageMediaRepoTest {
mxcUri = INVALID_MXC_URI, mxcUri = INVALID_MXC_URI,
) )
repo.getMediaFile().let { result -> repo.getMediaFile().let { result ->
Truth.assertThat(result.isFailure).isTrue() assertThat(result.isFailure).isTrue()
result.exceptionOrNull()!!.let { exception -> result.exceptionOrNull()!!.let { exception ->
Truth.assertThat(exception).isInstanceOf(RuntimeException::class.java) assertThat(exception).isInstanceOf(RuntimeException::class.java)
Truth.assertThat(exception).hasMessageThat().isEqualTo("Invalid mxcUri.") assertThat(exception).hasMessageThat().isEqualTo("Invalid mxcUri.")
} }
} }
} }

View file

@ -18,7 +18,7 @@ package io.element.android.features.messages.impl.voicemessages.timeline
import app.cash.turbine.TurbineTestContext import app.cash.turbine.TurbineTestContext
import app.cash.turbine.test import app.cash.turbine.test
import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.core.mimetype.MimeTypes import io.element.android.libraries.core.mimetype.MimeTypes
import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.media.MediaSource import io.element.android.libraries.matrix.api.media.MediaSource
@ -42,7 +42,7 @@ class DefaultVoiceMessagePlayerTest {
val player = createDefaultVoiceMessagePlayer() val player = createDefaultVoiceMessagePlayer()
player.state.test { player.state.test {
matchInitialState() matchInitialState()
Truth.assertThat(player.prepare().isSuccess).isTrue() assertThat(player.prepare().isSuccess).isTrue()
matchReadyState() matchReadyState()
} }
} }
@ -56,7 +56,7 @@ class DefaultVoiceMessagePlayerTest {
) )
player.state.test { player.state.test {
matchInitialState() matchInitialState()
Truth.assertThat(player.prepare().isFailure).isTrue() assertThat(player.prepare().isFailure).isTrue()
} }
} }
@ -67,7 +67,7 @@ class DefaultVoiceMessagePlayerTest {
) )
player.state.test { player.state.test {
matchInitialState() matchInitialState()
Truth.assertThat(player.prepare().isFailure).isTrue() assertThat(player.prepare().isFailure).isTrue()
} }
} }
@ -76,12 +76,12 @@ class DefaultVoiceMessagePlayerTest {
val player = createDefaultVoiceMessagePlayer() val player = createDefaultVoiceMessagePlayer()
player.state.test { player.state.test {
matchInitialState() matchInitialState()
Truth.assertThat(player.prepare().isSuccess).isTrue() assertThat(player.prepare().isSuccess).isTrue()
matchReadyState() matchReadyState()
player.play() player.play()
awaitItem().let { awaitItem().let {
Truth.assertThat(it.isPlaying).isEqualTo(true) assertThat(it.isPlaying).isEqualTo(true)
Truth.assertThat(it.currentPosition).isEqualTo(1000) assertThat(it.currentPosition).isEqualTo(1000)
} }
} }
} }
@ -96,15 +96,15 @@ class DefaultVoiceMessagePlayerTest {
) )
player.state.test { player.state.test {
matchInitialState() matchInitialState()
Truth.assertThat(player.prepare().isSuccess).isTrue() assertThat(player.prepare().isSuccess).isTrue()
matchReadyState(fakeTotalDurationMs = 1000) matchReadyState(fakeTotalDurationMs = 1000)
player.play() player.play()
awaitItem().let { awaitItem().let {
Truth.assertThat(it.isReady).isEqualTo(false) assertThat(it.isReady).isEqualTo(false)
Truth.assertThat(it.isPlaying).isEqualTo(false) assertThat(it.isPlaying).isEqualTo(false)
Truth.assertThat(it.isEnded).isEqualTo(true) assertThat(it.isEnded).isEqualTo(true)
Truth.assertThat(it.currentPosition).isEqualTo(1000) assertThat(it.currentPosition).isEqualTo(1000)
Truth.assertThat(it.duration).isEqualTo(1000) assertThat(it.duration).isEqualTo(1000)
} }
} }
} }
@ -121,72 +121,72 @@ class DefaultVoiceMessagePlayerTest {
// Play player1 until the end. // Play player1 until the end.
player1.state.test { player1.state.test {
matchInitialState() matchInitialState()
Truth.assertThat(player1.prepare().isSuccess).isTrue() assertThat(player1.prepare().isSuccess).isTrue()
matchReadyState(1_000L) matchReadyState(1_000L)
player1.play() player1.play()
awaitItem().let { // it plays until the end. awaitItem().let { // it plays until the end.
Truth.assertThat(it.isReady).isEqualTo(false) assertThat(it.isReady).isEqualTo(false)
Truth.assertThat(it.isPlaying).isEqualTo(false) assertThat(it.isPlaying).isEqualTo(false)
Truth.assertThat(it.isEnded).isEqualTo(true) assertThat(it.isEnded).isEqualTo(true)
Truth.assertThat(it.currentPosition).isEqualTo(1000) assertThat(it.currentPosition).isEqualTo(1000)
Truth.assertThat(it.duration).isEqualTo(1000) assertThat(it.duration).isEqualTo(1000)
} }
} }
// Play player2 until the end. // Play player2 until the end.
player2.state.test { player2.state.test {
matchInitialState() matchInitialState()
Truth.assertThat(player2.prepare().isSuccess).isTrue() assertThat(player2.prepare().isSuccess).isTrue()
awaitItem().let { // Additional spurious state due to MediaPlayer owner change. awaitItem().let { // Additional spurious state due to MediaPlayer owner change.
Truth.assertThat(it.isReady).isEqualTo(false) assertThat(it.isReady).isEqualTo(false)
Truth.assertThat(it.isPlaying).isEqualTo(false) assertThat(it.isPlaying).isEqualTo(false)
Truth.assertThat(it.isEnded).isEqualTo(true) assertThat(it.isEnded).isEqualTo(true)
Truth.assertThat(it.currentPosition).isEqualTo(1000) assertThat(it.currentPosition).isEqualTo(1000)
Truth.assertThat(it.duration).isEqualTo(1000) assertThat(it.duration).isEqualTo(1000)
} }
awaitItem().let {// Additional spurious state due to MediaPlayer owner change. awaitItem().let {// Additional spurious state due to MediaPlayer owner change.
Truth.assertThat(it.isReady).isEqualTo(false) assertThat(it.isReady).isEqualTo(false)
Truth.assertThat(it.isPlaying).isEqualTo(false) assertThat(it.isPlaying).isEqualTo(false)
Truth.assertThat(it.isEnded).isEqualTo(false) assertThat(it.isEnded).isEqualTo(false)
Truth.assertThat(it.currentPosition).isEqualTo(0) assertThat(it.currentPosition).isEqualTo(0)
Truth.assertThat(it.duration).isEqualTo(null) assertThat(it.duration).isEqualTo(null)
} }
matchReadyState(1_000L) matchReadyState(1_000L)
player2.play() player2.play()
awaitItem().let { // it plays until the end. awaitItem().let { // it plays until the end.
Truth.assertThat(it.isReady).isEqualTo(false) assertThat(it.isReady).isEqualTo(false)
Truth.assertThat(it.isPlaying).isEqualTo(false) assertThat(it.isPlaying).isEqualTo(false)
Truth.assertThat(it.isEnded).isEqualTo(true) assertThat(it.isEnded).isEqualTo(true)
Truth.assertThat(it.currentPosition).isEqualTo(1000) assertThat(it.currentPosition).isEqualTo(1000)
Truth.assertThat(it.duration).isEqualTo(1000) assertThat(it.duration).isEqualTo(1000)
} }
} }
// Play player1 again. // Play player1 again.
player1.state.test { player1.state.test {
awaitItem().let {// Last previous state/ awaitItem().let {// Last previous state/
Truth.assertThat(it.isReady).isEqualTo(false) assertThat(it.isReady).isEqualTo(false)
Truth.assertThat(it.isPlaying).isEqualTo(false) assertThat(it.isPlaying).isEqualTo(false)
Truth.assertThat(it.isEnded).isEqualTo(true) assertThat(it.isEnded).isEqualTo(true)
Truth.assertThat(it.currentPosition).isEqualTo(1000) assertThat(it.currentPosition).isEqualTo(1000)
Truth.assertThat(it.duration).isEqualTo(1000) assertThat(it.duration).isEqualTo(1000)
} }
Truth.assertThat(player1.prepare().isSuccess).isTrue() assertThat(player1.prepare().isSuccess).isTrue()
awaitItem().let {// Additional spurious state due to MediaPlayer owner change. awaitItem().let {// Additional spurious state due to MediaPlayer owner change.
Truth.assertThat(it.isReady).isEqualTo(false) assertThat(it.isReady).isEqualTo(false)
Truth.assertThat(it.isPlaying).isEqualTo(false) assertThat(it.isPlaying).isEqualTo(false)
Truth.assertThat(it.isEnded).isEqualTo(false) assertThat(it.isEnded).isEqualTo(false)
Truth.assertThat(it.currentPosition).isEqualTo(0) assertThat(it.currentPosition).isEqualTo(0)
Truth.assertThat(it.duration).isEqualTo(null) assertThat(it.duration).isEqualTo(null)
} }
matchReadyState(1_000L) matchReadyState(1_000L)
player1.play() player1.play()
awaitItem().let { // it played again until the end. awaitItem().let { // it played again until the end.
Truth.assertThat(it.isReady).isEqualTo(false) assertThat(it.isReady).isEqualTo(false)
Truth.assertThat(it.isPlaying).isEqualTo(false) assertThat(it.isPlaying).isEqualTo(false)
Truth.assertThat(it.isEnded).isEqualTo(true) assertThat(it.isEnded).isEqualTo(true)
Truth.assertThat(it.currentPosition).isEqualTo(1000) assertThat(it.currentPosition).isEqualTo(1000)
Truth.assertThat(it.duration).isEqualTo(1000) assertThat(it.duration).isEqualTo(1000)
} }
} }
} }
@ -196,14 +196,14 @@ class DefaultVoiceMessagePlayerTest {
val player = createDefaultVoiceMessagePlayer() val player = createDefaultVoiceMessagePlayer()
player.state.test { player.state.test {
matchInitialState() matchInitialState()
Truth.assertThat(player.prepare().isSuccess).isTrue() assertThat(player.prepare().isSuccess).isTrue()
matchReadyState() matchReadyState()
player.play() player.play()
skipItems(1) // skip play state skipItems(1) // skip play state
player.pause() player.pause()
awaitItem().let { awaitItem().let {
Truth.assertThat(it.isPlaying).isEqualTo(false) assertThat(it.isPlaying).isEqualTo(false)
Truth.assertThat(it.currentPosition).isEqualTo(1000) assertThat(it.currentPosition).isEqualTo(1000)
} }
} }
} }
@ -213,7 +213,7 @@ class DefaultVoiceMessagePlayerTest {
val player = createDefaultVoiceMessagePlayer() val player = createDefaultVoiceMessagePlayer()
player.state.test { player.state.test {
matchInitialState() matchInitialState()
Truth.assertThat(player.prepare().isSuccess).isTrue() assertThat(player.prepare().isSuccess).isTrue()
matchReadyState() matchReadyState()
player.play() player.play()
skipItems(1) // skip play state skipItems(1) // skip play state
@ -221,8 +221,8 @@ class DefaultVoiceMessagePlayerTest {
skipItems(1) // skip pause state skipItems(1) // skip pause state
player.play() player.play()
awaitItem().let { awaitItem().let {
Truth.assertThat(it.isPlaying).isEqualTo(true) assertThat(it.isPlaying).isEqualTo(true)
Truth.assertThat(it.currentPosition).isEqualTo(2000) assertThat(it.currentPosition).isEqualTo(2000)
} }
} }
} }
@ -234,19 +234,19 @@ class DefaultVoiceMessagePlayerTest {
matchInitialState() matchInitialState()
player.seekTo(2000) player.seekTo(2000)
awaitItem().let { awaitItem().let {
Truth.assertThat(it.isReady).isEqualTo(false) assertThat(it.isReady).isEqualTo(false)
Truth.assertThat(it.isPlaying).isEqualTo(false) assertThat(it.isPlaying).isEqualTo(false)
Truth.assertThat(it.isEnded).isEqualTo(false) assertThat(it.isEnded).isEqualTo(false)
Truth.assertThat(it.currentPosition).isEqualTo(2000) assertThat(it.currentPosition).isEqualTo(2000)
Truth.assertThat(it.duration).isEqualTo(null) assertThat(it.duration).isEqualTo(null)
} }
Truth.assertThat(player.prepare().isSuccess).isTrue() assertThat(player.prepare().isSuccess).isTrue()
awaitItem().let { awaitItem().let {
Truth.assertThat(it.isReady).isEqualTo(true) assertThat(it.isReady).isEqualTo(true)
Truth.assertThat(it.isPlaying).isEqualTo(false) assertThat(it.isPlaying).isEqualTo(false)
Truth.assertThat(it.isEnded).isEqualTo(false) assertThat(it.isEnded).isEqualTo(false)
Truth.assertThat(it.currentPosition).isEqualTo(2000) assertThat(it.currentPosition).isEqualTo(2000)
Truth.assertThat(it.duration).isEqualTo(FAKE_TOTAL_DURATION_MS) assertThat(it.duration).isEqualTo(FAKE_TOTAL_DURATION_MS)
} }
} }
} }
@ -256,15 +256,15 @@ class DefaultVoiceMessagePlayerTest {
val player = createDefaultVoiceMessagePlayer() val player = createDefaultVoiceMessagePlayer()
player.state.test { player.state.test {
matchInitialState() matchInitialState()
Truth.assertThat(player.prepare().isSuccess).isTrue() assertThat(player.prepare().isSuccess).isTrue()
matchReadyState() matchReadyState()
player.seekTo(2000) player.seekTo(2000)
awaitItem().let { awaitItem().let {
Truth.assertThat(it.isReady).isEqualTo(true) assertThat(it.isReady).isEqualTo(true)
Truth.assertThat(it.isPlaying).isEqualTo(false) assertThat(it.isPlaying).isEqualTo(false)
Truth.assertThat(it.isEnded).isEqualTo(false) assertThat(it.isEnded).isEqualTo(false)
Truth.assertThat(it.currentPosition).isEqualTo(2000) assertThat(it.currentPosition).isEqualTo(2000)
Truth.assertThat(it.duration).isEqualTo(FAKE_TOTAL_DURATION_MS) assertThat(it.duration).isEqualTo(FAKE_TOTAL_DURATION_MS)
} }
} }
} }
@ -296,11 +296,11 @@ private const val MXC_URI = "mxc://matrix.org/1234567890abcdefg"
private suspend fun TurbineTestContext<VoiceMessagePlayer.State>.matchInitialState() { private suspend fun TurbineTestContext<VoiceMessagePlayer.State>.matchInitialState() {
awaitItem().let { awaitItem().let {
Truth.assertThat(it.isReady).isEqualTo(false) assertThat(it.isReady).isEqualTo(false)
Truth.assertThat(it.isPlaying).isEqualTo(false) assertThat(it.isPlaying).isEqualTo(false)
Truth.assertThat(it.isEnded).isEqualTo(false) assertThat(it.isEnded).isEqualTo(false)
Truth.assertThat(it.currentPosition).isEqualTo(0) assertThat(it.currentPosition).isEqualTo(0)
Truth.assertThat(it.duration).isEqualTo(null) assertThat(it.duration).isEqualTo(null)
} }
} }
@ -308,10 +308,10 @@ private suspend fun TurbineTestContext<VoiceMessagePlayer.State>.matchReadyState
fakeTotalDurationMs: Long = FAKE_TOTAL_DURATION_MS, fakeTotalDurationMs: Long = FAKE_TOTAL_DURATION_MS,
) { ) {
awaitItem().let { awaitItem().let {
Truth.assertThat(it.isReady).isEqualTo(true) assertThat(it.isReady).isEqualTo(true)
Truth.assertThat(it.isPlaying).isEqualTo(false) assertThat(it.isPlaying).isEqualTo(false)
Truth.assertThat(it.isEnded).isEqualTo(false) assertThat(it.isEnded).isEqualTo(false)
Truth.assertThat(it.currentPosition).isEqualTo(0) assertThat(it.currentPosition).isEqualTo(0)
Truth.assertThat(it.duration).isEqualTo(fakeTotalDurationMs) assertThat(it.duration).isEqualTo(fakeTotalDurationMs)
} }
} }

View file

@ -16,7 +16,7 @@
package io.element.android.features.messages.impl.voicemessages.timeline package io.element.android.features.messages.impl.voicemessages.timeline
import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.core.mimetype.MimeTypes import io.element.android.libraries.core.mimetype.MimeTypes
import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem
@ -44,13 +44,13 @@ class RedactedVoiceMessageManagerTest {
} }
val manager = aDefaultRedactedVoiceMessageManager(mediaPlayer = mediaPlayer) val manager = aDefaultRedactedVoiceMessageManager(mediaPlayer = mediaPlayer)
Truth.assertThat(mediaPlayer.state.value.mediaId).isEqualTo(AN_EVENT_ID.value) assertThat(mediaPlayer.state.value.mediaId).isEqualTo(AN_EVENT_ID.value)
Truth.assertThat(mediaPlayer.state.value.isPlaying).isTrue() assertThat(mediaPlayer.state.value.isPlaying).isTrue()
manager.onEachMatrixTimelineItem(aRedactedMatrixTimeline(AN_EVENT_ID_2)) manager.onEachMatrixTimelineItem(aRedactedMatrixTimeline(AN_EVENT_ID_2))
Truth.assertThat(mediaPlayer.state.value.mediaId).isEqualTo(AN_EVENT_ID.value) assertThat(mediaPlayer.state.value.mediaId).isEqualTo(AN_EVENT_ID.value)
Truth.assertThat(mediaPlayer.state.value.isPlaying).isTrue() assertThat(mediaPlayer.state.value.isPlaying).isTrue()
} }
@Test @Test
@ -61,13 +61,13 @@ class RedactedVoiceMessageManagerTest {
} }
val manager = aDefaultRedactedVoiceMessageManager(mediaPlayer = mediaPlayer) val manager = aDefaultRedactedVoiceMessageManager(mediaPlayer = mediaPlayer)
Truth.assertThat(mediaPlayer.state.value.mediaId).isEqualTo(AN_EVENT_ID.value) assertThat(mediaPlayer.state.value.mediaId).isEqualTo(AN_EVENT_ID.value)
Truth.assertThat(mediaPlayer.state.value.isPlaying).isTrue() assertThat(mediaPlayer.state.value.isPlaying).isTrue()
manager.onEachMatrixTimelineItem(aRedactedMatrixTimeline(AN_EVENT_ID)) manager.onEachMatrixTimelineItem(aRedactedMatrixTimeline(AN_EVENT_ID))
Truth.assertThat(mediaPlayer.state.value.mediaId).isEqualTo(AN_EVENT_ID.value) assertThat(mediaPlayer.state.value.mediaId).isEqualTo(AN_EVENT_ID.value)
Truth.assertThat(mediaPlayer.state.value.isPlaying).isFalse() assertThat(mediaPlayer.state.value.isPlaying).isFalse()
} }
} }

View file

@ -19,7 +19,7 @@ package io.element.android.features.messages.impl.voicemessages.timeline
import app.cash.molecule.RecompositionMode import app.cash.molecule.RecompositionMode
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 import com.google.common.truth.Truth.assertThat
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemVoiceContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemVoiceContent
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemVoiceContent import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemVoiceContent
import io.element.android.features.messages.impl.voicemessages.VoiceMessageException import io.element.android.features.messages.impl.voicemessages.VoiceMessageException
@ -39,9 +39,9 @@ class VoiceMessagePresenterTest {
presenter.present() presenter.present()
}.test { }.test {
awaitItem().let { awaitItem().let {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play)
Truth.assertThat(it.progress).isEqualTo(0f) assertThat(it.progress).isEqualTo(0f)
Truth.assertThat(it.time).isEqualTo("1:01") assertThat(it.time).isEqualTo("1:01")
} }
} }
} }
@ -56,27 +56,27 @@ class VoiceMessagePresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem().also { val initialState = awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play)
Truth.assertThat(it.progress).isEqualTo(0f) assertThat(it.progress).isEqualTo(0f)
Truth.assertThat(it.time).isEqualTo("0:02") assertThat(it.time).isEqualTo("0:02")
} }
initialState.eventSink(VoiceMessageEvents.PlayPause) initialState.eventSink(VoiceMessageEvents.PlayPause)
awaitItem().also { awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Downloading) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Downloading)
Truth.assertThat(it.progress).isEqualTo(0f) assertThat(it.progress).isEqualTo(0f)
Truth.assertThat(it.time).isEqualTo("0:02") assertThat(it.time).isEqualTo("0:02")
} }
awaitItem().also { awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Downloading) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Downloading)
Truth.assertThat(it.progress).isEqualTo(0f) assertThat(it.progress).isEqualTo(0f)
Truth.assertThat(it.time).isEqualTo("0:00") assertThat(it.time).isEqualTo("0:00")
} }
awaitItem().also { awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause)
Truth.assertThat(it.progress).isEqualTo(0.5f) assertThat(it.progress).isEqualTo(0.5f)
Truth.assertThat(it.time).isEqualTo("0:01") assertThat(it.time).isEqualTo("0:01")
} }
} }
} }
@ -94,25 +94,25 @@ class VoiceMessagePresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem().also { val initialState = awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play)
Truth.assertThat(it.progress).isEqualTo(0f) assertThat(it.progress).isEqualTo(0f)
Truth.assertThat(it.time).isEqualTo("0:02") assertThat(it.time).isEqualTo("0:02")
} }
initialState.eventSink(VoiceMessageEvents.PlayPause) initialState.eventSink(VoiceMessageEvents.PlayPause)
awaitItem().also { awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Downloading) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Downloading)
Truth.assertThat(it.progress).isEqualTo(0f) assertThat(it.progress).isEqualTo(0f)
Truth.assertThat(it.time).isEqualTo("0:02") assertThat(it.time).isEqualTo("0:02")
} }
awaitItem().also { awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Retry) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Retry)
Truth.assertThat(it.progress).isEqualTo(0f) assertThat(it.progress).isEqualTo(0f)
Truth.assertThat(it.time).isEqualTo("0:02") assertThat(it.time).isEqualTo("0:02")
} }
analyticsService.trackedErrors.first().also { analyticsService.trackedErrors.first().also {
Truth.assertThat(it).apply { assertThat(it).apply {
isInstanceOf(VoiceMessageException.PlayMessageError::class.java) isInstanceOf(VoiceMessageException.PlayMessageError::class.java)
hasMessageThat().isEqualTo("Error while trying to play voice message") hasMessageThat().isEqualTo("Error while trying to play voice message")
} }
@ -130,25 +130,25 @@ class VoiceMessagePresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem().also { val initialState = awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play)
Truth.assertThat(it.progress).isEqualTo(0f) assertThat(it.progress).isEqualTo(0f)
Truth.assertThat(it.time).isEqualTo("0:02") assertThat(it.time).isEqualTo("0:02")
} }
initialState.eventSink(VoiceMessageEvents.PlayPause) initialState.eventSink(VoiceMessageEvents.PlayPause)
skipItems(2) // skip downloading states skipItems(2) // skip downloading states
val playingState = awaitItem().also { val playingState = awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause)
Truth.assertThat(it.progress).isEqualTo(0.5f) assertThat(it.progress).isEqualTo(0.5f)
Truth.assertThat(it.time).isEqualTo("0:01") assertThat(it.time).isEqualTo("0:01")
} }
playingState.eventSink(VoiceMessageEvents.PlayPause) playingState.eventSink(VoiceMessageEvents.PlayPause)
awaitItem().also { awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play)
Truth.assertThat(it.progress).isEqualTo(0.5f) assertThat(it.progress).isEqualTo(0.5f)
Truth.assertThat(it.time).isEqualTo("0:01") assertThat(it.time).isEqualTo("0:01")
} }
} }
} }
@ -162,9 +162,9 @@ class VoiceMessagePresenterTest {
presenter.present() presenter.present()
}.test { }.test {
awaitItem().also { awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Disabled) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Disabled)
Truth.assertThat(it.progress).isEqualTo(0f) assertThat(it.progress).isEqualTo(0f)
Truth.assertThat(it.time).isEqualTo("1:01") assertThat(it.time).isEqualTo("1:01")
} }
} }
} }
@ -179,17 +179,17 @@ class VoiceMessagePresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem().also { val initialState = awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play)
Truth.assertThat(it.progress).isEqualTo(0f) assertThat(it.progress).isEqualTo(0f)
Truth.assertThat(it.time).isEqualTo("0:10") assertThat(it.time).isEqualTo("0:10")
} }
initialState.eventSink(VoiceMessageEvents.Seek(0.5f)) initialState.eventSink(VoiceMessageEvents.Seek(0.5f))
awaitItem().also { awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play)
Truth.assertThat(it.progress).isEqualTo(0.5f) assertThat(it.progress).isEqualTo(0.5f)
Truth.assertThat(it.time).isEqualTo("0:05") assertThat(it.time).isEqualTo("0:05")
} }
} }
} }
@ -203,9 +203,9 @@ class VoiceMessagePresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem().also { val initialState = awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play)
Truth.assertThat(it.progress).isEqualTo(0f) assertThat(it.progress).isEqualTo(0f)
Truth.assertThat(it.time).isEqualTo("0:10") assertThat(it.time).isEqualTo("0:10")
} }
initialState.eventSink(VoiceMessageEvents.PlayPause) initialState.eventSink(VoiceMessageEvents.PlayPause)
@ -213,17 +213,17 @@ class VoiceMessagePresenterTest {
skipItems(2) // skip downloading states skipItems(2) // skip downloading states
awaitItem().also { awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause)
Truth.assertThat(it.progress).isEqualTo(0.1f) assertThat(it.progress).isEqualTo(0.1f)
Truth.assertThat(it.time).isEqualTo("0:01") assertThat(it.time).isEqualTo("0:01")
} }
initialState.eventSink(VoiceMessageEvents.Seek(0.5f)) initialState.eventSink(VoiceMessageEvents.Seek(0.5f))
awaitItem().also { awaitItem().also {
Truth.assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause) assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause)
Truth.assertThat(it.progress).isEqualTo(0.5f) assertThat(it.progress).isEqualTo(0.5f)
Truth.assertThat(it.time).isEqualTo("0:05") assertThat(it.time).isEqualTo("0:05")
} }
} }
} }

View file

@ -20,7 +20,7 @@ import app.cash.molecule.RecompositionMode
import app.cash.molecule.moleculeFlow import app.cash.molecule.moleculeFlow
import app.cash.turbine.TurbineTestContext import app.cash.turbine.TurbineTestContext
import app.cash.turbine.test import app.cash.turbine.test
import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat
import im.vector.app.features.analytics.plan.Composer import im.vector.app.features.analytics.plan.Composer
import im.vector.app.features.analytics.plan.PollCreation import im.vector.app.features.analytics.plan.PollCreation
import io.element.android.features.messages.test.FakeMessageComposerContext import io.element.android.features.messages.test.FakeMessageComposerContext
@ -86,8 +86,8 @@ class CreatePollPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
awaitDefaultItem() awaitDefaultItem()
Truth.assertThat(fakeAnalyticsService.trackedErrors.filterIsInstance<CreatePollException.GetPollFailed>()).isNotEmpty() assertThat(fakeAnalyticsService.trackedErrors.filterIsInstance<CreatePollException.GetPollFailed>()).isNotEmpty()
Truth.assertThat(navUpInvocationsCount).isEqualTo(1) assertThat(navUpInvocationsCount).isEqualTo(1)
} }
} }
@ -98,19 +98,19 @@ class CreatePollPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initial = awaitItem() val initial = awaitItem()
Truth.assertThat(initial.canSave).isFalse() assertThat(initial.canSave).isFalse()
initial.eventSink(CreatePollEvents.SetQuestion("A question?")) initial.eventSink(CreatePollEvents.SetQuestion("A question?"))
val questionSet = awaitItem() val questionSet = awaitItem()
Truth.assertThat(questionSet.canSave).isFalse() assertThat(questionSet.canSave).isFalse()
questionSet.eventSink(CreatePollEvents.SetAnswer(0, "Answer 1")) questionSet.eventSink(CreatePollEvents.SetAnswer(0, "Answer 1"))
val answer1Set = awaitItem() val answer1Set = awaitItem()
Truth.assertThat(answer1Set.canSave).isFalse() assertThat(answer1Set.canSave).isFalse()
answer1Set.eventSink(CreatePollEvents.SetAnswer(1, "Answer 2")) answer1Set.eventSink(CreatePollEvents.SetAnswer(1, "Answer 2"))
val answer2Set = awaitItem() val answer2Set = awaitItem()
Truth.assertThat(answer2Set.canSave).isTrue() assertThat(answer2Set.canSave).isTrue()
} }
} }
@ -127,8 +127,8 @@ class CreatePollPresenterTest {
skipItems(3) skipItems(3)
initial.eventSink(CreatePollEvents.Save) initial.eventSink(CreatePollEvents.Save)
delay(1) // Wait for the coroutine to finish delay(1) // Wait for the coroutine to finish
Truth.assertThat(fakeMatrixRoom.createPollInvocations.size).isEqualTo(1) assertThat(fakeMatrixRoom.createPollInvocations.size).isEqualTo(1)
Truth.assertThat(fakeMatrixRoom.createPollInvocations.last()).isEqualTo( assertThat(fakeMatrixRoom.createPollInvocations.last()).isEqualTo(
SavePollInvocation( SavePollInvocation(
question = "A question?", question = "A question?",
answers = listOf("Answer 1", "Answer 2"), answers = listOf("Answer 1", "Answer 2"),
@ -136,8 +136,8 @@ class CreatePollPresenterTest {
pollKind = PollKind.Disclosed pollKind = PollKind.Disclosed
) )
) )
Truth.assertThat(fakeAnalyticsService.capturedEvents.size).isEqualTo(2) assertThat(fakeAnalyticsService.capturedEvents.size).isEqualTo(2)
Truth.assertThat(fakeAnalyticsService.capturedEvents[0]).isEqualTo( assertThat(fakeAnalyticsService.capturedEvents[0]).isEqualTo(
Composer( Composer(
inThread = false, inThread = false,
isEditing = false, isEditing = false,
@ -145,7 +145,7 @@ class CreatePollPresenterTest {
messageType = Composer.MessageType.Poll, messageType = Composer.MessageType.Poll,
) )
) )
Truth.assertThat(fakeAnalyticsService.capturedEvents[1]).isEqualTo( assertThat(fakeAnalyticsService.capturedEvents[1]).isEqualTo(
PollCreation( PollCreation(
action = PollCreation.Action.Create, action = PollCreation.Action.Create,
isUndisclosed = false, isUndisclosed = false,
@ -168,10 +168,10 @@ class CreatePollPresenterTest {
awaitItem().eventSink(CreatePollEvents.SetAnswer(1, "Answer 2")) awaitItem().eventSink(CreatePollEvents.SetAnswer(1, "Answer 2"))
awaitItem().eventSink(CreatePollEvents.Save) awaitItem().eventSink(CreatePollEvents.Save)
delay(1) // Wait for the coroutine to finish delay(1) // Wait for the coroutine to finish
Truth.assertThat(fakeMatrixRoom.createPollInvocations).hasSize(1) assertThat(fakeMatrixRoom.createPollInvocations).hasSize(1)
Truth.assertThat(fakeAnalyticsService.capturedEvents).isEmpty() assertThat(fakeAnalyticsService.capturedEvents).isEmpty()
Truth.assertThat(fakeAnalyticsService.trackedErrors).hasSize(1) assertThat(fakeAnalyticsService.trackedErrors).hasSize(1)
Truth.assertThat(fakeAnalyticsService.trackedErrors).containsExactly( assertThat(fakeAnalyticsService.trackedErrors).containsExactly(
CreatePollException.SavePollFailed("Failed to create poll", error) CreatePollException.SavePollFailed("Failed to create poll", error)
) )
} }
@ -201,8 +201,8 @@ class CreatePollPresenterTest {
eventSink(CreatePollEvents.Save) eventSink(CreatePollEvents.Save)
} }
delay(1) // Wait for the coroutine to finish delay(1) // Wait for the coroutine to finish
Truth.assertThat(fakeMatrixRoom.editPollInvocations.size).isEqualTo(1) assertThat(fakeMatrixRoom.editPollInvocations.size).isEqualTo(1)
Truth.assertThat(fakeMatrixRoom.editPollInvocations.last()).isEqualTo( assertThat(fakeMatrixRoom.editPollInvocations.last()).isEqualTo(
SavePollInvocation( SavePollInvocation(
question = "Changed question", question = "Changed question",
answers = listOf("Changed answer 1", "Changed answer 2", "Maybe"), answers = listOf("Changed answer 1", "Changed answer 2", "Maybe"),
@ -210,8 +210,8 @@ class CreatePollPresenterTest {
pollKind = PollKind.Disclosed pollKind = PollKind.Disclosed
) )
) )
Truth.assertThat(fakeAnalyticsService.capturedEvents.size).isEqualTo(2) assertThat(fakeAnalyticsService.capturedEvents.size).isEqualTo(2)
Truth.assertThat(fakeAnalyticsService.capturedEvents[0]).isEqualTo( assertThat(fakeAnalyticsService.capturedEvents[0]).isEqualTo(
Composer( Composer(
inThread = false, inThread = false,
isEditing = true, isEditing = true,
@ -219,7 +219,7 @@ class CreatePollPresenterTest {
messageType = Composer.MessageType.Poll, messageType = Composer.MessageType.Poll,
) )
) )
Truth.assertThat(fakeAnalyticsService.capturedEvents[1]).isEqualTo( assertThat(fakeAnalyticsService.capturedEvents[1]).isEqualTo(
PollCreation( PollCreation(
action = PollCreation.Action.Edit, action = PollCreation.Action.Edit,
isUndisclosed = false, isUndisclosed = false,
@ -241,10 +241,10 @@ class CreatePollPresenterTest {
awaitPollLoaded().eventSink(CreatePollEvents.SetAnswer(0, "A")) awaitPollLoaded().eventSink(CreatePollEvents.SetAnswer(0, "A"))
awaitPollLoaded(newAnswer1 = "A").eventSink(CreatePollEvents.Save) awaitPollLoaded(newAnswer1 = "A").eventSink(CreatePollEvents.Save)
delay(1) // Wait for the coroutine to finish delay(1) // Wait for the coroutine to finish
Truth.assertThat(fakeMatrixRoom.editPollInvocations).hasSize(1) assertThat(fakeMatrixRoom.editPollInvocations).hasSize(1)
Truth.assertThat(fakeAnalyticsService.capturedEvents).isEmpty() assertThat(fakeAnalyticsService.capturedEvents).isEmpty()
Truth.assertThat(fakeAnalyticsService.trackedErrors).hasSize(1) assertThat(fakeAnalyticsService.trackedErrors).hasSize(1)
Truth.assertThat(fakeAnalyticsService.trackedErrors).containsExactly( assertThat(fakeAnalyticsService.trackedErrors).containsExactly(
CreatePollException.SavePollFailed("Failed to edit poll", error) CreatePollException.SavePollFailed("Failed to edit poll", error)
) )
} }
@ -257,16 +257,16 @@ class CreatePollPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initial = awaitItem() val initial = awaitItem()
Truth.assertThat(initial.answers.size).isEqualTo(2) assertThat(initial.answers.size).isEqualTo(2)
initial.eventSink(CreatePollEvents.AddAnswer) initial.eventSink(CreatePollEvents.AddAnswer)
val answerAdded = awaitItem() val answerAdded = awaitItem()
Truth.assertThat(answerAdded.answers.size).isEqualTo(3) assertThat(answerAdded.answers.size).isEqualTo(3)
Truth.assertThat(answerAdded.answers[2].text).isEmpty() assertThat(answerAdded.answers[2].text).isEmpty()
initial.eventSink(CreatePollEvents.RemoveAnswer(2)) initial.eventSink(CreatePollEvents.RemoveAnswer(2))
val answerRemoved = awaitItem() val answerRemoved = awaitItem()
Truth.assertThat(answerRemoved.answers.size).isEqualTo(2) assertThat(answerRemoved.answers.size).isEqualTo(2)
} }
} }
@ -279,7 +279,7 @@ class CreatePollPresenterTest {
val initial = awaitItem() val initial = awaitItem()
initial.eventSink(CreatePollEvents.SetQuestion("A question?")) initial.eventSink(CreatePollEvents.SetQuestion("A question?"))
val questionSet = awaitItem() val questionSet = awaitItem()
Truth.assertThat(questionSet.question).isEqualTo("A question?") assertThat(questionSet.question).isEqualTo("A question?")
} }
} }
@ -292,7 +292,7 @@ class CreatePollPresenterTest {
val initial = awaitItem() val initial = awaitItem()
initial.eventSink(CreatePollEvents.SetAnswer(0, "This is answer 1")) initial.eventSink(CreatePollEvents.SetAnswer(0, "This is answer 1"))
val answerSet = awaitItem() val answerSet = awaitItem()
Truth.assertThat(answerSet.answers.first().text).isEqualTo("This is answer 1") assertThat(answerSet.answers.first().text).isEqualTo("This is answer 1")
} }
} }
@ -305,7 +305,7 @@ class CreatePollPresenterTest {
val initial = awaitItem() val initial = awaitItem()
initial.eventSink(CreatePollEvents.SetPollKind(PollKind.Undisclosed)) initial.eventSink(CreatePollEvents.SetPollKind(PollKind.Undisclosed))
val kindSet = awaitItem() val kindSet = awaitItem()
Truth.assertThat(kindSet.pollKind).isEqualTo(PollKind.Undisclosed) assertThat(kindSet.pollKind).isEqualTo(PollKind.Undisclosed)
} }
} }
@ -316,13 +316,13 @@ class CreatePollPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initial = awaitItem() val initial = awaitItem()
Truth.assertThat(initial.canAddAnswer).isTrue() assertThat(initial.canAddAnswer).isTrue()
repeat(17) { repeat(17) {
initial.eventSink(CreatePollEvents.AddAnswer) initial.eventSink(CreatePollEvents.AddAnswer)
Truth.assertThat(awaitItem().canAddAnswer).isTrue() assertThat(awaitItem().canAddAnswer).isTrue()
} }
initial.eventSink(CreatePollEvents.AddAnswer) initial.eventSink(CreatePollEvents.AddAnswer)
Truth.assertThat(awaitItem().canAddAnswer).isFalse() assertThat(awaitItem().canAddAnswer).isFalse()
} }
} }
@ -333,9 +333,9 @@ class CreatePollPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initial = awaitItem() val initial = awaitItem()
Truth.assertThat(initial.answers.all { it.canDelete }).isFalse() assertThat(initial.answers.all { it.canDelete }).isFalse()
initial.eventSink(CreatePollEvents.AddAnswer) initial.eventSink(CreatePollEvents.AddAnswer)
Truth.assertThat(awaitItem().answers.all { it.canDelete }).isTrue() assertThat(awaitItem().answers.all { it.canDelete }).isTrue()
} }
} }
@ -347,7 +347,7 @@ class CreatePollPresenterTest {
}.test { }.test {
val initial = awaitItem() val initial = awaitItem()
initial.eventSink(CreatePollEvents.SetAnswer(0, "A".repeat(241))) initial.eventSink(CreatePollEvents.SetAnswer(0, "A".repeat(241)))
Truth.assertThat(awaitItem().answers.first().text.length).isEqualTo(240) assertThat(awaitItem().answers.first().text.length).isEqualTo(240)
} }
} }
@ -358,9 +358,9 @@ class CreatePollPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initial = awaitItem() val initial = awaitItem()
Truth.assertThat(navUpInvocationsCount).isEqualTo(0) assertThat(navUpInvocationsCount).isEqualTo(0)
initial.eventSink(CreatePollEvents.NavBack) initial.eventSink(CreatePollEvents.NavBack)
Truth.assertThat(navUpInvocationsCount).isEqualTo(1) assertThat(navUpInvocationsCount).isEqualTo(1)
} }
} }
@ -371,10 +371,10 @@ class CreatePollPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initial = awaitItem() val initial = awaitItem()
Truth.assertThat(navUpInvocationsCount).isEqualTo(0) assertThat(navUpInvocationsCount).isEqualTo(0)
Truth.assertThat(initial.showBackConfirmation).isFalse() assertThat(initial.showBackConfirmation).isFalse()
initial.eventSink(CreatePollEvents.ConfirmNavBack) initial.eventSink(CreatePollEvents.ConfirmNavBack)
Truth.assertThat(navUpInvocationsCount).isEqualTo(1) assertThat(navUpInvocationsCount).isEqualTo(1)
} }
} }
@ -386,12 +386,12 @@ class CreatePollPresenterTest {
}.test { }.test {
val initial = awaitItem() val initial = awaitItem()
initial.eventSink(CreatePollEvents.SetQuestion("Non blank")) initial.eventSink(CreatePollEvents.SetQuestion("Non blank"))
Truth.assertThat(awaitItem().showBackConfirmation).isFalse() assertThat(awaitItem().showBackConfirmation).isFalse()
initial.eventSink(CreatePollEvents.ConfirmNavBack) initial.eventSink(CreatePollEvents.ConfirmNavBack)
Truth.assertThat(awaitItem().showBackConfirmation).isTrue() assertThat(awaitItem().showBackConfirmation).isTrue()
initial.eventSink(CreatePollEvents.HideConfirmation) initial.eventSink(CreatePollEvents.HideConfirmation)
Truth.assertThat(awaitItem().showBackConfirmation).isFalse() assertThat(awaitItem().showBackConfirmation).isFalse()
Truth.assertThat(navUpInvocationsCount).isEqualTo(0) assertThat(navUpInvocationsCount).isEqualTo(0)
} }
} }
@ -403,10 +403,10 @@ class CreatePollPresenterTest {
}.test { }.test {
awaitDefaultItem() awaitDefaultItem()
val loaded = awaitPollLoaded() val loaded = awaitPollLoaded()
Truth.assertThat(navUpInvocationsCount).isEqualTo(0) assertThat(navUpInvocationsCount).isEqualTo(0)
Truth.assertThat(loaded.showBackConfirmation).isFalse() assertThat(loaded.showBackConfirmation).isFalse()
loaded.eventSink(CreatePollEvents.ConfirmNavBack) loaded.eventSink(CreatePollEvents.ConfirmNavBack)
Truth.assertThat(navUpInvocationsCount).isEqualTo(1) assertThat(navUpInvocationsCount).isEqualTo(1)
} }
} }
@ -419,12 +419,12 @@ class CreatePollPresenterTest {
awaitDefaultItem() awaitDefaultItem()
val loaded = awaitPollLoaded() val loaded = awaitPollLoaded()
loaded.eventSink(CreatePollEvents.SetQuestion("CHANGED")) loaded.eventSink(CreatePollEvents.SetQuestion("CHANGED"))
Truth.assertThat(awaitItem().showBackConfirmation).isFalse() assertThat(awaitItem().showBackConfirmation).isFalse()
loaded.eventSink(CreatePollEvents.ConfirmNavBack) loaded.eventSink(CreatePollEvents.ConfirmNavBack)
Truth.assertThat(awaitItem().showBackConfirmation).isTrue() assertThat(awaitItem().showBackConfirmation).isTrue()
loaded.eventSink(CreatePollEvents.HideConfirmation) loaded.eventSink(CreatePollEvents.HideConfirmation)
Truth.assertThat(awaitItem().showBackConfirmation).isFalse() assertThat(awaitItem().showBackConfirmation).isFalse()
Truth.assertThat(navUpInvocationsCount).isEqualTo(0) assertThat(navUpInvocationsCount).isEqualTo(0)
} }
} }
@ -437,7 +437,7 @@ class CreatePollPresenterTest {
awaitDefaultItem() awaitDefaultItem()
awaitPollLoaded().eventSink(CreatePollEvents.Delete(confirmed = false)) awaitPollLoaded().eventSink(CreatePollEvents.Delete(confirmed = false))
awaitDeleteConfirmation() awaitDeleteConfirmation()
Truth.assertThat(fakeMatrixRoom.redactEventEventIdParam).isNull() assertThat(fakeMatrixRoom.redactEventEventIdParam).isNull()
} }
} }
@ -449,12 +449,12 @@ class CreatePollPresenterTest {
}.test { }.test {
awaitDefaultItem() awaitDefaultItem()
awaitPollLoaded().eventSink(CreatePollEvents.Delete(confirmed = false)) awaitPollLoaded().eventSink(CreatePollEvents.Delete(confirmed = false))
Truth.assertThat(fakeMatrixRoom.redactEventEventIdParam).isNull() assertThat(fakeMatrixRoom.redactEventEventIdParam).isNull()
awaitDeleteConfirmation().eventSink(CreatePollEvents.HideConfirmation) awaitDeleteConfirmation().eventSink(CreatePollEvents.HideConfirmation)
awaitPollLoaded().apply { awaitPollLoaded().apply {
Truth.assertThat(showDeleteConfirmation).isFalse() assertThat(showDeleteConfirmation).isFalse()
} }
Truth.assertThat(fakeMatrixRoom.redactEventEventIdParam).isNull() assertThat(fakeMatrixRoom.redactEventEventIdParam).isNull()
} }
} }
@ -466,30 +466,30 @@ class CreatePollPresenterTest {
}.test { }.test {
awaitDefaultItem() awaitDefaultItem()
awaitPollLoaded().eventSink(CreatePollEvents.Delete(confirmed = false)) awaitPollLoaded().eventSink(CreatePollEvents.Delete(confirmed = false))
Truth.assertThat(fakeMatrixRoom.redactEventEventIdParam).isNull() assertThat(fakeMatrixRoom.redactEventEventIdParam).isNull()
awaitDeleteConfirmation().eventSink(CreatePollEvents.Delete(confirmed = true)) awaitDeleteConfirmation().eventSink(CreatePollEvents.Delete(confirmed = true))
awaitPollLoaded().apply { awaitPollLoaded().apply {
Truth.assertThat(showDeleteConfirmation).isFalse() assertThat(showDeleteConfirmation).isFalse()
} }
Truth.assertThat(fakeMatrixRoom.redactEventEventIdParam).isEqualTo(pollEventId) assertThat(fakeMatrixRoom.redactEventEventIdParam).isEqualTo(pollEventId)
} }
} }
private suspend fun TurbineTestContext<CreatePollState>.awaitDefaultItem() = private suspend fun TurbineTestContext<CreatePollState>.awaitDefaultItem() =
awaitItem().apply { awaitItem().apply {
Truth.assertThat(canSave).isFalse() assertThat(canSave).isFalse()
Truth.assertThat(canAddAnswer).isTrue() assertThat(canAddAnswer).isTrue()
Truth.assertThat(question).isEmpty() assertThat(question).isEmpty()
Truth.assertThat(answers).isEqualTo(listOf(Answer("", false), Answer("", false))) assertThat(answers).isEqualTo(listOf(Answer("", false), Answer("", false)))
Truth.assertThat(pollKind).isEqualTo(PollKind.Disclosed) assertThat(pollKind).isEqualTo(PollKind.Disclosed)
Truth.assertThat(showBackConfirmation).isFalse() assertThat(showBackConfirmation).isFalse()
Truth.assertThat(showDeleteConfirmation).isFalse() assertThat(showDeleteConfirmation).isFalse()
} }
private suspend fun TurbineTestContext<CreatePollState>.awaitDeleteConfirmation() = private suspend fun TurbineTestContext<CreatePollState>.awaitDeleteConfirmation() =
awaitItem().apply { awaitItem().apply {
Truth.assertThat(showDeleteConfirmation).isTrue() assertThat(showDeleteConfirmation).isTrue()
} }
private suspend fun TurbineTestContext<CreatePollState>.awaitPollLoaded( private suspend fun TurbineTestContext<CreatePollState>.awaitPollLoaded(
@ -498,14 +498,14 @@ class CreatePollPresenterTest {
newAnswer2: String? = null, newAnswer2: String? = null,
) = ) =
awaitItem().apply { awaitItem().apply {
Truth.assertThat(canSave).isTrue() assertThat(canSave).isTrue()
Truth.assertThat(canAddAnswer).isTrue() assertThat(canAddAnswer).isTrue()
Truth.assertThat(question).isEqualTo(newQuestion ?: existingPoll.question) assertThat(question).isEqualTo(newQuestion ?: existingPoll.question)
Truth.assertThat(answers).isEqualTo(existingPoll.expectedAnswersState().toMutableList().apply { assertThat(answers).isEqualTo(existingPoll.expectedAnswersState().toMutableList().apply {
newAnswer1?.let { this[0] = Answer(it, true) } newAnswer1?.let { this[0] = Answer(it, true) }
newAnswer2?.let { this[1] = Answer(it, true) } newAnswer2?.let { this[1] = Answer(it, true) }
}) })
Truth.assertThat(pollKind).isEqualTo(existingPoll.kind) assertThat(pollKind).isEqualTo(existingPoll.kind)
} }
private fun createCreatePollPresenter( private fun createCreatePollPresenter(

View file

@ -19,7 +19,7 @@ package io.element.android.features.preferences.impl.notifications
import app.cash.molecule.RecompositionMode import app.cash.molecule.RecompositionMode
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 import com.google.common.truth.Truth.assertThat
import io.element.android.features.preferences.impl.notifications.edit.EditDefaultNotificationSettingPresenter import io.element.android.features.preferences.impl.notifications.edit.EditDefaultNotificationSettingPresenter
import io.element.android.features.preferences.impl.notifications.edit.EditDefaultNotificationSettingStateEvents import io.element.android.features.preferences.impl.notifications.edit.EditDefaultNotificationSettingStateEvents
import io.element.android.libraries.matrix.api.room.RoomNotificationMode import io.element.android.libraries.matrix.api.room.RoomNotificationMode
@ -44,13 +44,13 @@ class EditDefaultNotificationSettingsPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.mode).isNull() assertThat(initialState.mode).isNull()
Truth.assertThat(initialState.isOneToOne).isFalse() assertThat(initialState.isOneToOne).isFalse()
val loadedState = consumeItemsUntilPredicate { val loadedState = consumeItemsUntilPredicate {
it.mode == RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY it.mode == RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY
}.last() }.last()
Truth.assertThat(loadedState.mode).isEqualTo(RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY) assertThat(loadedState.mode).isEqualTo(RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY)
} }
} }
@ -73,7 +73,7 @@ class EditDefaultNotificationSettingsPresenterTests {
val loadedState = consumeItemsUntilPredicate { state -> val loadedState = consumeItemsUntilPredicate { state ->
state.roomsWithUserDefinedMode.any { it.details.notificationMode == RoomNotificationMode.ALL_MESSAGES } state.roomsWithUserDefinedMode.any { it.details.notificationMode == RoomNotificationMode.ALL_MESSAGES }
}.last() }.last()
Truth.assertThat(loadedState.roomsWithUserDefinedMode.any { it.details.notificationMode == RoomNotificationMode.ALL_MESSAGES }).isTrue() assertThat(loadedState.roomsWithUserDefinedMode.any { it.details.notificationMode == RoomNotificationMode.ALL_MESSAGES }).isTrue()
} }
} }
@ -87,7 +87,7 @@ class EditDefaultNotificationSettingsPresenterTests {
val loadedState = consumeItemsUntilPredicate { val loadedState = consumeItemsUntilPredicate {
it.mode == RoomNotificationMode.ALL_MESSAGES it.mode == RoomNotificationMode.ALL_MESSAGES
}.last() }.last()
Truth.assertThat(loadedState.mode).isEqualTo(RoomNotificationMode.ALL_MESSAGES) assertThat(loadedState.mode).isEqualTo(RoomNotificationMode.ALL_MESSAGES)
} }
} }
@ -103,12 +103,12 @@ class EditDefaultNotificationSettingsPresenterTests {
val errorState = consumeItemsUntilPredicate { val errorState = consumeItemsUntilPredicate {
it.changeNotificationSettingAction.isFailure() it.changeNotificationSettingAction.isFailure()
}.last() }.last()
Truth.assertThat(errorState.changeNotificationSettingAction.isFailure()).isTrue() assertThat(errorState.changeNotificationSettingAction.isFailure()).isTrue()
errorState.eventSink(EditDefaultNotificationSettingStateEvents.ClearError) errorState.eventSink(EditDefaultNotificationSettingStateEvents.ClearError)
val clearErrorState = consumeItemsUntilPredicate { val clearErrorState = consumeItemsUntilPredicate {
it.changeNotificationSettingAction.isUninitialized() it.changeNotificationSettingAction.isUninitialized()
}.last() }.last()
Truth.assertThat(clearErrorState.changeNotificationSettingAction.isUninitialized()).isTrue() assertThat(clearErrorState.changeNotificationSettingAction.isUninitialized()).isTrue()
} }
} }

View file

@ -20,7 +20,7 @@ import app.cash.molecule.RecompositionMode
import app.cash.molecule.moleculeFlow import app.cash.molecule.moleculeFlow
import app.cash.turbine.test import app.cash.turbine.test
import com.element.android.libraries.pushstore.test.userpushstore.FakeUserPushStoreFactory import com.element.android.libraries.pushstore.test.userpushstore.FakeUserPushStoreFactory
import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.matrix.api.room.RoomNotificationMode import io.element.android.libraries.matrix.api.room.RoomNotificationMode
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
@ -38,20 +38,20 @@ class NotificationSettingsPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.appSettings.appNotificationsEnabled).isFalse() assertThat(initialState.appSettings.appNotificationsEnabled).isFalse()
Truth.assertThat(initialState.appSettings.systemNotificationsEnabled).isTrue() assertThat(initialState.appSettings.systemNotificationsEnabled).isTrue()
Truth.assertThat(initialState.matrixSettings).isEqualTo(NotificationSettingsState.MatrixSettings.Uninitialized) assertThat(initialState.matrixSettings).isEqualTo(NotificationSettingsState.MatrixSettings.Uninitialized)
val loadedState = consumeItemsUntilPredicate { val loadedState = consumeItemsUntilPredicate {
it.matrixSettings is NotificationSettingsState.MatrixSettings.Valid it.matrixSettings is NotificationSettingsState.MatrixSettings.Valid
}.last() }.last()
Truth.assertThat(loadedState.appSettings.appNotificationsEnabled).isTrue() assertThat(loadedState.appSettings.appNotificationsEnabled).isTrue()
Truth.assertThat(loadedState.appSettings.systemNotificationsEnabled).isTrue() assertThat(loadedState.appSettings.systemNotificationsEnabled).isTrue()
val valid = loadedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid val valid = loadedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid
Truth.assertThat(valid?.atRoomNotificationsEnabled).isFalse() assertThat(valid?.atRoomNotificationsEnabled).isFalse()
Truth.assertThat(valid?.callNotificationsEnabled).isFalse() assertThat(valid?.callNotificationsEnabled).isFalse()
Truth.assertThat(valid?.defaultGroupNotificationMode).isEqualTo(RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY) assertThat(valid?.defaultGroupNotificationMode).isEqualTo(RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY)
Truth.assertThat(valid?.defaultOneToOneNotificationMode).isEqualTo(RoomNotificationMode.ALL_MESSAGES) assertThat(valid?.defaultOneToOneNotificationMode).isEqualTo(RoomNotificationMode.ALL_MESSAGES)
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
} }
} }
@ -71,7 +71,7 @@ class NotificationSettingsPresenterTests {
?.defaultGroupNotificationMode == RoomNotificationMode.ALL_MESSAGES ?.defaultGroupNotificationMode == RoomNotificationMode.ALL_MESSAGES
}.last() }.last()
val valid = updatedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid val valid = updatedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid
Truth.assertThat(valid?.defaultGroupNotificationMode).isEqualTo(RoomNotificationMode.ALL_MESSAGES) assertThat(valid?.defaultGroupNotificationMode).isEqualTo(RoomNotificationMode.ALL_MESSAGES)
} }
} }
@ -96,7 +96,7 @@ class NotificationSettingsPresenterTests {
val updatedState = consumeItemsUntilPredicate { val updatedState = consumeItemsUntilPredicate {
it.matrixSettings is NotificationSettingsState.MatrixSettings.Invalid it.matrixSettings is NotificationSettingsState.MatrixSettings.Invalid
}.last() }.last()
Truth.assertThat(updatedState.matrixSettings).isEqualTo(NotificationSettingsState.MatrixSettings.Invalid(fixFailed = false)) assertThat(updatedState.matrixSettings).isEqualTo(NotificationSettingsState.MatrixSettings.Invalid(fixFailed = false))
} }
} }
@ -120,7 +120,7 @@ class NotificationSettingsPresenterTests {
}.last() }.last()
val fixedMatrixState = fixedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid val fixedMatrixState = fixedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid
Truth.assertThat(fixedMatrixState?.defaultGroupNotificationMode).isEqualTo(RoomNotificationMode.ALL_MESSAGES) assertThat(fixedMatrixState?.defaultGroupNotificationMode).isEqualTo(RoomNotificationMode.ALL_MESSAGES)
} }
} }
@ -133,13 +133,13 @@ class NotificationSettingsPresenterTests {
val loadedState = consumeItemsUntilPredicate { val loadedState = consumeItemsUntilPredicate {
it.matrixSettings is NotificationSettingsState.MatrixSettings.Valid it.matrixSettings is NotificationSettingsState.MatrixSettings.Valid
}.last() }.last()
Truth.assertThat(loadedState.appSettings.appNotificationsEnabled).isTrue() assertThat(loadedState.appSettings.appNotificationsEnabled).isTrue()
loadedState.eventSink(NotificationSettingsEvents.SetNotificationsEnabled(false)) loadedState.eventSink(NotificationSettingsEvents.SetNotificationsEnabled(false))
val updatedState = consumeItemsUntilPredicate { val updatedState = consumeItemsUntilPredicate {
!it.appSettings.appNotificationsEnabled !it.appSettings.appNotificationsEnabled
}.last() }.last()
Truth.assertThat(updatedState.appSettings.appNotificationsEnabled).isFalse() assertThat(updatedState.appSettings.appNotificationsEnabled).isFalse()
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
} }
} }
@ -154,14 +154,14 @@ class NotificationSettingsPresenterTests {
(it.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid)?.callNotificationsEnabled == false (it.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid)?.callNotificationsEnabled == false
}.last() }.last()
val validMatrixState = loadedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid val validMatrixState = loadedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid
Truth.assertThat(validMatrixState?.callNotificationsEnabled).isFalse() assertThat(validMatrixState?.callNotificationsEnabled).isFalse()
loadedState.eventSink(NotificationSettingsEvents.SetCallNotificationsEnabled(true)) loadedState.eventSink(NotificationSettingsEvents.SetCallNotificationsEnabled(true))
val updatedState = consumeItemsUntilPredicate { val updatedState = consumeItemsUntilPredicate {
(it.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid)?.callNotificationsEnabled == true (it.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid)?.callNotificationsEnabled == true
}.last() }.last()
val updatedMatrixState = updatedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid val updatedMatrixState = updatedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid
Truth.assertThat(updatedMatrixState?.callNotificationsEnabled).isTrue() assertThat(updatedMatrixState?.callNotificationsEnabled).isTrue()
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
} }
} }
@ -176,14 +176,14 @@ class NotificationSettingsPresenterTests {
(it.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid)?.atRoomNotificationsEnabled == false (it.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid)?.atRoomNotificationsEnabled == false
}.last() }.last()
val validMatrixState = loadedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid val validMatrixState = loadedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid
Truth.assertThat(validMatrixState?.atRoomNotificationsEnabled).isFalse() assertThat(validMatrixState?.atRoomNotificationsEnabled).isFalse()
loadedState.eventSink(NotificationSettingsEvents.SetAtRoomNotificationsEnabled(true)) loadedState.eventSink(NotificationSettingsEvents.SetAtRoomNotificationsEnabled(true))
val updatedState = consumeItemsUntilPredicate { val updatedState = consumeItemsUntilPredicate {
(it.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid)?.atRoomNotificationsEnabled == true (it.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid)?.atRoomNotificationsEnabled == true
}.last() }.last()
val updatedMatrixState = updatedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid val updatedMatrixState = updatedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid
Truth.assertThat(updatedMatrixState?.atRoomNotificationsEnabled).isTrue() assertThat(updatedMatrixState?.atRoomNotificationsEnabled).isTrue()
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
} }
} }
@ -200,19 +200,19 @@ class NotificationSettingsPresenterTests {
(it.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid)?.atRoomNotificationsEnabled == false (it.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid)?.atRoomNotificationsEnabled == false
}.last() }.last()
val validMatrixState = loadedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid val validMatrixState = loadedState.matrixSettings as? NotificationSettingsState.MatrixSettings.Valid
Truth.assertThat(validMatrixState?.atRoomNotificationsEnabled).isFalse() assertThat(validMatrixState?.atRoomNotificationsEnabled).isFalse()
loadedState.eventSink(NotificationSettingsEvents.SetAtRoomNotificationsEnabled(true)) loadedState.eventSink(NotificationSettingsEvents.SetAtRoomNotificationsEnabled(true))
val errorState = consumeItemsUntilPredicate { val errorState = consumeItemsUntilPredicate {
it.changeNotificationSettingAction.isFailure() it.changeNotificationSettingAction.isFailure()
}.last() }.last()
Truth.assertThat(errorState.changeNotificationSettingAction.isFailure()).isTrue() assertThat(errorState.changeNotificationSettingAction.isFailure()).isTrue()
errorState.eventSink(NotificationSettingsEvents.ClearNotificationChangeError) errorState.eventSink(NotificationSettingsEvents.ClearNotificationChangeError)
val clearErrorState = consumeItemsUntilPredicate { val clearErrorState = consumeItemsUntilPredicate {
it.changeNotificationSettingAction.isUninitialized() it.changeNotificationSettingAction.isUninitialized()
}.last() }.last()
Truth.assertThat(clearErrorState.changeNotificationSettingAction.isUninitialized()).isTrue() assertThat(clearErrorState.changeNotificationSettingAction.isUninitialized()).isTrue()
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
} }
} }

View file

@ -19,7 +19,7 @@ package io.element.android.features.roomdetails.members
import app.cash.molecule.RecompositionMode import app.cash.molecule.RecompositionMode
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 import com.google.common.truth.Truth.assertThat
import io.element.android.features.roomdetails.impl.members.RoomMemberListDataSource import io.element.android.features.roomdetails.impl.members.RoomMemberListDataSource
import io.element.android.features.roomdetails.impl.members.RoomMemberListEvents import io.element.android.features.roomdetails.impl.members.RoomMemberListEvents
import io.element.android.features.roomdetails.impl.members.RoomMemberListPresenter import io.element.android.features.roomdetails.impl.members.RoomMemberListPresenter
@ -53,14 +53,14 @@ class RoomMemberListPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.roomMembers).isInstanceOf(Async.Loading::class.java) assertThat(initialState.roomMembers).isInstanceOf(Async.Loading::class.java)
Truth.assertThat(initialState.searchQuery).isEmpty() assertThat(initialState.searchQuery).isEmpty()
Truth.assertThat(initialState.searchResults).isInstanceOf(SearchBarResultState.NotSearching::class.java) assertThat(initialState.searchResults).isInstanceOf(SearchBarResultState.NotSearching::class.java)
Truth.assertThat(initialState.isSearchActive).isFalse() assertThat(initialState.isSearchActive).isFalse()
val loadedState = awaitItem() val loadedState = awaitItem()
Truth.assertThat(loadedState.roomMembers).isInstanceOf(Async.Success::class.java) assertThat(loadedState.roomMembers).isInstanceOf(Async.Success::class.java)
Truth.assertThat((loadedState.roomMembers as Async.Success).data.invited).isEqualTo(listOf(aVictor(), aWalter())) assertThat((loadedState.roomMembers as Async.Success).data.invited).isEqualTo(listOf(aVictor(), aWalter()))
Truth.assertThat((loadedState.roomMembers as Async.Success).data.joined).isNotEmpty() assertThat((loadedState.roomMembers as Async.Success).data.joined).isNotEmpty()
} }
} }
@ -74,7 +74,7 @@ class RoomMemberListPresenterTests {
val loadedState = awaitItem() val loadedState = awaitItem()
loadedState.eventSink(RoomMemberListEvents.OnSearchActiveChanged(true)) loadedState.eventSink(RoomMemberListEvents.OnSearchActiveChanged(true))
val searchActiveState = awaitItem() val searchActiveState = awaitItem()
Truth.assertThat(searchActiveState.isSearchActive).isTrue() assertThat(searchActiveState.isSearchActive).isTrue()
} }
} }
@ -90,9 +90,9 @@ class RoomMemberListPresenterTests {
val searchActiveState = awaitItem() val searchActiveState = awaitItem()
searchActiveState.eventSink(RoomMemberListEvents.UpdateSearchQuery("something")) searchActiveState.eventSink(RoomMemberListEvents.UpdateSearchQuery("something"))
val searchQueryUpdatedState = awaitItem() val searchQueryUpdatedState = awaitItem()
Truth.assertThat(searchQueryUpdatedState.searchQuery).isEqualTo("something") assertThat(searchQueryUpdatedState.searchQuery).isEqualTo("something")
val searchSearchResultDelivered = awaitItem() val searchSearchResultDelivered = awaitItem()
Truth.assertThat(searchSearchResultDelivered.searchResults).isInstanceOf(SearchBarResultState.NoResults::class.java) assertThat(searchSearchResultDelivered.searchResults).isInstanceOf(SearchBarResultState.NoResults::class.java)
} }
} }
@ -108,10 +108,10 @@ class RoomMemberListPresenterTests {
val searchActiveState = awaitItem() val searchActiveState = awaitItem()
searchActiveState.eventSink(RoomMemberListEvents.UpdateSearchQuery("Alice")) searchActiveState.eventSink(RoomMemberListEvents.UpdateSearchQuery("Alice"))
val searchQueryUpdatedState = awaitItem() val searchQueryUpdatedState = awaitItem()
Truth.assertThat(searchQueryUpdatedState.searchQuery).isEqualTo("Alice") assertThat(searchQueryUpdatedState.searchQuery).isEqualTo("Alice")
val searchSearchResultDelivered = awaitItem() val searchSearchResultDelivered = awaitItem()
Truth.assertThat(searchSearchResultDelivered.searchResults).isInstanceOf(SearchBarResultState.Results::class.java) assertThat(searchSearchResultDelivered.searchResults).isInstanceOf(SearchBarResultState.Results::class.java)
Truth.assertThat((searchSearchResultDelivered.searchResults as SearchBarResultState.Results).results.joined.first().displayName) assertThat((searchSearchResultDelivered.searchResults as SearchBarResultState.Results).results.joined.first().displayName)
.isEqualTo("Alice") .isEqualTo("Alice")
} }
} }
@ -128,7 +128,7 @@ class RoomMemberListPresenterTests {
}.test { }.test {
skipItems(1) skipItems(1)
val loadedState = awaitItem() val loadedState = awaitItem()
Truth.assertThat(loadedState.canInvite).isTrue() assertThat(loadedState.canInvite).isTrue()
} }
} }
@ -144,7 +144,7 @@ class RoomMemberListPresenterTests {
}.test { }.test {
skipItems(1) skipItems(1)
val loadedState = awaitItem() val loadedState = awaitItem()
Truth.assertThat(loadedState.canInvite).isFalse() assertThat(loadedState.canInvite).isFalse()
} }
} }
@ -160,7 +160,7 @@ class RoomMemberListPresenterTests {
}.test { }.test {
skipItems(1) skipItems(1)
val loadedState = awaitItem() val loadedState = awaitItem()
Truth.assertThat(loadedState.canInvite).isFalse() assertThat(loadedState.canInvite).isFalse()
} }
} }
} }

View file

@ -19,7 +19,7 @@ package io.element.android.features.roomdetails.members.details
import app.cash.molecule.RecompositionMode import app.cash.molecule.RecompositionMode
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 import com.google.common.truth.Truth.assertThat
import io.element.android.features.createroom.api.StartDMAction import io.element.android.features.createroom.api.StartDMAction
import io.element.android.features.createroom.test.FakeStartDMAction import io.element.android.features.createroom.test.FakeStartDMAction
import io.element.android.features.roomdetails.aMatrixRoom import io.element.android.features.roomdetails.aMatrixRoom
@ -65,14 +65,14 @@ class RoomMemberDetailsPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.userId).isEqualTo(roomMember.userId.value) assertThat(initialState.userId).isEqualTo(roomMember.userId.value)
Truth.assertThat(initialState.userName).isEqualTo(roomMember.displayName) assertThat(initialState.userName).isEqualTo(roomMember.displayName)
Truth.assertThat(initialState.avatarUrl).isEqualTo(roomMember.avatarUrl) assertThat(initialState.avatarUrl).isEqualTo(roomMember.avatarUrl)
Truth.assertThat(initialState.isBlocked).isEqualTo(Async.Success(roomMember.isIgnored)) assertThat(initialState.isBlocked).isEqualTo(Async.Success(roomMember.isIgnored))
skipItems(1) skipItems(1)
val loadedState = awaitItem() val loadedState = awaitItem()
Truth.assertThat(loadedState.userName).isEqualTo("A custom name") assertThat(loadedState.userName).isEqualTo("A custom name")
Truth.assertThat(loadedState.avatarUrl).isEqualTo("A custom avatar") assertThat(loadedState.avatarUrl).isEqualTo("A custom avatar")
} }
} }
@ -92,8 +92,8 @@ class RoomMemberDetailsPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.userName).isEqualTo(roomMember.displayName) assertThat(initialState.userName).isEqualTo(roomMember.displayName)
Truth.assertThat(initialState.avatarUrl).isEqualTo(roomMember.avatarUrl) assertThat(initialState.avatarUrl).isEqualTo(roomMember.avatarUrl)
ensureAllEventsConsumed() ensureAllEventsConsumed()
} }
@ -115,8 +115,8 @@ class RoomMemberDetailsPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.userName).isEqualTo(roomMember.displayName) assertThat(initialState.userName).isEqualTo(roomMember.displayName)
Truth.assertThat(initialState.avatarUrl).isEqualTo(roomMember.avatarUrl) assertThat(initialState.avatarUrl).isEqualTo(roomMember.avatarUrl)
ensureAllEventsConsumed() ensureAllEventsConsumed()
} }
@ -132,10 +132,10 @@ class RoomMemberDetailsPresenterTests {
initialState.eventSink(RoomMemberDetailsEvents.BlockUser(needsConfirmation = true)) initialState.eventSink(RoomMemberDetailsEvents.BlockUser(needsConfirmation = true))
val dialogState = awaitItem() val dialogState = awaitItem()
Truth.assertThat(dialogState.displayConfirmationDialog).isEqualTo(RoomMemberDetailsState.ConfirmationDialog.Block) assertThat(dialogState.displayConfirmationDialog).isEqualTo(RoomMemberDetailsState.ConfirmationDialog.Block)
dialogState.eventSink(RoomMemberDetailsEvents.ClearConfirmationDialog) dialogState.eventSink(RoomMemberDetailsEvents.ClearConfirmationDialog)
Truth.assertThat(awaitItem().displayConfirmationDialog).isNull() assertThat(awaitItem().displayConfirmationDialog).isNull()
ensureAllEventsConsumed() ensureAllEventsConsumed()
} }
@ -149,12 +149,12 @@ class RoomMemberDetailsPresenterTests {
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
initialState.eventSink(RoomMemberDetailsEvents.BlockUser(needsConfirmation = false)) initialState.eventSink(RoomMemberDetailsEvents.BlockUser(needsConfirmation = false))
Truth.assertThat(awaitItem().isBlocked.isLoading()).isTrue() assertThat(awaitItem().isBlocked.isLoading()).isTrue()
Truth.assertThat(awaitItem().isBlocked.dataOrNull()).isTrue() assertThat(awaitItem().isBlocked.dataOrNull()).isTrue()
initialState.eventSink(RoomMemberDetailsEvents.UnblockUser(needsConfirmation = false)) initialState.eventSink(RoomMemberDetailsEvents.UnblockUser(needsConfirmation = false))
Truth.assertThat(awaitItem().isBlocked.isLoading()).isTrue() assertThat(awaitItem().isBlocked.isLoading()).isTrue()
Truth.assertThat(awaitItem().isBlocked.dataOrNull()).isFalse() assertThat(awaitItem().isBlocked.dataOrNull()).isFalse()
} }
} }
@ -168,12 +168,12 @@ class RoomMemberDetailsPresenterTests {
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
initialState.eventSink(RoomMemberDetailsEvents.BlockUser(needsConfirmation = false)) initialState.eventSink(RoomMemberDetailsEvents.BlockUser(needsConfirmation = false))
Truth.assertThat(awaitItem().isBlocked.isLoading()).isTrue() assertThat(awaitItem().isBlocked.isLoading()).isTrue()
val errorState = awaitItem() val errorState = awaitItem()
Truth.assertThat(errorState.isBlocked.errorOrNull()).isEqualTo(A_THROWABLE) assertThat(errorState.isBlocked.errorOrNull()).isEqualTo(A_THROWABLE)
// Clear error // Clear error
initialState.eventSink(RoomMemberDetailsEvents.ClearBlockUserError) initialState.eventSink(RoomMemberDetailsEvents.ClearBlockUserError)
Truth.assertThat(awaitItem().isBlocked).isEqualTo(Async.Success(false)) assertThat(awaitItem().isBlocked).isEqualTo(Async.Success(false))
} }
} }
@ -187,10 +187,10 @@ class RoomMemberDetailsPresenterTests {
initialState.eventSink(RoomMemberDetailsEvents.UnblockUser(needsConfirmation = true)) initialState.eventSink(RoomMemberDetailsEvents.UnblockUser(needsConfirmation = true))
val dialogState = awaitItem() val dialogState = awaitItem()
Truth.assertThat(dialogState.displayConfirmationDialog).isEqualTo(RoomMemberDetailsState.ConfirmationDialog.Unblock) assertThat(dialogState.displayConfirmationDialog).isEqualTo(RoomMemberDetailsState.ConfirmationDialog.Unblock)
dialogState.eventSink(RoomMemberDetailsEvents.ClearConfirmationDialog) dialogState.eventSink(RoomMemberDetailsEvents.ClearConfirmationDialog)
Truth.assertThat(awaitItem().displayConfirmationDialog).isNull() assertThat(awaitItem().displayConfirmationDialog).isNull()
ensureAllEventsConsumed() ensureAllEventsConsumed()
} }
@ -204,28 +204,28 @@ class RoomMemberDetailsPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.startDmActionState).isInstanceOf(Async.Uninitialized::class.java) 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>(A_THROWABLE) val startDMFailureResult = Async.Failure<RoomId>(A_THROWABLE)
// Failure // Failure
startDMAction.givenExecuteResult(startDMFailureResult) startDMAction.givenExecuteResult(startDMFailureResult)
initialState.eventSink(RoomMemberDetailsEvents.StartDM) initialState.eventSink(RoomMemberDetailsEvents.StartDM)
Truth.assertThat(awaitItem().startDmActionState).isInstanceOf(Async.Loading::class.java) assertThat(awaitItem().startDmActionState).isInstanceOf(Async.Loading::class.java)
awaitItem().also { state -> awaitItem().also { state ->
Truth.assertThat(state.startDmActionState).isEqualTo(startDMFailureResult) assertThat(state.startDmActionState).isEqualTo(startDMFailureResult)
state.eventSink(RoomMemberDetailsEvents.ClearStartDMState) state.eventSink(RoomMemberDetailsEvents.ClearStartDMState)
} }
// Success // Success
startDMAction.givenExecuteResult(startDMSuccessResult) startDMAction.givenExecuteResult(startDMSuccessResult)
awaitItem().also { state -> awaitItem().also { state ->
Truth.assertThat(state.startDmActionState).isEqualTo(Async.Uninitialized) assertThat(state.startDmActionState).isEqualTo(Async.Uninitialized)
state.eventSink(RoomMemberDetailsEvents.StartDM) state.eventSink(RoomMemberDetailsEvents.StartDM)
} }
Truth.assertThat(awaitItem().startDmActionState).isInstanceOf(Async.Loading::class.java) assertThat(awaitItem().startDmActionState).isInstanceOf(Async.Loading::class.java)
awaitItem().also { state -> awaitItem().also { state ->
Truth.assertThat(state.startDmActionState).isEqualTo(startDMSuccessResult) assertThat(state.startDmActionState).isEqualTo(startDMSuccessResult)
} }
} }
} }

View file

@ -19,7 +19,7 @@ package io.element.android.features.roomdetails.notificationsettings
import app.cash.molecule.RecompositionMode import app.cash.molecule.RecompositionMode
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 import com.google.common.truth.Truth.assertThat
import io.element.android.features.roomdetails.aMatrixRoom import io.element.android.features.roomdetails.aMatrixRoom
import io.element.android.features.roomdetails.impl.notificationsettings.RoomNotificationSettingsEvents import io.element.android.features.roomdetails.impl.notificationsettings.RoomNotificationSettingsEvents
import io.element.android.features.roomdetails.impl.notificationsettings.RoomNotificationSettingsPresenter import io.element.android.features.roomdetails.impl.notificationsettings.RoomNotificationSettingsPresenter
@ -39,8 +39,8 @@ class RoomNotificationSettingsPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.roomNotificationSettings.dataOrNull()).isNull() assertThat(initialState.roomNotificationSettings.dataOrNull()).isNull()
Truth.assertThat(initialState.defaultRoomNotificationMode).isNull() assertThat(initialState.defaultRoomNotificationMode).isNull()
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
} }
} }
@ -55,7 +55,7 @@ class RoomNotificationSettingsPresenterTests {
val updatedState = consumeItemsUntilPredicate { val updatedState = consumeItemsUntilPredicate {
it.roomNotificationSettings.dataOrNull()?.mode == RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY it.roomNotificationSettings.dataOrNull()?.mode == RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY
}.last() }.last()
Truth.assertThat(updatedState.roomNotificationSettings.dataOrNull()?.mode).isEqualTo(RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY) assertThat(updatedState.roomNotificationSettings.dataOrNull()?.mode).isEqualTo(RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY)
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
} }
} }
@ -71,7 +71,7 @@ class RoomNotificationSettingsPresenterTests {
val updatedState = consumeItemsUntilPredicate { val updatedState = consumeItemsUntilPredicate {
it.roomNotificationSettings.dataOrNull()?.mode == RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY it.roomNotificationSettings.dataOrNull()?.mode == RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY
}.last() }.last()
Truth.assertThat(updatedState.roomNotificationSettings.dataOrNull()?.mode).isEqualTo(RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY) assertThat(updatedState.roomNotificationSettings.dataOrNull()?.mode).isEqualTo(RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY)
} }
} }
@ -89,16 +89,16 @@ class RoomNotificationSettingsPresenterTests {
it.setNotificationSettingAction.isFailure() it.setNotificationSettingAction.isFailure()
}.last() }.last()
Truth.assertThat(failedState.roomNotificationSettings.dataOrNull()?.isDefault).isTrue() assertThat(failedState.roomNotificationSettings.dataOrNull()?.isDefault).isTrue()
Truth.assertThat(failedState.pendingSetDefault).isNull() assertThat(failedState.pendingSetDefault).isNull()
Truth.assertThat(failedState.setNotificationSettingAction.isFailure()).isTrue() assertThat(failedState.setNotificationSettingAction.isFailure()).isTrue()
failedState.eventSink(RoomNotificationSettingsEvents.ClearSetNotificationError) failedState.eventSink(RoomNotificationSettingsEvents.ClearSetNotificationError)
val errorClearedState = consumeItemsUntilPredicate { val errorClearedState = consumeItemsUntilPredicate {
it.setNotificationSettingAction.isUninitialized() it.setNotificationSettingAction.isUninitialized()
}.last() }.last()
Truth.assertThat(errorClearedState.setNotificationSettingAction.isUninitialized()).isTrue() assertThat(errorClearedState.setNotificationSettingAction.isUninitialized()).isTrue()
} }
} }
@ -114,7 +114,7 @@ class RoomNotificationSettingsPresenterTests {
val defaultState = consumeItemsUntilPredicate { val defaultState = consumeItemsUntilPredicate {
it.roomNotificationSettings.dataOrNull()?.isDefault == false it.roomNotificationSettings.dataOrNull()?.isDefault == false
}.last() }.last()
Truth.assertThat(defaultState.roomNotificationSettings.dataOrNull()?.isDefault).isFalse() assertThat(defaultState.roomNotificationSettings.dataOrNull()?.isDefault).isFalse()
} }
} }
@ -130,7 +130,7 @@ class RoomNotificationSettingsPresenterTests {
val defaultState = consumeItemsUntilPredicate { val defaultState = consumeItemsUntilPredicate {
it.roomNotificationSettings.dataOrNull()?.mode == RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY it.roomNotificationSettings.dataOrNull()?.mode == RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY
}.last() }.last()
Truth.assertThat(defaultState.roomNotificationSettings.dataOrNull()?.mode).isEqualTo(RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY) assertThat(defaultState.roomNotificationSettings.dataOrNull()?.mode).isEqualTo(RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY)
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
} }
} }
@ -149,13 +149,13 @@ class RoomNotificationSettingsPresenterTests {
val failedState = consumeItemsUntilPredicate { val failedState = consumeItemsUntilPredicate {
it.restoreDefaultAction.isFailure() it.restoreDefaultAction.isFailure()
}.last() }.last()
Truth.assertThat(failedState.restoreDefaultAction.isFailure()).isTrue() assertThat(failedState.restoreDefaultAction.isFailure()).isTrue()
failedState.eventSink(RoomNotificationSettingsEvents.ClearRestoreDefaultError) failedState.eventSink(RoomNotificationSettingsEvents.ClearRestoreDefaultError)
val errorClearedState = consumeItemsUntilPredicate { val errorClearedState = consumeItemsUntilPredicate {
it.restoreDefaultAction.isUninitialized() it.restoreDefaultAction.isUninitialized()
}.last() }.last()
Truth.assertThat(errorClearedState.restoreDefaultAction.isUninitialized()).isTrue() assertThat(errorClearedState.restoreDefaultAction.isUninitialized()).isTrue()
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
} }
} }

View file

@ -19,7 +19,7 @@ package io.element.android.features.roomlist.impl
import app.cash.molecule.RecompositionMode import app.cash.molecule.RecompositionMode
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 import com.google.common.truth.Truth.assertThat
import io.element.android.features.leaveroom.api.LeaveRoomEvent import io.element.android.features.leaveroom.api.LeaveRoomEvent
import io.element.android.features.leaveroom.api.LeaveRoomPresenter import io.element.android.features.leaveroom.api.LeaveRoomPresenter
import io.element.android.features.leaveroom.fake.FakeLeaveRoomPresenter import io.element.android.features.leaveroom.fake.FakeLeaveRoomPresenter
@ -83,13 +83,13 @@ class RoomListPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.matrixUser).isNull() assertThat(initialState.matrixUser).isNull()
val withUserState = awaitItem() val withUserState = awaitItem()
Truth.assertThat(withUserState.matrixUser).isNotNull() assertThat(withUserState.matrixUser).isNotNull()
Truth.assertThat(withUserState.matrixUser!!.userId).isEqualTo(A_USER_ID) assertThat(withUserState.matrixUser!!.userId).isEqualTo(A_USER_ID)
Truth.assertThat(withUserState.matrixUser!!.displayName).isEqualTo(A_USER_NAME) assertThat(withUserState.matrixUser!!.displayName).isEqualTo(A_USER_NAME)
Truth.assertThat(withUserState.matrixUser!!.avatarUrl).isEqualTo(AN_AVATAR_URL) assertThat(withUserState.matrixUser!!.avatarUrl).isEqualTo(AN_AVATAR_URL)
Truth.assertThat(withUserState.showAvatarIndicator).isFalse() assertThat(withUserState.showAvatarIndicator).isFalse()
scope.cancel() scope.cancel()
} }
} }
@ -109,12 +109,12 @@ class RoomListPresenterTests {
}.test { }.test {
skipItems(1) skipItems(1)
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.showAvatarIndicator).isFalse() assertThat(initialState.showAvatarIndicator).isFalse()
sessionVerificationService.givenCanVerifySession(false) sessionVerificationService.givenCanVerifySession(false)
Truth.assertThat(awaitItem().showAvatarIndicator).isFalse() assertThat(awaitItem().showAvatarIndicator).isFalse()
encryptionService.emitBackupState(BackupState.UNKNOWN) encryptionService.emitBackupState(BackupState.UNKNOWN)
val finalState = awaitItem() val finalState = awaitItem()
Truth.assertThat(finalState.showAvatarIndicator).isTrue() assertThat(finalState.showAvatarIndicator).isTrue()
scope.cancel() scope.cancel()
} }
} }
@ -131,9 +131,9 @@ class RoomListPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
Truth.assertThat(initialState.matrixUser).isNull() assertThat(initialState.matrixUser).isNull()
val withUserState = awaitItem() val withUserState = awaitItem()
Truth.assertThat(withUserState.matrixUser).isNotNull() assertThat(withUserState.matrixUser).isNotNull()
scope.cancel() scope.cancel()
} }
} }
@ -147,10 +147,10 @@ class RoomListPresenterTests {
}.test { }.test {
skipItems(1) skipItems(1)
val withUserState = awaitItem() val withUserState = awaitItem()
Truth.assertThat(withUserState.filter).isEqualTo("") assertThat(withUserState.filter).isEqualTo("")
withUserState.eventSink.invoke(RoomListEvents.UpdateFilter("t")) withUserState.eventSink.invoke(RoomListEvents.UpdateFilter("t"))
val withFilterState = awaitItem() val withFilterState = awaitItem()
Truth.assertThat(withFilterState.filter).isEqualTo("t") assertThat(withFilterState.filter).isEqualTo("t")
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
scope.cancel() scope.cancel()
} }
@ -169,12 +169,12 @@ class RoomListPresenterTests {
}.test { }.test {
val initialState = consumeItemsUntilPredicate { state -> state.roomList.size == 16 }.last() val initialState = consumeItemsUntilPredicate { state -> state.roomList.size == 16 }.last()
// Room list is loaded with 16 placeholders // Room list is loaded with 16 placeholders
Truth.assertThat(initialState.roomList.size).isEqualTo(16) assertThat(initialState.roomList.size).isEqualTo(16)
Truth.assertThat(initialState.roomList.all { it.isPlaceholder }).isTrue() assertThat(initialState.roomList.all { it.isPlaceholder }).isTrue()
roomListService.postAllRooms(listOf(aRoomSummaryFilled())) roomListService.postAllRooms(listOf(aRoomSummaryFilled()))
val withRoomState = consumeItemsUntilPredicate { state -> state.roomList.size == 1 }.last() val withRoomState = consumeItemsUntilPredicate { state -> state.roomList.size == 1 }.last()
Truth.assertThat(withRoomState.roomList.size).isEqualTo(1) assertThat(withRoomState.roomList.size).isEqualTo(1)
Truth.assertThat(withRoomState.roomList.first()) assertThat(withRoomState.roomList.first())
.isEqualTo(aRoomListRoomSummary) .isEqualTo(aRoomListRoomSummary)
scope.cancel() scope.cancel()
} }
@ -196,15 +196,15 @@ class RoomListPresenterTests {
// Test filtering with result // Test filtering with result
loadedState.eventSink.invoke(RoomListEvents.UpdateFilter(A_ROOM_NAME.substring(0, 3))) loadedState.eventSink.invoke(RoomListEvents.UpdateFilter(A_ROOM_NAME.substring(0, 3)))
val withFilteredRoomState = consumeItemsUntilPredicate { state -> state.filteredRoomList.size == 1 }.last() val withFilteredRoomState = consumeItemsUntilPredicate { state -> state.filteredRoomList.size == 1 }.last()
Truth.assertThat(withFilteredRoomState.filter).isEqualTo(A_ROOM_NAME.substring(0, 3)) assertThat(withFilteredRoomState.filter).isEqualTo(A_ROOM_NAME.substring(0, 3))
Truth.assertThat(withFilteredRoomState.filteredRoomList.size).isEqualTo(1) assertThat(withFilteredRoomState.filteredRoomList.size).isEqualTo(1)
Truth.assertThat(withFilteredRoomState.filteredRoomList.first()) assertThat(withFilteredRoomState.filteredRoomList.first())
.isEqualTo(aRoomListRoomSummary) .isEqualTo(aRoomListRoomSummary)
// Test filtering without result // Test filtering without result
withFilteredRoomState.eventSink.invoke(RoomListEvents.UpdateFilter("tada")) withFilteredRoomState.eventSink.invoke(RoomListEvents.UpdateFilter("tada"))
val withNotFilteredRoomState = consumeItemsUntilPredicate { state -> state.filteredRoomList.size == 0 }.last() val withNotFilteredRoomState = consumeItemsUntilPredicate { state -> state.filteredRoomList.size == 0 }.last()
Truth.assertThat(withNotFilteredRoomState.filter).isEqualTo("tada") assertThat(withNotFilteredRoomState.filter).isEqualTo("tada")
Truth.assertThat(withNotFilteredRoomState.filteredRoomList).isEmpty() assertThat(withNotFilteredRoomState.filteredRoomList).isEmpty()
scope.cancel() scope.cancel()
} }
} }
@ -223,28 +223,28 @@ class RoomListPresenterTests {
roomListService.postAllRooms(listOf(aRoomSummaryFilled())) roomListService.postAllRooms(listOf(aRoomSummaryFilled()))
val loadedState = awaitItem() val loadedState = awaitItem()
// check initial value // check initial value
Truth.assertThat(roomListService.latestSlidingSyncRange).isNull() assertThat(roomListService.latestSlidingSyncRange).isNull()
// Test empty range // Test empty range
loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(1, 0))) loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(1, 0)))
Truth.assertThat(roomListService.latestSlidingSyncRange).isNull() assertThat(roomListService.latestSlidingSyncRange).isNull()
// Update visible range and check that range is transmitted to the SDK after computation // Update visible range and check that range is transmitted to the SDK after computation
loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(0, 0))) loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(0, 0)))
Truth.assertThat(roomListService.latestSlidingSyncRange) assertThat(roomListService.latestSlidingSyncRange)
.isEqualTo(IntRange(0, 20)) .isEqualTo(IntRange(0, 20))
loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(0, 1))) loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(0, 1)))
Truth.assertThat(roomListService.latestSlidingSyncRange) assertThat(roomListService.latestSlidingSyncRange)
.isEqualTo(IntRange(0, 21)) .isEqualTo(IntRange(0, 21))
loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(19, 29))) loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(19, 29)))
Truth.assertThat(roomListService.latestSlidingSyncRange) assertThat(roomListService.latestSlidingSyncRange)
.isEqualTo(IntRange(0, 49)) .isEqualTo(IntRange(0, 49))
loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(49, 59))) loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(49, 59)))
Truth.assertThat(roomListService.latestSlidingSyncRange) assertThat(roomListService.latestSlidingSyncRange)
.isEqualTo(IntRange(29, 79)) .isEqualTo(IntRange(29, 79))
loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(149, 159))) loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(149, 159)))
Truth.assertThat(roomListService.latestSlidingSyncRange) assertThat(roomListService.latestSlidingSyncRange)
.isEqualTo(IntRange(129, 179)) .isEqualTo(IntRange(129, 179))
loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(149, 259))) loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(149, 259)))
Truth.assertThat(roomListService.latestSlidingSyncRange) assertThat(roomListService.latestSlidingSyncRange)
.isEqualTo(IntRange(129, 279)) .isEqualTo(IntRange(129, 279))
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
scope.cancel() scope.cancel()
@ -270,10 +270,10 @@ class RoomListPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
val eventSink = awaitItem().eventSink val eventSink = awaitItem().eventSink
Truth.assertThat(awaitItem().displayVerificationPrompt).isTrue() assertThat(awaitItem().displayVerificationPrompt).isTrue()
eventSink(RoomListEvents.DismissRequestVerificationPrompt) eventSink(RoomListEvents.DismissRequestVerificationPrompt)
Truth.assertThat(awaitItem().displayVerificationPrompt).isFalse() assertThat(awaitItem().displayVerificationPrompt).isFalse()
scope.cancel() scope.cancel()
} }
} }
@ -288,16 +288,16 @@ class RoomListPresenterTests {
presenter.present() presenter.present()
}.test { }.test {
skipItems(1) skipItems(1)
Truth.assertThat(awaitItem().invitesState).isEqualTo(InvitesState.NoInvites) assertThat(awaitItem().invitesState).isEqualTo(InvitesState.NoInvites)
inviteStateFlow.value = InvitesState.SeenInvites inviteStateFlow.value = InvitesState.SeenInvites
Truth.assertThat(awaitItem().invitesState).isEqualTo(InvitesState.SeenInvites) assertThat(awaitItem().invitesState).isEqualTo(InvitesState.SeenInvites)
inviteStateFlow.value = InvitesState.NewInvites inviteStateFlow.value = InvitesState.NewInvites
Truth.assertThat(awaitItem().invitesState).isEqualTo(InvitesState.NewInvites) assertThat(awaitItem().invitesState).isEqualTo(InvitesState.NewInvites)
inviteStateFlow.value = InvitesState.NoInvites inviteStateFlow.value = InvitesState.NoInvites
Truth.assertThat(awaitItem().invitesState).isEqualTo(InvitesState.NoInvites) assertThat(awaitItem().invitesState).isEqualTo(InvitesState.NoInvites)
scope.cancel() scope.cancel()
} }
} }
@ -316,7 +316,7 @@ class RoomListPresenterTests {
initialState.eventSink(RoomListEvents.ShowContextMenu(summary)) initialState.eventSink(RoomListEvents.ShowContextMenu(summary))
val shownState = awaitItem() val shownState = awaitItem()
Truth.assertThat(shownState.contextMenu) assertThat(shownState.contextMenu)
.isEqualTo(RoomListState.ContextMenu.Shown(summary.roomId, summary.name)) .isEqualTo(RoomListState.ContextMenu.Shown(summary.roomId, summary.name))
scope.cancel() scope.cancel()
} }
@ -336,12 +336,12 @@ class RoomListPresenterTests {
initialState.eventSink(RoomListEvents.ShowContextMenu(summary)) initialState.eventSink(RoomListEvents.ShowContextMenu(summary))
val shownState = awaitItem() val shownState = awaitItem()
Truth.assertThat(shownState.contextMenu) assertThat(shownState.contextMenu)
.isEqualTo(RoomListState.ContextMenu.Shown(summary.roomId, summary.name)) .isEqualTo(RoomListState.ContextMenu.Shown(summary.roomId, summary.name))
shownState.eventSink(RoomListEvents.HideContextMenu) shownState.eventSink(RoomListEvents.HideContextMenu)
val hiddenState = awaitItem() val hiddenState = awaitItem()
Truth.assertThat(hiddenState.contextMenu).isEqualTo(RoomListState.ContextMenu.Hidden) assertThat(hiddenState.contextMenu).isEqualTo(RoomListState.ContextMenu.Hidden)
scope.cancel() scope.cancel()
} }
} }
@ -356,7 +356,7 @@ class RoomListPresenterTests {
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
initialState.eventSink(RoomListEvents.LeaveRoom(A_ROOM_ID)) initialState.eventSink(RoomListEvents.LeaveRoom(A_ROOM_ID))
Truth.assertThat(leaveRoomPresenter.events).containsExactly(LeaveRoomEvent.ShowConfirmation(A_ROOM_ID)) assertThat(leaveRoomPresenter.events).containsExactly(LeaveRoomEvent.ShowConfirmation(A_ROOM_ID))
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
scope.cancel() scope.cancel()
} }
@ -384,7 +384,7 @@ class RoomListPresenterTests {
}.last() }.last()
val room = updatedState.roomList.find { it.id == A_ROOM_ID.value } val room = updatedState.roomList.find { it.id == A_ROOM_ID.value }
Truth.assertThat(room?.notificationMode).isEqualTo(userDefinedMode) assertThat(room?.notificationMode).isEqualTo(userDefinedMode)
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
scope.cancel() scope.cancel()
} }

View file

@ -19,7 +19,7 @@ package io.element.android.features.roomlist.impl.datasource
import app.cash.molecule.RecompositionMode import app.cash.molecule.RecompositionMode
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 import com.google.common.truth.Truth.assertThat
import io.element.android.features.invitelist.test.FakeSeenInvitesStore import io.element.android.features.invitelist.test.FakeSeenInvitesStore
import io.element.android.features.roomlist.impl.InvitesState import io.element.android.features.roomlist.impl.InvitesState
import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_ID
@ -43,7 +43,7 @@ internal class DefaultInviteStateDataSourceTest {
moleculeFlow(RecompositionMode.Immediate) { moleculeFlow(RecompositionMode.Immediate) {
dataSource.inviteState() dataSource.inviteState()
}.test { }.test {
Truth.assertThat(awaitItem()).isEqualTo(InvitesState.NoInvites) assertThat(awaitItem()).isEqualTo(InvitesState.NoInvites)
} }
} }
@ -59,7 +59,7 @@ internal class DefaultInviteStateDataSourceTest {
dataSource.inviteState() dataSource.inviteState()
}.test { }.test {
skipItems(1) skipItems(1)
Truth.assertThat(awaitItem()).isEqualTo(InvitesState.NewInvites) assertThat(awaitItem()).isEqualTo(InvitesState.NewInvites)
} }
} }
@ -76,7 +76,7 @@ internal class DefaultInviteStateDataSourceTest {
dataSource.inviteState() dataSource.inviteState()
}.test { }.test {
skipItems(1) skipItems(1)
Truth.assertThat(awaitItem()).isEqualTo(InvitesState.NewInvites) assertThat(awaitItem()).isEqualTo(InvitesState.NewInvites)
} }
} }
@ -94,7 +94,7 @@ internal class DefaultInviteStateDataSourceTest {
}.test { }.test {
skipItems(1) skipItems(1)
Truth.assertThat(awaitItem()).isEqualTo(InvitesState.SeenInvites) assertThat(awaitItem()).isEqualTo(InvitesState.SeenInvites)
} }
} }
@ -109,27 +109,27 @@ internal class DefaultInviteStateDataSourceTest {
dataSource.inviteState() dataSource.inviteState()
}.test { }.test {
// Initially there are no invites // Initially there are no invites
Truth.assertThat(awaitItem()).isEqualTo(InvitesState.NoInvites) assertThat(awaitItem()).isEqualTo(InvitesState.NoInvites)
// When a single invite is received, state should be NewInvites // When a single invite is received, state should be NewInvites
roomListService.postInviteRooms(listOf(aRoomSummaryFilled(roomId = A_ROOM_ID))) roomListService.postInviteRooms(listOf(aRoomSummaryFilled(roomId = A_ROOM_ID)))
skipItems(1) skipItems(1)
Truth.assertThat(awaitItem()).isEqualTo(InvitesState.NewInvites) assertThat(awaitItem()).isEqualTo(InvitesState.NewInvites)
// If that invite is marked as seen, then the state becomes SeenInvites // If that invite is marked as seen, then the state becomes SeenInvites
seenStore.publishRoomIds(setOf(A_ROOM_ID)) seenStore.publishRoomIds(setOf(A_ROOM_ID))
skipItems(1) skipItems(1)
Truth.assertThat(awaitItem()).isEqualTo(InvitesState.SeenInvites) assertThat(awaitItem()).isEqualTo(InvitesState.SeenInvites)
// Another new invite resets it to NewInvites // Another new invite resets it to NewInvites
roomListService.postInviteRooms(listOf(aRoomSummaryFilled(roomId = A_ROOM_ID), aRoomSummaryFilled(roomId = A_ROOM_ID_2))) roomListService.postInviteRooms(listOf(aRoomSummaryFilled(roomId = A_ROOM_ID), aRoomSummaryFilled(roomId = A_ROOM_ID_2)))
skipItems(1) skipItems(1)
Truth.assertThat(awaitItem()).isEqualTo(InvitesState.NewInvites) assertThat(awaitItem()).isEqualTo(InvitesState.NewInvites)
// All of the invites going away reverts to NoInvites // All of the invites going away reverts to NoInvites
roomListService.postInviteRooms(emptyList()) roomListService.postInviteRooms(emptyList())
skipItems(1) skipItems(1)
Truth.assertThat(awaitItem()).isEqualTo(InvitesState.NoInvites) assertThat(awaitItem()).isEqualTo(InvitesState.NoInvites)
} }
} }
} }

View file

@ -18,7 +18,8 @@ package io.element.android.libraries.eventformatter.impl
import android.content.Context import android.content.Context
import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString
import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
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.media.ImageInfo import io.element.android.libraries.matrix.api.media.ImageInfo
import io.element.android.libraries.matrix.api.media.MediaSource import io.element.android.libraries.matrix.api.media.MediaSource
@ -90,10 +91,10 @@ class DefaultRoomLastMessageFormatterTest {
val message = createRoomEvent(false, senderName, RedactedContent) val message = createRoomEvent(false, senderName, RedactedContent)
val result = formatter.format(message, isDm) val result = formatter.format(message, isDm)
if (isDm) { if (isDm) {
Truth.assertThat(result).isEqualTo(expected) assertThat(result).isEqualTo(expected)
} else { } else {
Truth.assertThat(result).isInstanceOf(AnnotatedString::class.java) assertThat(result).isInstanceOf(AnnotatedString::class.java)
Truth.assertThat(result.toString()).isEqualTo("$senderName: $expected") assertThat(result.toString()).isEqualTo("$senderName: $expected")
} }
} }
} }
@ -105,7 +106,7 @@ class DefaultRoomLastMessageFormatterTest {
val info = ImageInfo(null, null, null, null, null, null, null) val info = ImageInfo(null, null, null, null, null, null, null)
val message = createRoomEvent(false, null, StickerContent(body, info, "url")) val message = createRoomEvent(false, null, StickerContent(body, info, "url"))
val result = formatter.format(message, false) val result = formatter.format(message, false)
Truth.assertThat(result).isEqualTo(body) assertThat(result).isEqualTo(body)
} }
@Test @Test
@ -117,10 +118,10 @@ class DefaultRoomLastMessageFormatterTest {
val message = createRoomEvent(false, senderName, UnableToDecryptContent(UnableToDecryptContent.Data.Unknown)) val message = createRoomEvent(false, senderName, UnableToDecryptContent(UnableToDecryptContent.Data.Unknown))
val result = formatter.format(message, isDm) val result = formatter.format(message, isDm)
if (isDm) { if (isDm) {
Truth.assertThat(result).isEqualTo(expected) assertThat(result).isEqualTo(expected)
} else { } else {
Truth.assertThat(result).isInstanceOf(AnnotatedString::class.java) assertThat(result).isInstanceOf(AnnotatedString::class.java)
Truth.assertThat(result.toString()).isEqualTo("$senderName: $expected") assertThat(result.toString()).isEqualTo("$senderName: $expected")
} }
} }
} }
@ -139,10 +140,10 @@ class DefaultRoomLastMessageFormatterTest {
val message = createRoomEvent(false, senderName, type) val message = createRoomEvent(false, senderName, type)
val result = formatter.format(message, isDm) val result = formatter.format(message, isDm)
if (isDm) { if (isDm) {
Truth.assertWithMessage("$type was not properly handled").that(result).isEqualTo(expected) assertWithMessage("$type was not properly handled").that(result).isEqualTo(expected)
} else { } else {
Truth.assertWithMessage("$type does not create an AnnotatedString").that(result).isInstanceOf(AnnotatedString::class.java) assertWithMessage("$type does not create an AnnotatedString").that(result).isInstanceOf(AnnotatedString::class.java)
Truth.assertWithMessage("$type was not properly handled").that(result.toString()).isEqualTo("$senderName: $expected") assertWithMessage("$type was not properly handled").that(result.toString()).isEqualTo("$senderName: $expected")
} }
} }
} }
@ -202,7 +203,7 @@ class DefaultRoomLastMessageFormatterTest {
is NoticeMessageType, is NoticeMessageType,
is OtherMessageType -> body is OtherMessageType -> body
} }
Truth.assertWithMessage("$type was not properly handled for DM").that(result).isEqualTo(expectedResult) assertWithMessage("$type was not properly handled for DM").that(result).isEqualTo(expectedResult)
} }
// Verify results of Room mode // Verify results of Room mode
@ -232,11 +233,11 @@ class DefaultRoomLastMessageFormatterTest {
is OtherMessageType -> true is OtherMessageType -> true
} }
if (shouldCreateAnnotatedString) { if (shouldCreateAnnotatedString) {
Truth.assertWithMessage("$type doesn't produce an AnnotatedString") assertWithMessage("$type doesn't produce an AnnotatedString")
.that(result) .that(result)
.isInstanceOf(AnnotatedString::class.java) .isInstanceOf(AnnotatedString::class.java)
} }
Truth.assertWithMessage("$type was not properly handled for room").that(string).isEqualTo(expectedResult) assertWithMessage("$type was not properly handled for room").that(string).isEqualTo(expectedResult)
} }
} }
@ -253,11 +254,11 @@ class DefaultRoomLastMessageFormatterTest {
val youJoinedRoomEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent) val youJoinedRoomEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent)
val youJoinedRoom = formatter.format(youJoinedRoomEvent, false) val youJoinedRoom = formatter.format(youJoinedRoomEvent, false)
Truth.assertThat(youJoinedRoom).isEqualTo("You joined the room") assertThat(youJoinedRoom).isEqualTo("You joined the room")
val someoneJoinedRoomEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent) val someoneJoinedRoomEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent)
val someoneJoinedRoom = formatter.format(someoneJoinedRoomEvent, false) val someoneJoinedRoom = formatter.format(someoneJoinedRoomEvent, false)
Truth.assertThat(someoneJoinedRoom).isEqualTo("${someoneContent.userId} joined the room") assertThat(someoneJoinedRoom).isEqualTo("${someoneContent.userId} joined the room")
} }
@Test @Test
@ -269,11 +270,11 @@ class DefaultRoomLastMessageFormatterTest {
val youLeftRoomEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent) val youLeftRoomEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent)
val youLeftRoom = formatter.format(youLeftRoomEvent, false) val youLeftRoom = formatter.format(youLeftRoomEvent, false)
Truth.assertThat(youLeftRoom).isEqualTo("You left the room") assertThat(youLeftRoom).isEqualTo("You left the room")
val someoneLeftRoomEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent) val someoneLeftRoomEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent)
val someoneLeftRoom = formatter.format(someoneLeftRoomEvent, false) val someoneLeftRoom = formatter.format(someoneLeftRoomEvent, false)
Truth.assertThat(someoneLeftRoom).isEqualTo("${someoneContent.userId} left the room") assertThat(someoneLeftRoom).isEqualTo("${someoneContent.userId} left the room")
} }
@Test @Test
@ -287,19 +288,19 @@ class DefaultRoomLastMessageFormatterTest {
val youBannedEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent) val youBannedEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent)
val youBanned = formatter.format(youBannedEvent, false) val youBanned = formatter.format(youBannedEvent, false)
Truth.assertThat(youBanned).isEqualTo("You banned ${youContent.userId}") assertThat(youBanned).isEqualTo("You banned ${youContent.userId}")
val youKickBannedEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youKickedContent) val youKickBannedEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youKickedContent)
val youKickedBanned = formatter.format(youKickBannedEvent, false) val youKickedBanned = formatter.format(youKickBannedEvent, false)
Truth.assertThat(youKickedBanned).isEqualTo("You banned ${youContent.userId}") assertThat(youKickedBanned).isEqualTo("You banned ${youContent.userId}")
val someoneBannedEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent) val someoneBannedEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent)
val someoneBanned = formatter.format(someoneBannedEvent, false) val someoneBanned = formatter.format(someoneBannedEvent, false)
Truth.assertThat(someoneBanned).isEqualTo("$otherName banned ${someoneContent.userId}") assertThat(someoneBanned).isEqualTo("$otherName banned ${someoneContent.userId}")
val someoneKickBannedEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneKickedContent) val someoneKickBannedEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneKickedContent)
val someoneKickBanned = formatter.format(someoneKickBannedEvent, false) val someoneKickBanned = formatter.format(someoneKickBannedEvent, false)
Truth.assertThat(someoneKickBanned).isEqualTo("$otherName banned ${someoneContent.userId}") assertThat(someoneKickBanned).isEqualTo("$otherName banned ${someoneContent.userId}")
} }
@Test @Test
@ -311,11 +312,11 @@ class DefaultRoomLastMessageFormatterTest {
val youUnbannedEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent) val youUnbannedEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent)
val youUnbanned = formatter.format(youUnbannedEvent, false) val youUnbanned = formatter.format(youUnbannedEvent, false)
Truth.assertThat(youUnbanned).isEqualTo("You unbanned ${youContent.userId}") assertThat(youUnbanned).isEqualTo("You unbanned ${youContent.userId}")
val someoneUnbannedEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent) val someoneUnbannedEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent)
val someoneUnbanned = formatter.format(someoneUnbannedEvent, false) val someoneUnbanned = formatter.format(someoneUnbannedEvent, false)
Truth.assertThat(someoneUnbanned).isEqualTo("$otherName unbanned ${someoneContent.userId}") assertThat(someoneUnbanned).isEqualTo("$otherName unbanned ${someoneContent.userId}")
} }
@Test @Test
@ -327,11 +328,11 @@ class DefaultRoomLastMessageFormatterTest {
val youKickedEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent) val youKickedEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent)
val youKicked = formatter.format(youKickedEvent, false) val youKicked = formatter.format(youKickedEvent, false)
Truth.assertThat(youKicked).isEqualTo("You removed ${youContent.userId}") assertThat(youKicked).isEqualTo("You removed ${youContent.userId}")
val someoneKickedEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent) val someoneKickedEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent)
val someoneKicked = formatter.format(someoneKickedEvent, false) val someoneKicked = formatter.format(someoneKickedEvent, false)
Truth.assertThat(someoneKicked).isEqualTo("$otherName removed ${someoneContent.userId}") assertThat(someoneKicked).isEqualTo("$otherName removed ${someoneContent.userId}")
} }
@Test @Test
@ -343,15 +344,15 @@ class DefaultRoomLastMessageFormatterTest {
val youWereInvitedEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = youContent) val youWereInvitedEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = youContent)
val youWereInvited = formatter.format(youWereInvitedEvent, false) val youWereInvited = formatter.format(youWereInvitedEvent, false)
Truth.assertThat(youWereInvited).isEqualTo("$otherName invited you") assertThat(youWereInvited).isEqualTo("$otherName invited you")
val youInvitedEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = someoneContent) val youInvitedEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = someoneContent)
val youInvited = formatter.format(youInvitedEvent, false) val youInvited = formatter.format(youInvitedEvent, false)
Truth.assertThat(youInvited).isEqualTo("You invited ${someoneContent.userId}") assertThat(youInvited).isEqualTo("You invited ${someoneContent.userId}")
val someoneInvitedEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent) val someoneInvitedEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent)
val someoneInvited = formatter.format(someoneInvitedEvent, false) val someoneInvited = formatter.format(someoneInvitedEvent, false)
Truth.assertThat(someoneInvited).isEqualTo("$otherName invited ${someoneContent.userId}") assertThat(someoneInvited).isEqualTo("$otherName invited ${someoneContent.userId}")
} }
@Test @Test
@ -363,11 +364,11 @@ class DefaultRoomLastMessageFormatterTest {
val youAcceptedInviteEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent) val youAcceptedInviteEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent)
val youAcceptedInvite = formatter.format(youAcceptedInviteEvent, false) val youAcceptedInvite = formatter.format(youAcceptedInviteEvent, false)
Truth.assertThat(youAcceptedInvite).isEqualTo("You accepted the invite") assertThat(youAcceptedInvite).isEqualTo("You accepted the invite")
val someoneAcceptedInviteEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent) val someoneAcceptedInviteEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent)
val someoneAcceptedInvite = formatter.format(someoneAcceptedInviteEvent, false) val someoneAcceptedInvite = formatter.format(someoneAcceptedInviteEvent, false)
Truth.assertThat(someoneAcceptedInvite).isEqualTo("${someoneContent.userId} accepted the invite") assertThat(someoneAcceptedInvite).isEqualTo("${someoneContent.userId} accepted the invite")
} }
@Test @Test
@ -379,11 +380,11 @@ class DefaultRoomLastMessageFormatterTest {
val youRejectedInviteEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent) val youRejectedInviteEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent)
val youRejectedInvite = formatter.format(youRejectedInviteEvent, false) val youRejectedInvite = formatter.format(youRejectedInviteEvent, false)
Truth.assertThat(youRejectedInvite).isEqualTo("You rejected the invitation") assertThat(youRejectedInvite).isEqualTo("You rejected the invitation")
val someoneRejectedInviteEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent) val someoneRejectedInviteEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent)
val someoneRejectedInvite = formatter.format(someoneRejectedInviteEvent, false) val someoneRejectedInvite = formatter.format(someoneRejectedInviteEvent, false)
Truth.assertThat(someoneRejectedInvite).isEqualTo("${someoneContent.userId} rejected the invitation") assertThat(someoneRejectedInvite).isEqualTo("${someoneContent.userId} rejected the invitation")
} }
@Test @Test
@ -394,11 +395,11 @@ class DefaultRoomLastMessageFormatterTest {
val youRevokedInviteEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = someoneContent) val youRevokedInviteEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = someoneContent)
val youRevokedInvite = formatter.format(youRevokedInviteEvent, false) val youRevokedInvite = formatter.format(youRevokedInviteEvent, false)
Truth.assertThat(youRevokedInvite).isEqualTo("You revoked the invitation for ${someoneContent.userId} to join the room") assertThat(youRevokedInvite).isEqualTo("You revoked the invitation for ${someoneContent.userId} to join the room")
val someoneRevokedInviteEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent) val someoneRevokedInviteEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent)
val someoneRevokedInvite = formatter.format(someoneRevokedInviteEvent, false) val someoneRevokedInvite = formatter.format(someoneRevokedInviteEvent, false)
Truth.assertThat(someoneRevokedInvite).isEqualTo("$otherName revoked the invitation for ${someoneContent.userId} to join the room") assertThat(someoneRevokedInvite).isEqualTo("$otherName revoked the invitation for ${someoneContent.userId} to join the room")
} }
@Test @Test
@ -410,11 +411,11 @@ class DefaultRoomLastMessageFormatterTest {
val youKnockedEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent) val youKnockedEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent)
val youKnocked = formatter.format(youKnockedEvent, false) val youKnocked = formatter.format(youKnockedEvent, false)
Truth.assertThat(youKnocked).isEqualTo("You requested to join") assertThat(youKnocked).isEqualTo("You requested to join")
val someoneKnockedEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent) val someoneKnockedEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent)
val someoneKnocked = formatter.format(someoneKnockedEvent, false) val someoneKnocked = formatter.format(someoneKnockedEvent, false)
Truth.assertThat(someoneKnocked).isEqualTo("${someoneContent.userId} requested to join") assertThat(someoneKnocked).isEqualTo("${someoneContent.userId} requested to join")
} }
@Test @Test
@ -425,11 +426,11 @@ class DefaultRoomLastMessageFormatterTest {
val youAcceptedKnockEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = someoneContent) val youAcceptedKnockEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = someoneContent)
val youAcceptedKnock = formatter.format(youAcceptedKnockEvent, false) val youAcceptedKnock = formatter.format(youAcceptedKnockEvent, false)
Truth.assertThat(youAcceptedKnock).isEqualTo("${someoneContent.userId} allowed you to join") assertThat(youAcceptedKnock).isEqualTo("${someoneContent.userId} allowed you to join")
val someoneAcceptedKnockEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent) val someoneAcceptedKnockEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent)
val someoneAcceptedKnock = formatter.format(someoneAcceptedKnockEvent, false) val someoneAcceptedKnock = formatter.format(someoneAcceptedKnockEvent, false)
Truth.assertThat(someoneAcceptedKnock).isEqualTo("$otherName allowed ${someoneContent.userId} to join") assertThat(someoneAcceptedKnock).isEqualTo("$otherName allowed ${someoneContent.userId} to join")
} }
@Test @Test
@ -441,11 +442,11 @@ class DefaultRoomLastMessageFormatterTest {
val youRetractedKnockEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent) val youRetractedKnockEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent)
val youRetractedKnock = formatter.format(youRetractedKnockEvent, false) val youRetractedKnock = formatter.format(youRetractedKnockEvent, false)
Truth.assertThat(youRetractedKnock).isEqualTo("You cancelled your request to join") assertThat(youRetractedKnock).isEqualTo("You cancelled your request to join")
val someoneRetractedKnockEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent) val someoneRetractedKnockEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent)
val someoneRetractedKnock = formatter.format(someoneRetractedKnockEvent, false) val someoneRetractedKnock = formatter.format(someoneRetractedKnockEvent, false)
Truth.assertThat(someoneRetractedKnock).isEqualTo("${someoneContent.userId} is no longer interested in joining") assertThat(someoneRetractedKnock).isEqualTo("${someoneContent.userId} is no longer interested in joining")
} }
@Test @Test
@ -457,15 +458,15 @@ class DefaultRoomLastMessageFormatterTest {
val youDeniedKnockEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = someoneContent) val youDeniedKnockEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = someoneContent)
val youDeniedKnock = formatter.format(youDeniedKnockEvent, false) val youDeniedKnock = formatter.format(youDeniedKnockEvent, false)
Truth.assertThat(youDeniedKnock).isEqualTo("You rejected ${someoneContent.userId}'s request to join") assertThat(youDeniedKnock).isEqualTo("You rejected ${someoneContent.userId}'s request to join")
val someoneDeniedKnockEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent) val someoneDeniedKnockEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent)
val someoneDeniedKnock = formatter.format(someoneDeniedKnockEvent, false) val someoneDeniedKnock = formatter.format(someoneDeniedKnockEvent, false)
Truth.assertThat(someoneDeniedKnock).isEqualTo("$otherName rejected ${someoneContent.userId}'s request to join") assertThat(someoneDeniedKnock).isEqualTo("$otherName rejected ${someoneContent.userId}'s request to join")
val someoneDeniedYourKnockEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = youContent) val someoneDeniedYourKnockEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = youContent)
val someoneDeniedYourKnock = formatter.format(someoneDeniedYourKnockEvent, false) val someoneDeniedYourKnock = formatter.format(someoneDeniedYourKnockEvent, false)
Truth.assertThat(someoneDeniedYourKnock).isEqualTo("$otherName rejected your request to join") assertThat(someoneDeniedYourKnock).isEqualTo("$otherName rejected your request to join")
} }
@Test @Test
@ -480,7 +481,7 @@ class DefaultRoomLastMessageFormatterTest {
change to result change to result
} }
val expected = otherChanges.map { it to null } val expected = otherChanges.map { it to null }
Truth.assertThat(results).isEqualTo(expected) assertThat(results).isEqualTo(expected)
} }
// endregion // endregion
@ -496,19 +497,19 @@ class DefaultRoomLastMessageFormatterTest {
val youChangedRoomAvatarEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = changedContent) val youChangedRoomAvatarEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = changedContent)
val youChangedRoomAvatar = formatter.format(youChangedRoomAvatarEvent, false) val youChangedRoomAvatar = formatter.format(youChangedRoomAvatarEvent, false)
Truth.assertThat(youChangedRoomAvatar).isEqualTo("You changed the room avatar") assertThat(youChangedRoomAvatar).isEqualTo("You changed the room avatar")
val someoneChangedRoomAvatarEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = changedContent) val someoneChangedRoomAvatarEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = changedContent)
val someoneChangedRoomAvatar = formatter.format(someoneChangedRoomAvatarEvent, false) val someoneChangedRoomAvatar = formatter.format(someoneChangedRoomAvatarEvent, false)
Truth.assertThat(someoneChangedRoomAvatar).isEqualTo("$otherName changed the room avatar") assertThat(someoneChangedRoomAvatar).isEqualTo("$otherName changed the room avatar")
val youRemovedRoomAvatarEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = removedContent) val youRemovedRoomAvatarEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = removedContent)
val youRemovedRoomAvatar = formatter.format(youRemovedRoomAvatarEvent, false) val youRemovedRoomAvatar = formatter.format(youRemovedRoomAvatarEvent, false)
Truth.assertThat(youRemovedRoomAvatar).isEqualTo("You removed the room avatar") assertThat(youRemovedRoomAvatar).isEqualTo("You removed the room avatar")
val someoneRemovedRoomAvatarEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = removedContent) val someoneRemovedRoomAvatarEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = removedContent)
val someoneRemovedRoomAvatar = formatter.format(someoneRemovedRoomAvatarEvent, false) val someoneRemovedRoomAvatar = formatter.format(someoneRemovedRoomAvatarEvent, false)
Truth.assertThat(someoneRemovedRoomAvatar).isEqualTo("$otherName removed the room avatar") assertThat(someoneRemovedRoomAvatar).isEqualTo("$otherName removed the room avatar")
} }
@Test @Test
@ -519,11 +520,11 @@ class DefaultRoomLastMessageFormatterTest {
val youCreatedRoomMessage = createRoomEvent(sentByYou = true, senderDisplayName = null, content = content) val youCreatedRoomMessage = createRoomEvent(sentByYou = true, senderDisplayName = null, content = content)
val youCreatedRoom = formatter.format(youCreatedRoomMessage, false) val youCreatedRoom = formatter.format(youCreatedRoomMessage, false)
Truth.assertThat(youCreatedRoom).isEqualTo("You created the room") assertThat(youCreatedRoom).isEqualTo("You created the room")
val someoneCreatedRoomEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = content) val someoneCreatedRoomEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = content)
val someoneCreatedRoom = formatter.format(someoneCreatedRoomEvent, false) val someoneCreatedRoom = formatter.format(someoneCreatedRoomEvent, false)
Truth.assertThat(someoneCreatedRoom).isEqualTo("$otherName created the room") assertThat(someoneCreatedRoom).isEqualTo("$otherName created the room")
} }
@Test @Test
@ -534,11 +535,11 @@ class DefaultRoomLastMessageFormatterTest {
val youCreatedRoomMessage = createRoomEvent(sentByYou = true, senderDisplayName = null, content = content) val youCreatedRoomMessage = createRoomEvent(sentByYou = true, senderDisplayName = null, content = content)
val youCreatedRoom = formatter.format(youCreatedRoomMessage, false) val youCreatedRoom = formatter.format(youCreatedRoomMessage, false)
Truth.assertThat(youCreatedRoom).isEqualTo("Encryption enabled") assertThat(youCreatedRoom).isEqualTo("Encryption enabled")
val someoneCreatedRoomEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = content) val someoneCreatedRoomEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = content)
val someoneCreatedRoom = formatter.format(someoneCreatedRoomEvent, false) val someoneCreatedRoom = formatter.format(someoneCreatedRoomEvent, false)
Truth.assertThat(someoneCreatedRoom).isEqualTo("Encryption enabled") assertThat(someoneCreatedRoom).isEqualTo("Encryption enabled")
} }
@Test @Test
@ -551,19 +552,19 @@ class DefaultRoomLastMessageFormatterTest {
val youChangedRoomNameEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = changedContent) val youChangedRoomNameEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = changedContent)
val youChangedRoomName = formatter.format(youChangedRoomNameEvent, false) val youChangedRoomName = formatter.format(youChangedRoomNameEvent, false)
Truth.assertThat(youChangedRoomName).isEqualTo("You changed the room name to: $newName") assertThat(youChangedRoomName).isEqualTo("You changed the room name to: $newName")
val someoneChangedRoomNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = changedContent) val someoneChangedRoomNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = changedContent)
val someoneChangedRoomName = formatter.format(someoneChangedRoomNameEvent, false) val someoneChangedRoomName = formatter.format(someoneChangedRoomNameEvent, false)
Truth.assertThat(someoneChangedRoomName).isEqualTo("$otherName changed the room name to: $newName") assertThat(someoneChangedRoomName).isEqualTo("$otherName changed the room name to: $newName")
val youRemovedRoomNameEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = removedContent) val youRemovedRoomNameEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = removedContent)
val youRemovedRoomName = formatter.format(youRemovedRoomNameEvent, false) val youRemovedRoomName = formatter.format(youRemovedRoomNameEvent, false)
Truth.assertThat(youRemovedRoomName).isEqualTo("You removed the room name") assertThat(youRemovedRoomName).isEqualTo("You removed the room name")
val someoneRemovedRoomNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = removedContent) val someoneRemovedRoomNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = removedContent)
val someoneRemovedRoomName = formatter.format(someoneRemovedRoomNameEvent, false) val someoneRemovedRoomName = formatter.format(someoneRemovedRoomNameEvent, false)
Truth.assertThat(someoneRemovedRoomName).isEqualTo("$otherName removed the room name") assertThat(someoneRemovedRoomName).isEqualTo("$otherName removed the room name")
} }
@Test @Test
@ -576,19 +577,19 @@ class DefaultRoomLastMessageFormatterTest {
val youInvitedSomeoneEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = changedContent) val youInvitedSomeoneEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = changedContent)
val youInvitedSomeone = formatter.format(youInvitedSomeoneEvent, false) val youInvitedSomeone = formatter.format(youInvitedSomeoneEvent, false)
Truth.assertThat(youInvitedSomeone).isEqualTo("You sent an invitation to $inviteeName to join the room") assertThat(youInvitedSomeone).isEqualTo("You sent an invitation to $inviteeName to join the room")
val someoneInvitedSomeoneEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = changedContent) val someoneInvitedSomeoneEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = changedContent)
val someoneInvitedSomeone = formatter.format(someoneInvitedSomeoneEvent, false) val someoneInvitedSomeone = formatter.format(someoneInvitedSomeoneEvent, false)
Truth.assertThat(someoneInvitedSomeone).isEqualTo("$otherName sent an invitation to $inviteeName to join the room") assertThat(someoneInvitedSomeone).isEqualTo("$otherName sent an invitation to $inviteeName to join the room")
val youInvitedNoOneEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = removedContent) val youInvitedNoOneEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = removedContent)
val youInvitedNoOne = formatter.format(youInvitedNoOneEvent, false) val youInvitedNoOne = formatter.format(youInvitedNoOneEvent, false)
Truth.assertThat(youInvitedNoOne).isNull() assertThat(youInvitedNoOne).isNull()
val someoneInvitedNoOneEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = removedContent) val someoneInvitedNoOneEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = removedContent)
val someoneInvitedNoOne = formatter.format(someoneInvitedNoOneEvent, false) val someoneInvitedNoOne = formatter.format(someoneInvitedNoOneEvent, false)
Truth.assertThat(someoneInvitedNoOne).isNull() assertThat(someoneInvitedNoOne).isNull()
} }
@Test @Test
@ -601,19 +602,19 @@ class DefaultRoomLastMessageFormatterTest {
val youChangedRoomTopicEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = changedContent) val youChangedRoomTopicEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = changedContent)
val youChangedRoomTopic = formatter.format(youChangedRoomTopicEvent, false) val youChangedRoomTopic = formatter.format(youChangedRoomTopicEvent, false)
Truth.assertThat(youChangedRoomTopic).isEqualTo("You changed the topic to: $roomTopic") assertThat(youChangedRoomTopic).isEqualTo("You changed the topic to: $roomTopic")
val someoneChangedRoomTopicEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = changedContent) val someoneChangedRoomTopicEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = changedContent)
val someoneChangedRoomTopic = formatter.format(someoneChangedRoomTopicEvent, false) val someoneChangedRoomTopic = formatter.format(someoneChangedRoomTopicEvent, false)
Truth.assertThat(someoneChangedRoomTopic).isEqualTo("$otherName changed the topic to: $roomTopic") assertThat(someoneChangedRoomTopic).isEqualTo("$otherName changed the topic to: $roomTopic")
val youRemovedRoomTopicEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = removedContent) val youRemovedRoomTopicEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = removedContent)
val youRemovedRoomTopic = formatter.format(youRemovedRoomTopicEvent, false) val youRemovedRoomTopic = formatter.format(youRemovedRoomTopicEvent, false)
Truth.assertThat(youRemovedRoomTopic).isEqualTo("You removed the room topic") assertThat(youRemovedRoomTopic).isEqualTo("You removed the room topic")
val someoneRemovedRoomTopicEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = removedContent) val someoneRemovedRoomTopicEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = removedContent)
val someoneRemovedRoomTopic = formatter.format(someoneRemovedRoomTopicEvent, false) val someoneRemovedRoomTopic = formatter.format(someoneRemovedRoomTopicEvent, false)
Truth.assertThat(someoneRemovedRoomTopic).isEqualTo("$otherName removed the room topic") assertThat(someoneRemovedRoomTopic).isEqualTo("$otherName removed the room topic")
} }
@Test @Test
@ -632,7 +633,7 @@ class DefaultRoomLastMessageFormatterTest {
state to result state to result
} }
val expected = otherStates.map { it to null } val expected = otherStates.map { it to null }
Truth.assertThat(results).isEqualTo(expected) assertThat(results).isEqualTo(expected)
} }
// endregion // endregion
@ -651,35 +652,35 @@ class DefaultRoomLastMessageFormatterTest {
val youChangedAvatarEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = changedContent) val youChangedAvatarEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = changedContent)
val youChangedAvatar = formatter.format(youChangedAvatarEvent, false) val youChangedAvatar = formatter.format(youChangedAvatarEvent, false)
Truth.assertThat(youChangedAvatar).isEqualTo("You changed your avatar") assertThat(youChangedAvatar).isEqualTo("You changed your avatar")
val someoneChangeAvatarEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = changedContent) val someoneChangeAvatarEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = changedContent)
val someoneChangeAvatar = formatter.format(someoneChangeAvatarEvent, false) val someoneChangeAvatar = formatter.format(someoneChangeAvatarEvent, false)
Truth.assertThat(someoneChangeAvatar).isEqualTo("$otherName changed their avatar") assertThat(someoneChangeAvatar).isEqualTo("$otherName changed their avatar")
val youSetAvatarEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = setContent) val youSetAvatarEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = setContent)
val youSetAvatar = formatter.format(youSetAvatarEvent, false) val youSetAvatar = formatter.format(youSetAvatarEvent, false)
Truth.assertThat(youSetAvatar).isEqualTo("You changed your avatar") assertThat(youSetAvatar).isEqualTo("You changed your avatar")
val someoneSetAvatarEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = setContent) val someoneSetAvatarEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = setContent)
val someoneSetAvatar = formatter.format(someoneSetAvatarEvent, false) val someoneSetAvatar = formatter.format(someoneSetAvatarEvent, false)
Truth.assertThat(someoneSetAvatar).isEqualTo("$otherName changed their avatar") assertThat(someoneSetAvatar).isEqualTo("$otherName changed their avatar")
val youRemovedAvatarEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = removedContent) val youRemovedAvatarEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = removedContent)
val youRemovedAvatar = formatter.format(youRemovedAvatarEvent, false) val youRemovedAvatar = formatter.format(youRemovedAvatarEvent, false)
Truth.assertThat(youRemovedAvatar).isEqualTo("You changed your avatar") assertThat(youRemovedAvatar).isEqualTo("You changed your avatar")
val someoneRemovedAvatarEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = removedContent) val someoneRemovedAvatarEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = removedContent)
val someoneRemovedAvatar = formatter.format(someoneRemovedAvatarEvent, false) val someoneRemovedAvatar = formatter.format(someoneRemovedAvatarEvent, false)
Truth.assertThat(someoneRemovedAvatar).isEqualTo("$otherName changed their avatar") assertThat(someoneRemovedAvatar).isEqualTo("$otherName changed their avatar")
val unchangedEvent = createRoomEvent(sentByYou = true, senderDisplayName = otherName, content = sameContent) val unchangedEvent = createRoomEvent(sentByYou = true, senderDisplayName = otherName, content = sameContent)
val unchangedResult = formatter.format(unchangedEvent, false) val unchangedResult = formatter.format(unchangedEvent, false)
Truth.assertThat(unchangedResult).isNull() assertThat(unchangedResult).isNull()
val invalidEvent = createRoomEvent(sentByYou = true, senderDisplayName = otherName, content = invalidContent) val invalidEvent = createRoomEvent(sentByYou = true, senderDisplayName = otherName, content = invalidContent)
val invalidResult = formatter.format(invalidEvent, false) val invalidResult = formatter.format(invalidEvent, false)
Truth.assertThat(invalidResult).isNull() assertThat(invalidResult).isNull()
} }
@Test @Test
@ -696,35 +697,35 @@ class DefaultRoomLastMessageFormatterTest {
val youChangedDisplayNameEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = changedContent) val youChangedDisplayNameEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = changedContent)
val youChangedDisplayName = formatter.format(youChangedDisplayNameEvent, false) val youChangedDisplayName = formatter.format(youChangedDisplayNameEvent, false)
Truth.assertThat(youChangedDisplayName).isEqualTo("You changed your display name from $oldDisplayName to $newDisplayName") assertThat(youChangedDisplayName).isEqualTo("You changed your display name from $oldDisplayName to $newDisplayName")
val someoneChangedDisplayNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = changedContent) val someoneChangedDisplayNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = changedContent)
val someoneChangedDisplayName = formatter.format(someoneChangedDisplayNameEvent, false) val someoneChangedDisplayName = formatter.format(someoneChangedDisplayNameEvent, false)
Truth.assertThat(someoneChangedDisplayName).isEqualTo("$otherName changed their display name from $oldDisplayName to $newDisplayName") assertThat(someoneChangedDisplayName).isEqualTo("$otherName changed their display name from $oldDisplayName to $newDisplayName")
val youSetDisplayNameEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = setContent) val youSetDisplayNameEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = setContent)
val youSetDisplayName = formatter.format(youSetDisplayNameEvent, false) val youSetDisplayName = formatter.format(youSetDisplayNameEvent, false)
Truth.assertThat(youSetDisplayName).isEqualTo("You set your display name to $newDisplayName") assertThat(youSetDisplayName).isEqualTo("You set your display name to $newDisplayName")
val someoneSetDisplayNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = setContent) val someoneSetDisplayNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = setContent)
val someoneSetDisplayName = formatter.format(someoneSetDisplayNameEvent, false) val someoneSetDisplayName = formatter.format(someoneSetDisplayNameEvent, false)
Truth.assertThat(someoneSetDisplayName).isEqualTo("$otherName set their display name to $newDisplayName") assertThat(someoneSetDisplayName).isEqualTo("$otherName set their display name to $newDisplayName")
val youRemovedDisplayNameEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = removedContent) val youRemovedDisplayNameEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = removedContent)
val youRemovedDisplayName = formatter.format(youRemovedDisplayNameEvent, false) val youRemovedDisplayName = formatter.format(youRemovedDisplayNameEvent, false)
Truth.assertThat(youRemovedDisplayName).isEqualTo("You removed your display name (it was $oldDisplayName)") assertThat(youRemovedDisplayName).isEqualTo("You removed your display name (it was $oldDisplayName)")
val someoneRemovedDisplayNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = removedContent) val someoneRemovedDisplayNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = removedContent)
val someoneRemovedDisplayName = formatter.format(someoneRemovedDisplayNameEvent, false) val someoneRemovedDisplayName = formatter.format(someoneRemovedDisplayNameEvent, false)
Truth.assertThat(someoneRemovedDisplayName).isEqualTo("$otherName removed their display name (it was $oldDisplayName)") assertThat(someoneRemovedDisplayName).isEqualTo("$otherName removed their display name (it was $oldDisplayName)")
val unchangedEvent = createRoomEvent(sentByYou = true, senderDisplayName = otherName, content = sameContent) val unchangedEvent = createRoomEvent(sentByYou = true, senderDisplayName = otherName, content = sameContent)
val unchangedResult = formatter.format(unchangedEvent, false) val unchangedResult = formatter.format(unchangedEvent, false)
Truth.assertThat(unchangedResult).isNull() assertThat(unchangedResult).isNull()
val invalidEvent = createRoomEvent(sentByYou = true, senderDisplayName = otherName, content = invalidContent) val invalidEvent = createRoomEvent(sentByYou = true, senderDisplayName = otherName, content = invalidContent)
val invalidResult = formatter.format(invalidEvent, false) val invalidResult = formatter.format(invalidEvent, false)
Truth.assertThat(invalidResult).isNull() assertThat(invalidResult).isNull()
} }
@Test @Test
@ -753,15 +754,15 @@ class DefaultRoomLastMessageFormatterTest {
val youChangedBothEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = changedContent) val youChangedBothEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = changedContent)
val youChangedBoth = formatter.format(youChangedBothEvent, false) val youChangedBoth = formatter.format(youChangedBothEvent, false)
Truth.assertThat(youChangedBoth).isEqualTo("You changed your display name from $oldDisplayName to $newDisplayName\n(avatar was changed too)") assertThat(youChangedBoth).isEqualTo("You changed your display name from $oldDisplayName to $newDisplayName\n(avatar was changed too)")
val invalidContentEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = invalidContent) val invalidContentEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = invalidContent)
val invalidMessage = formatter.format(invalidContentEvent, false) val invalidMessage = formatter.format(invalidContentEvent, false)
Truth.assertThat(invalidMessage).isNull() assertThat(invalidMessage).isNull()
val sameContentEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = sameContent) val sameContentEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = sameContent)
val sameMessage = formatter.format(sameContentEvent, false) val sameMessage = formatter.format(sameContentEvent, false)
Truth.assertThat(sameMessage).isNull() assertThat(sameMessage).isNull()
} }
// endregion // endregion
@ -774,10 +775,10 @@ class DefaultRoomLastMessageFormatterTest {
val pollContent = aPollContent() val pollContent = aPollContent()
val mineContentEvent = createRoomEvent(sentByYou = true, senderDisplayName = "Alice", content = pollContent) val mineContentEvent = createRoomEvent(sentByYou = true, senderDisplayName = "Alice", content = pollContent)
Truth.assertThat(formatter.format(mineContentEvent, true)).isEqualTo("Poll: Do you like polls?") assertThat(formatter.format(mineContentEvent, true)).isEqualTo("Poll: Do you like polls?")
val contentEvent = createRoomEvent(sentByYou = false, senderDisplayName = "Bob", content = pollContent) val contentEvent = createRoomEvent(sentByYou = false, senderDisplayName = "Bob", content = pollContent)
Truth.assertThat(formatter.format(contentEvent, true)).isEqualTo("Poll: Do you like polls?") assertThat(formatter.format(contentEvent, true)).isEqualTo("Poll: Do you like polls?")
} }
@Test @Test
@ -786,10 +787,10 @@ class DefaultRoomLastMessageFormatterTest {
val pollContent = aPollContent() val pollContent = aPollContent()
val mineContentEvent = createRoomEvent(sentByYou = true, senderDisplayName = "Alice", content = pollContent) val mineContentEvent = createRoomEvent(sentByYou = true, senderDisplayName = "Alice", content = pollContent)
Truth.assertThat(formatter.format(mineContentEvent, false).toString()).isEqualTo("Alice: Poll: Do you like polls?") assertThat(formatter.format(mineContentEvent, false).toString()).isEqualTo("Alice: Poll: Do you like polls?")
val contentEvent = createRoomEvent(sentByYou = false, senderDisplayName = "Bob", content = pollContent) val contentEvent = createRoomEvent(sentByYou = false, senderDisplayName = "Bob", content = pollContent)
Truth.assertThat(formatter.format(contentEvent, false).toString()).isEqualTo("Bob: Poll: Do you like polls?") assertThat(formatter.format(contentEvent, false).toString()).isEqualTo("Bob: Poll: Do you like polls?")
} }
// endregion // endregion

View file

@ -16,7 +16,7 @@
package io.element.android.libraries.usersearch.impl package io.element.android.libraries.usersearch.impl
import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat
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.user.MatrixSearchUserResults import io.element.android.libraries.matrix.api.user.MatrixSearchUserResults
import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.api.user.MatrixUser
@ -49,7 +49,7 @@ internal class MatrixUserListDataSourceTest {
val dataSource = MatrixUserListDataSource(matrixClient) val dataSource = MatrixUserListDataSource(matrixClient)
val results = dataSource.search("test", 2) val results = dataSource.search("test", 2)
Truth.assertThat(results).containsExactly( assertThat(results).containsExactly(
aMatrixUserProfile(), aMatrixUserProfile(),
aMatrixUserProfile(userId = A_USER_ID_2) aMatrixUserProfile(userId = A_USER_ID_2)
) )
@ -65,7 +65,7 @@ internal class MatrixUserListDataSourceTest {
val dataSource = MatrixUserListDataSource(matrixClient) val dataSource = MatrixUserListDataSource(matrixClient)
val results = dataSource.search("test", 2) val results = dataSource.search("test", 2)
Truth.assertThat(results).isEmpty() assertThat(results).isEmpty()
} }
@Test @Test
@ -78,7 +78,7 @@ internal class MatrixUserListDataSourceTest {
val dataSource = MatrixUserListDataSource(matrixClient) val dataSource = MatrixUserListDataSource(matrixClient)
val result = dataSource.getProfile(A_USER_ID) val result = dataSource.getProfile(A_USER_ID)
Truth.assertThat(result).isEqualTo(aMatrixUserProfile()) assertThat(result).isEqualTo(aMatrixUserProfile())
} }
@Test @Test
@ -91,7 +91,7 @@ internal class MatrixUserListDataSourceTest {
val dataSource = MatrixUserListDataSource(matrixClient) val dataSource = MatrixUserListDataSource(matrixClient)
val result = dataSource.getProfile(A_USER_ID) val result = dataSource.getProfile(A_USER_ID)
Truth.assertThat(result).isNull() assertThat(result).isNull()
} }
private fun aMatrixUserProfile( private fun aMatrixUserProfile(

View file

@ -16,7 +16,7 @@
package io.element.android.libraries.voicerecorder.impl.audio package io.element.android.libraries.voicerecorder.impl.audio
import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat
import org.junit.Test import org.junit.Test
class DBovAudioLevelCalculatorTest { class DBovAudioLevelCalculatorTest {
@ -26,7 +26,7 @@ class DBovAudioLevelCalculatorTest {
val calculator = DBovAudioLevelCalculator() val calculator = DBovAudioLevelCalculator()
val buffer = ShortArray(100) { Short.MAX_VALUE } val buffer = ShortArray(100) { Short.MAX_VALUE }
val level = calculator.calculateAudioLevel(buffer) val level = calculator.calculateAudioLevel(buffer)
Truth.assertThat(level).isEqualTo(1.0f) assertThat(level).isEqualTo(1.0f)
} }
@Test @Test
@ -34,7 +34,7 @@ class DBovAudioLevelCalculatorTest {
val calculator = DBovAudioLevelCalculator() val calculator = DBovAudioLevelCalculator()
val buffer = shortArrayOf(100, -200, 300, -400, 500, -600, 700, -800, 900, -1000) val buffer = shortArrayOf(100, -200, 300, -400, 500, -600, 700, -800, 900, -1000)
val level = calculator.calculateAudioLevel(buffer) val level = calculator.calculateAudioLevel(buffer)
Truth.assertThat(level).apply { assertThat(level).apply {
isGreaterThan(0f) isGreaterThan(0f)
isLessThan(1f) isLessThan(1f)
} }
@ -45,6 +45,6 @@ class DBovAudioLevelCalculatorTest {
val calculator = DBovAudioLevelCalculator() val calculator = DBovAudioLevelCalculator()
val buffer = ShortArray(100) { 0 } val buffer = ShortArray(100) { 0 }
val level = calculator.calculateAudioLevel(buffer) val level = calculator.calculateAudioLevel(buffer)
Truth.assertThat(level).isEqualTo(0.0f) assertThat(level).isEqualTo(0.0f)
} }
} }

View file

@ -16,26 +16,26 @@
package io.element.android.libraries.voicerecorder.impl.audio package io.element.android.libraries.voicerecorder.impl.audio
import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat
import org.junit.Test import org.junit.Test
class ResampleTest { class ResampleTest {
@Test @Test
fun `resample works`() { fun `resample works`() {
listOf(0.0f).resample(10).let { listOf(0.0f).resample(10).let {
Truth.assertThat(it).isEqualTo(listOf(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f)) assertThat(it).isEqualTo(listOf(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f))
} }
listOf(1.0f).resample(10).let { listOf(1.0f).resample(10).let {
Truth.assertThat(it).isEqualTo(listOf(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f)) assertThat(it).isEqualTo(listOf(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f))
} }
listOf(0.0f, 1.0f).resample(10).let { listOf(0.0f, 1.0f).resample(10).let {
Truth.assertThat(it).isEqualTo(listOf(0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f)) assertThat(it).isEqualTo(listOf(0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f))
} }
listOf(0.0f, 0.5f, 1.0f).resample(10).let { listOf(0.0f, 0.5f, 1.0f).resample(10).let {
Truth.assertThat(it).isEqualTo(listOf(0.0f, 0.15f, 0.3f, 0.45000002f, 0.6f, 0.75f, 0.90000004f, 1.0f, 1.0f, 1.0f)) assertThat(it).isEqualTo(listOf(0.0f, 0.15f, 0.3f, 0.45000002f, 0.6f, 0.75f, 0.90000004f, 1.0f, 1.0f, 1.0f))
} }
List(100) { it.toFloat() }.resample(10).let { List(100) { it.toFloat() }.resample(10).let {
Truth.assertThat(it).isEqualTo(listOf(0.0f, 10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f, 90.0f)) assertThat(it).isEqualTo(listOf(0.0f, 10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f, 90.0f))
} }
} }
} }

View file

@ -20,6 +20,8 @@ import com.lemonappdev.konsist.api.Konsist
import com.lemonappdev.konsist.api.ext.list.modifierprovider.withoutOverrideModifier import com.lemonappdev.konsist.api.ext.list.modifierprovider.withoutOverrideModifier
import com.lemonappdev.konsist.api.ext.list.withFunction import com.lemonappdev.konsist.api.ext.list.withFunction
import com.lemonappdev.konsist.api.ext.list.withReturnType import com.lemonappdev.konsist.api.ext.list.withReturnType
import com.lemonappdev.konsist.api.ext.list.withoutName
import com.lemonappdev.konsist.api.verify.assertFalse
import com.lemonappdev.konsist.api.verify.assertTrue import com.lemonappdev.konsist.api.verify.assertTrue
import org.junit.Test import org.junit.Test
@ -46,4 +48,18 @@ class KonsistTestTest {
functionDeclaration.name == "create${functionDeclaration.returnType?.name}" functionDeclaration.name == "create${functionDeclaration.returnType?.name}"
} }
} }
@Test
fun `assertion methods must be imported`() {
Konsist
.scopeFromTest()
.functions()
// Exclude self
.withoutName("assertion methods must be imported")
.assertFalse(
additionalMessage = "Import methods from Truth, instead of using for instance Truth.assertThat(...)"
) { functionDeclaration ->
functionDeclaration.text.contains("Truth.")
}
}
} }