Skip to content

Commit 470e8ff

Browse files
committed
Add UI test on AddPeopleView
1 parent 15f3f0e commit 470e8ff

File tree

2 files changed

+100
-0
lines changed

2 files changed

+100
-0
lines changed

features/createroom/impl/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ dependencies {
6969
testImplementation(projects.libraries.usersearch.test)
7070
testImplementation(projects.features.createroom.test)
7171
testImplementation(projects.tests.testutils)
72+
testImplementation(libs.androidx.compose.ui.test.junit)
73+
testReleaseImplementation(libs.androidx.compose.ui.test.manifest)
7274

7375
ksp(libs.showkase.processor)
7476
}
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
/*
2+
* Copyright (c) 2024 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.createroom.impl.addpeople
18+
19+
import androidx.activity.ComponentActivity
20+
import androidx.compose.ui.test.junit4.AndroidComposeTestRule
21+
import androidx.compose.ui.test.junit4.createAndroidComposeRule
22+
import androidx.test.ext.junit.runners.AndroidJUnit4
23+
import io.element.android.features.createroom.impl.userlist.UserListEvents
24+
import io.element.android.features.createroom.impl.userlist.UserListState
25+
import io.element.android.features.createroom.impl.userlist.aUserListState
26+
import io.element.android.libraries.ui.strings.CommonStrings
27+
import io.element.android.tests.testutils.EnsureNeverCalled
28+
import io.element.android.tests.testutils.EventsRecorder
29+
import io.element.android.tests.testutils.clickOn
30+
import io.element.android.tests.testutils.ensureCalledOnce
31+
import io.element.android.tests.testutils.pressBack
32+
import org.junit.Rule
33+
import org.junit.Test
34+
import org.junit.rules.TestRule
35+
import org.junit.runner.RunWith
36+
37+
@RunWith(AndroidJUnit4::class)
38+
class AddPeopleViewTest {
39+
@get:Rule
40+
val rule = createAndroidComposeRule<ComponentActivity>()
41+
42+
@Test
43+
fun `clicking on back invokes the expected callback`() {
44+
val eventsRecorder = EventsRecorder<UserListEvents>()
45+
ensureCalledOnce {
46+
rule.setAddPeopleView(
47+
aUserListState(
48+
eventSink = eventsRecorder,
49+
),
50+
onBackPressed = it
51+
)
52+
rule.pressBack()
53+
}
54+
eventsRecorder.assertSingle(UserListEvents.UpdateSearchQuery(""))
55+
}
56+
57+
@Test
58+
fun `clicking on back during search emits the expected Event`() {
59+
val eventsRecorder = EventsRecorder<UserListEvents>()
60+
rule.setAddPeopleView(
61+
aUserListState(
62+
isSearchActive = true,
63+
eventSink = eventsRecorder,
64+
),
65+
)
66+
rule.pressBack()
67+
eventsRecorder.assertSingle(UserListEvents.OnSearchActiveChanged(false))
68+
}
69+
70+
@Test
71+
fun `clicking on skip invokes the expected callback`() {
72+
val eventsRecorder = EventsRecorder<UserListEvents>()
73+
ensureCalledOnce {
74+
rule.setAddPeopleView(
75+
aUserListState(
76+
eventSink = eventsRecorder,
77+
),
78+
onNextPressed = it
79+
)
80+
rule.clickOn(CommonStrings.action_skip)
81+
}
82+
eventsRecorder.assertSingle(UserListEvents.UpdateSearchQuery(""))
83+
}
84+
}
85+
86+
private fun <R : TestRule> AndroidComposeTestRule<R, ComponentActivity>.setAddPeopleView(
87+
state: UserListState,
88+
onBackPressed: () -> Unit = EnsureNeverCalled(),
89+
onNextPressed: () -> Unit = EnsureNeverCalled(),
90+
) {
91+
setContent {
92+
AddPeopleView(
93+
state = state,
94+
onBackPressed = onBackPressed,
95+
onNextPressed = onNextPressed,
96+
)
97+
}
98+
}

0 commit comments

Comments
 (0)