Skip to content

Commit 93da8d4

Browse files
committed
Add test on AdvancedSettingsPresenterTest
1 parent 32f4141 commit 93da8d4

File tree

2 files changed

+79
-0
lines changed

2 files changed

+79
-0
lines changed

features/preferences/impl/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ dependencies {
6767
testImplementation(libs.test.turbine)
6868
testImplementation(projects.libraries.matrix.test)
6969
testImplementation(projects.libraries.featureflag.test)
70+
testImplementation(projects.libraries.preferences.test)
7071
testImplementation(projects.features.rageshake.test)
7172
testImplementation(projects.features.rageshake.impl)
7273
testImplementation(projects.features.logout.impl)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/*
2+
* Copyright (c) 2023 New Vector Ltd
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package io.element.android.features.preferences.impl.advanced
18+
19+
import app.cash.molecule.RecompositionMode
20+
import app.cash.molecule.moleculeFlow
21+
import app.cash.turbine.test
22+
import com.google.common.truth.Truth.assertThat
23+
import io.element.android.libraries.featureflag.test.InMemoryPreferencesStore
24+
import io.element.android.tests.testutils.WarmUpRule
25+
import kotlinx.coroutines.test.runTest
26+
import org.junit.Rule
27+
import org.junit.Test
28+
29+
class AdvancedSettingsPresenterTest {
30+
31+
@get:Rule
32+
val warmUpRule = WarmUpRule()
33+
34+
@Test
35+
fun `present - initial state`() = runTest {
36+
val store = InMemoryPreferencesStore()
37+
val presenter = AdvancedSettingsPresenter(store)
38+
moleculeFlow(RecompositionMode.Immediate) {
39+
presenter.present()
40+
}.test {
41+
val initialState = awaitItem()
42+
assertThat(initialState.isDeveloperModeEnabled).isFalse()
43+
assertThat(initialState.isRichTextEditorEnabled).isFalse()
44+
}
45+
}
46+
47+
@Test
48+
fun `present - developer mode on off`() = runTest {
49+
val store = InMemoryPreferencesStore()
50+
val presenter = AdvancedSettingsPresenter(store)
51+
moleculeFlow(RecompositionMode.Immediate) {
52+
presenter.present()
53+
}.test {
54+
val initialState = awaitItem()
55+
assertThat(initialState.isDeveloperModeEnabled).isFalse()
56+
initialState.eventSink.invoke(AdvancedSettingsEvents.SetDeveloperModeEnabled(true))
57+
assertThat(awaitItem().isDeveloperModeEnabled).isTrue()
58+
initialState.eventSink.invoke(AdvancedSettingsEvents.SetDeveloperModeEnabled(false))
59+
assertThat(awaitItem().isDeveloperModeEnabled).isFalse()
60+
}
61+
}
62+
63+
@Test
64+
fun `present - rich text editor on off`() = runTest {
65+
val store = InMemoryPreferencesStore()
66+
val presenter = AdvancedSettingsPresenter(store)
67+
moleculeFlow(RecompositionMode.Immediate) {
68+
presenter.present()
69+
}.test {
70+
val initialState = awaitItem()
71+
assertThat(initialState.isRichTextEditorEnabled).isFalse()
72+
initialState.eventSink.invoke(AdvancedSettingsEvents.SetRichTextEditorEnabled(true))
73+
assertThat(awaitItem().isRichTextEditorEnabled).isTrue()
74+
initialState.eventSink.invoke(AdvancedSettingsEvents.SetRichTextEditorEnabled(false))
75+
assertThat(awaitItem().isRichTextEditorEnabled).isFalse()
76+
}
77+
}
78+
}

0 commit comments

Comments
 (0)