Skip to content

Commit f209eb2

Browse files
committed
Add test on RustNotificationSettingsService
1 parent 6fa585f commit f209eb2

File tree

3 files changed

+73
-1
lines changed

3 files changed

+73
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*
2+
* Copyright 2024 New Vector Ltd.
3+
*
4+
* SPDX-License-Identifier: AGPL-3.0-only
5+
* Please see LICENSE in the repository root for full details.
6+
*/
7+
8+
package io.element.android.libraries.matrix.impl.fixtures.factories
9+
10+
import org.matrix.rustcomponents.sdk.RoomNotificationMode
11+
import org.matrix.rustcomponents.sdk.RoomNotificationSettings
12+
13+
fun aRustRoomNotificationSettings(
14+
mode: RoomNotificationMode = RoomNotificationMode.ALL_MESSAGES,
15+
isDefault: Boolean = true,
16+
) = RoomNotificationSettings(
17+
mode = mode,
18+
isDefault = isDefault
19+
)

libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustNotificationSettings.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,25 @@
77

88
package io.element.android.libraries.matrix.impl.fixtures.fakes
99

10+
import io.element.android.libraries.matrix.impl.fixtures.factories.aRustRoomNotificationSettings
1011
import org.matrix.rustcomponents.sdk.NoPointer
1112
import org.matrix.rustcomponents.sdk.NotificationSettings
1213
import org.matrix.rustcomponents.sdk.NotificationSettingsDelegate
14+
import org.matrix.rustcomponents.sdk.RoomNotificationSettings
1315

14-
class FakeRustNotificationSettings : NotificationSettings(NoPointer) {
16+
class FakeRustNotificationSettings(
17+
private val roomNotificationSettings: RoomNotificationSettings = aRustRoomNotificationSettings(),
18+
) : NotificationSettings(NoPointer) {
1519
private var delegate: NotificationSettingsDelegate? = null
1620

1721
override fun setDelegate(delegate: NotificationSettingsDelegate?) {
1822
this.delegate = delegate
1923
}
24+
25+
override suspend fun getRoomNotificationSettings(
26+
roomId: String,
27+
isEncrypted: Boolean,
28+
isOneToOne: Boolean,
29+
): RoomNotificationSettings = roomNotificationSettings
2030
}
31+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
* Copyright 2024 New Vector Ltd.
3+
*
4+
* SPDX-License-Identifier: AGPL-3.0-only
5+
* Please see LICENSE in the repository root for full details.
6+
*/
7+
8+
package io.element.android.libraries.matrix.impl.notificationsettings
9+
10+
import com.google.common.truth.Truth.assertThat
11+
import io.element.android.libraries.matrix.api.room.RoomNotificationMode
12+
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustClient
13+
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustNotificationSettings
14+
import io.element.android.libraries.matrix.test.A_ROOM_ID
15+
import io.element.android.tests.testutils.testCoroutineDispatchers
16+
import kotlinx.coroutines.test.TestScope
17+
import kotlinx.coroutines.test.runTest
18+
import org.junit.Test
19+
import org.matrix.rustcomponents.sdk.NotificationSettings
20+
21+
class RustNotificationSettingsServiceTest {
22+
@Test
23+
fun test() = runTest {
24+
val sut = createRustNotificationSettingsService()
25+
val result = sut.getRoomNotificationSettings(
26+
roomId = A_ROOM_ID,
27+
isEncrypted = true,
28+
isOneToOne = true,
29+
).getOrNull()!!
30+
assertThat(result.mode).isEqualTo(RoomNotificationMode.ALL_MESSAGES)
31+
assertThat(result.isDefault).isTrue()
32+
}
33+
34+
private fun TestScope.createRustNotificationSettingsService(
35+
notificationSettings: NotificationSettings = FakeRustNotificationSettings(),
36+
) = RustNotificationSettingsService(
37+
client = FakeRustClient(
38+
notificationSettings = notificationSettings,
39+
),
40+
dispatchers = testCoroutineDispatchers(),
41+
)
42+
}

0 commit comments

Comments
 (0)