Merge pull request #3585 from element-hq/feature/bma/fixTests
Fix tests on develop
This commit is contained in:
commit
9e5dc106c2
10 changed files with 131 additions and 73 deletions
|
|
@ -0,0 +1,59 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2024 New Vector Ltd.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
* Please see LICENSE in the repository root for full details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.element.android.libraries.matrix.impl.fixtures.factories
|
||||||
|
|
||||||
|
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustEventShieldsProvider
|
||||||
|
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustEventTimelineItemDebugInfoProvider
|
||||||
|
import io.element.android.libraries.matrix.test.AN_EVENT_ID
|
||||||
|
import io.element.android.libraries.matrix.test.A_USER_ID
|
||||||
|
import org.matrix.rustcomponents.sdk.EventOrTransactionId
|
||||||
|
import org.matrix.rustcomponents.sdk.EventSendState
|
||||||
|
import org.matrix.rustcomponents.sdk.EventTimelineItem
|
||||||
|
import org.matrix.rustcomponents.sdk.EventTimelineItemDebugInfo
|
||||||
|
import org.matrix.rustcomponents.sdk.ProfileDetails
|
||||||
|
import org.matrix.rustcomponents.sdk.Reaction
|
||||||
|
import org.matrix.rustcomponents.sdk.Receipt
|
||||||
|
import org.matrix.rustcomponents.sdk.ShieldState
|
||||||
|
import org.matrix.rustcomponents.sdk.TimelineItemContent
|
||||||
|
import uniffi.matrix_sdk_ui.EventItemOrigin
|
||||||
|
|
||||||
|
fun aRustEventTimelineItem(
|
||||||
|
isLocal: Boolean = false,
|
||||||
|
isRemote: Boolean = true,
|
||||||
|
eventOrTransactionId: EventOrTransactionId = EventOrTransactionId.EventId(AN_EVENT_ID.value),
|
||||||
|
sender: String = A_USER_ID.value,
|
||||||
|
senderProfile: ProfileDetails = ProfileDetails.Unavailable,
|
||||||
|
isOwn: Boolean = true,
|
||||||
|
isEditable: Boolean = true,
|
||||||
|
content: TimelineItemContent = aRustTimelineItemMessageContent(),
|
||||||
|
timestamp: ULong = 0uL,
|
||||||
|
reactions: List<Reaction> = emptyList(),
|
||||||
|
debugInfo: EventTimelineItemDebugInfo = anEventTimelineItemDebugInfo(),
|
||||||
|
localSendState: EventSendState? = null,
|
||||||
|
readReceipts: Map<String, Receipt> = emptyMap(),
|
||||||
|
origin: EventItemOrigin? = EventItemOrigin.SYNC,
|
||||||
|
canBeRepliedTo: Boolean = true,
|
||||||
|
shieldsState: ShieldState? = null,
|
||||||
|
) = EventTimelineItem(
|
||||||
|
isLocal = isLocal,
|
||||||
|
isRemote = isRemote,
|
||||||
|
eventOrTransactionId = eventOrTransactionId,
|
||||||
|
sender = sender,
|
||||||
|
senderProfile = senderProfile,
|
||||||
|
timestamp = timestamp,
|
||||||
|
isOwn = isOwn,
|
||||||
|
isEditable = isEditable,
|
||||||
|
canBeRepliedTo = canBeRepliedTo,
|
||||||
|
content = content,
|
||||||
|
debugInfoProvider = FakeRustEventTimelineItemDebugInfoProvider(debugInfo),
|
||||||
|
shieldsProvider = FakeRustEventShieldsProvider(shieldsState),
|
||||||
|
localSendState = localSendState,
|
||||||
|
reactions = reactions,
|
||||||
|
readReceipts = readReceipts,
|
||||||
|
origin = origin,
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2024 New Vector Ltd.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
* Please see LICENSE in the repository root for full details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.element.android.libraries.matrix.impl.fixtures.factories
|
||||||
|
|
||||||
|
import org.matrix.rustcomponents.sdk.MessageContent
|
||||||
|
import org.matrix.rustcomponents.sdk.MessageType
|
||||||
|
import org.matrix.rustcomponents.sdk.TextMessageContent
|
||||||
|
import org.matrix.rustcomponents.sdk.TimelineItemContent
|
||||||
|
|
||||||
|
fun aRustTimelineItemMessageContent(body: String = "Hello") = TimelineItemContent.Message(
|
||||||
|
content = MessageContent(
|
||||||
|
msgType = MessageType.Text(content = TextMessageContent(body = body, formatted = null)),
|
||||||
|
body = body,
|
||||||
|
inReplyTo = null,
|
||||||
|
threadRoot = null,
|
||||||
|
isEdited = false,
|
||||||
|
mentions = null,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
@ -42,7 +42,7 @@ class FakeRustClient(
|
||||||
override fun cachedAvatarUrl(): String? = null
|
override fun cachedAvatarUrl(): String? = null
|
||||||
override suspend fun restoreSession(session: Session) = Unit
|
override suspend fun restoreSession(session: Session) = Unit
|
||||||
override fun syncService(): SyncServiceBuilder = FakeRustSyncServiceBuilder()
|
override fun syncService(): SyncServiceBuilder = FakeRustSyncServiceBuilder()
|
||||||
override fun roomDirectorySearch(): RoomDirectorySearch = FakeRoomDirectorySearch()
|
override fun roomDirectorySearch(): RoomDirectorySearch = FakeRustRoomDirectorySearch()
|
||||||
override suspend fun setPusher(
|
override suspend fun setPusher(
|
||||||
identifiers: PusherIdentifiers,
|
identifiers: PusherIdentifiers,
|
||||||
kind: PusherKind,
|
kind: PusherKind,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2024 New Vector Ltd.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
* Please see LICENSE in the repository root for full details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.element.android.libraries.matrix.impl.fixtures.fakes
|
||||||
|
|
||||||
|
import org.matrix.rustcomponents.sdk.EventShieldsProvider
|
||||||
|
import org.matrix.rustcomponents.sdk.NoPointer
|
||||||
|
import org.matrix.rustcomponents.sdk.ShieldState
|
||||||
|
|
||||||
|
class FakeRustEventShieldsProvider(
|
||||||
|
private val shieldsState: ShieldState? = null,
|
||||||
|
) : EventShieldsProvider(NoPointer) {
|
||||||
|
override fun getShields(strict: Boolean): ShieldState? = shieldsState
|
||||||
|
}
|
||||||
|
|
@ -1,44 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2024 New Vector Ltd.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
* Please see LICENSE in the repository root for full details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package io.element.android.libraries.matrix.impl.fixtures.fakes
|
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.impl.fixtures.factories.anEventTimelineItemDebugInfo
|
|
||||||
import io.element.android.libraries.matrix.test.AN_EVENT_ID
|
|
||||||
import io.element.android.libraries.matrix.test.A_USER_ID
|
|
||||||
import org.matrix.rustcomponents.sdk.EventSendState
|
|
||||||
import org.matrix.rustcomponents.sdk.EventTimelineItem
|
|
||||||
import org.matrix.rustcomponents.sdk.EventTimelineItemDebugInfo
|
|
||||||
import org.matrix.rustcomponents.sdk.NoPointer
|
|
||||||
import org.matrix.rustcomponents.sdk.ProfileDetails
|
|
||||||
import org.matrix.rustcomponents.sdk.Reaction
|
|
||||||
import org.matrix.rustcomponents.sdk.Receipt
|
|
||||||
import org.matrix.rustcomponents.sdk.ShieldState
|
|
||||||
import org.matrix.rustcomponents.sdk.TimelineItemContent
|
|
||||||
import uniffi.matrix_sdk_ui.EventItemOrigin
|
|
||||||
|
|
||||||
class FakeRustEventTimelineItem(
|
|
||||||
private val origin: EventItemOrigin? = null,
|
|
||||||
) : EventTimelineItem(NoPointer) {
|
|
||||||
override fun origin(): EventItemOrigin? = origin
|
|
||||||
override fun eventId(): String = AN_EVENT_ID.value
|
|
||||||
override fun transactionId(): String? = null
|
|
||||||
override fun isEditable(): Boolean = false
|
|
||||||
override fun canBeRepliedTo(): Boolean = false
|
|
||||||
override fun isLocal(): Boolean = false
|
|
||||||
override fun isOwn(): Boolean = false
|
|
||||||
override fun isRemote(): Boolean = false
|
|
||||||
override fun localSendState(): EventSendState? = null
|
|
||||||
override fun reactions(): List<Reaction> = emptyList()
|
|
||||||
override fun readReceipts(): Map<String, Receipt> = emptyMap()
|
|
||||||
override fun sender(): String = A_USER_ID.value
|
|
||||||
override fun senderProfile(): ProfileDetails = ProfileDetails.Unavailable
|
|
||||||
override fun timestamp(): ULong = 0u
|
|
||||||
override fun content(): TimelineItemContent = FakeRustTimelineItemContent()
|
|
||||||
override fun debugInfo(): EventTimelineItemDebugInfo = anEventTimelineItemDebugInfo()
|
|
||||||
override fun getShield(strict: Boolean): ShieldState? = null
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2024 New Vector Ltd.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
* Please see LICENSE in the repository root for full details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.element.android.libraries.matrix.impl.fixtures.fakes
|
||||||
|
|
||||||
|
import io.element.android.libraries.matrix.impl.fixtures.factories.anEventTimelineItemDebugInfo
|
||||||
|
import org.matrix.rustcomponents.sdk.EventTimelineItemDebugInfo
|
||||||
|
import org.matrix.rustcomponents.sdk.EventTimelineItemDebugInfoProvider
|
||||||
|
import org.matrix.rustcomponents.sdk.NoPointer
|
||||||
|
|
||||||
|
class FakeRustEventTimelineItemDebugInfoProvider(
|
||||||
|
private val debugInfo: EventTimelineItemDebugInfo = anEventTimelineItemDebugInfo(),
|
||||||
|
) : EventTimelineItemDebugInfoProvider(NoPointer) {
|
||||||
|
override fun get(): EventTimelineItemDebugInfo = debugInfo
|
||||||
|
}
|
||||||
|
|
@ -14,7 +14,7 @@ import org.matrix.rustcomponents.sdk.RoomDirectorySearchEntriesListener
|
||||||
import org.matrix.rustcomponents.sdk.RoomDirectorySearchEntryUpdate
|
import org.matrix.rustcomponents.sdk.RoomDirectorySearchEntryUpdate
|
||||||
import org.matrix.rustcomponents.sdk.TaskHandle
|
import org.matrix.rustcomponents.sdk.TaskHandle
|
||||||
|
|
||||||
class FakeRoomDirectorySearch(
|
class FakeRustRoomDirectorySearch(
|
||||||
var isAtLastPage: Boolean = false,
|
var isAtLastPage: Boolean = false,
|
||||||
) : RoomDirectorySearch(NoPointer) {
|
) : RoomDirectorySearch(NoPointer) {
|
||||||
override suspend fun isAtLastPage(): Boolean {
|
override suspend fun isAtLastPage(): Boolean {
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2024 New Vector Ltd.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
* Please see LICENSE in the repository root for full details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package io.element.android.libraries.matrix.impl.fixtures.fakes
|
|
||||||
|
|
||||||
import org.matrix.rustcomponents.sdk.Message
|
|
||||||
import org.matrix.rustcomponents.sdk.NoPointer
|
|
||||||
import org.matrix.rustcomponents.sdk.TimelineItemContent
|
|
||||||
import org.matrix.rustcomponents.sdk.TimelineItemContentKind
|
|
||||||
|
|
||||||
class FakeRustTimelineItemContent : TimelineItemContent(NoPointer) {
|
|
||||||
override fun asMessage(): Message? = null
|
|
||||||
override fun kind(): TimelineItemContentKind = TimelineItemContentKind.Message
|
|
||||||
}
|
|
||||||
|
|
@ -11,7 +11,7 @@ import app.cash.turbine.test
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.libraries.matrix.api.roomdirectory.RoomDirectoryList
|
import io.element.android.libraries.matrix.api.roomdirectory.RoomDirectoryList
|
||||||
import io.element.android.libraries.matrix.impl.fixtures.factories.aRustRoomDescription
|
import io.element.android.libraries.matrix.impl.fixtures.factories.aRustRoomDescription
|
||||||
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRoomDirectorySearch
|
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustRoomDirectorySearch
|
||||||
import io.element.android.libraries.matrix.test.A_ROOM_ID_2
|
import io.element.android.libraries.matrix.test.A_ROOM_ID_2
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
|
|
@ -27,17 +27,17 @@ import org.matrix.rustcomponents.sdk.RoomDirectorySearchEntryUpdate
|
||||||
class RustRoomDirectoryListTest {
|
class RustRoomDirectoryListTest {
|
||||||
@Test
|
@Test
|
||||||
fun `check that the state emits the expected values`() = runTest {
|
fun `check that the state emits the expected values`() = runTest {
|
||||||
val fakeRoomDirectorySearch = FakeRoomDirectorySearch()
|
val roomDirectorySearch = FakeRustRoomDirectorySearch()
|
||||||
val mapper = RoomDescriptionMapper()
|
val mapper = RoomDescriptionMapper()
|
||||||
val sut = createRustRoomDirectoryList(
|
val sut = createRustRoomDirectoryList(
|
||||||
roomDirectorySearch = fakeRoomDirectorySearch,
|
roomDirectorySearch = roomDirectorySearch,
|
||||||
scope = backgroundScope,
|
scope = backgroundScope,
|
||||||
)
|
)
|
||||||
// Let the mxCallback be ready
|
// Let the mxCallback be ready
|
||||||
runCurrent()
|
runCurrent()
|
||||||
sut.state.test {
|
sut.state.test {
|
||||||
sut.filter("", 20)
|
sut.filter("", 20)
|
||||||
fakeRoomDirectorySearch.emitResult(
|
roomDirectorySearch.emitResult(
|
||||||
listOf(
|
listOf(
|
||||||
RoomDirectorySearchEntryUpdate.Append(listOf(aRustRoomDescription()))
|
RoomDirectorySearchEntryUpdate.Append(listOf(aRustRoomDescription()))
|
||||||
)
|
)
|
||||||
|
|
@ -50,9 +50,9 @@ class RustRoomDirectoryListTest {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
assertThat(initialItem.hasMoreToLoad).isTrue()
|
assertThat(initialItem.hasMoreToLoad).isTrue()
|
||||||
fakeRoomDirectorySearch.isAtLastPage = true
|
roomDirectorySearch.isAtLastPage = true
|
||||||
sut.loadMore()
|
sut.loadMore()
|
||||||
fakeRoomDirectorySearch.emitResult(
|
roomDirectorySearch.emitResult(
|
||||||
listOf(
|
listOf(
|
||||||
RoomDirectorySearchEntryUpdate.Append(listOf(aRustRoomDescription(A_ROOM_ID_2.value)))
|
RoomDirectorySearchEntryUpdate.Append(listOf(aRustRoomDescription(A_ROOM_ID_2.value)))
|
||||||
)
|
)
|
||||||
|
|
@ -80,7 +80,7 @@ class RustRoomDirectoryListTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun TestScope.createRustRoomDirectoryList(
|
private fun TestScope.createRustRoomDirectoryList(
|
||||||
roomDirectorySearch: RoomDirectorySearch = FakeRoomDirectorySearch(),
|
roomDirectorySearch: RoomDirectorySearch = FakeRustRoomDirectorySearch(),
|
||||||
scope: CoroutineScope,
|
scope: CoroutineScope,
|
||||||
) = RustRoomDirectoryList(
|
) = RustRoomDirectoryList(
|
||||||
inner = roomDirectorySearch,
|
inner = roomDirectorySearch,
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ package io.element.android.libraries.matrix.impl.timeline
|
||||||
import app.cash.turbine.test
|
import app.cash.turbine.test
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem
|
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem
|
||||||
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustEventTimelineItem
|
import io.element.android.libraries.matrix.impl.fixtures.factories.aRustEventTimelineItem
|
||||||
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustTimeline
|
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustTimeline
|
||||||
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustTimelineDiff
|
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustTimelineDiff
|
||||||
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustTimelineItem
|
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustTimelineItem
|
||||||
|
|
@ -94,7 +94,7 @@ class TimelineItemsSubscriberTest {
|
||||||
listOf(
|
listOf(
|
||||||
FakeRustTimelineDiff(
|
FakeRustTimelineDiff(
|
||||||
item = FakeRustTimelineItem(
|
item = FakeRustTimelineItem(
|
||||||
asEventResult = FakeRustEventTimelineItem(origin = EventItemOrigin.SYNC)
|
asEventResult = aRustEventTimelineItem(origin = EventItemOrigin.SYNC),
|
||||||
),
|
),
|
||||||
change = TimelineChange.RESET,
|
change = TimelineChange.RESET,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue