Skip to content

Commit cca4c70

Browse files
committed
Fix tests
1 parent 4d66fb7 commit cca4c70

File tree

3 files changed

+67
-16
lines changed

3 files changed

+67
-16
lines changed

libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryPresenter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import kotlinx.collections.immutable.toImmutableList
2727
import kotlinx.coroutines.flow.map
2828
import kotlinx.coroutines.launch
2929

30-
interface PushHistoryNavigator {
30+
fun interface PushHistoryNavigator {
3131
fun navigateTo(roomId: RoomId, eventId: EventId)
3232
}
3333

libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryPresenterTest.kt

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,19 @@ package io.element.android.libraries.troubleshoot.impl.history
1111

1212
import com.google.common.truth.Truth.assertThat
1313
import io.element.android.libraries.architecture.AsyncAction
14+
import io.element.android.libraries.matrix.api.MatrixClient
15+
import io.element.android.libraries.matrix.api.core.EventId
16+
import io.element.android.libraries.matrix.api.core.RoomId
17+
import io.element.android.libraries.matrix.test.AN_EVENT_ID
18+
import io.element.android.libraries.matrix.test.A_ROOM_ID
19+
import io.element.android.libraries.matrix.test.A_SESSION_ID
20+
import io.element.android.libraries.matrix.test.A_SESSION_ID_2
21+
import io.element.android.libraries.matrix.test.FakeMatrixClient
1422
import io.element.android.libraries.push.api.PushService
1523
import io.element.android.libraries.push.test.FakePushService
24+
import io.element.android.tests.testutils.lambda.lambdaError
1625
import io.element.android.tests.testutils.lambda.lambdaRecorder
26+
import io.element.android.tests.testutils.lambda.value
1727
import io.element.android.tests.testutils.test
1828
import kotlinx.coroutines.ExperimentalCoroutinesApi
1929
import kotlinx.coroutines.test.runTest
@@ -29,6 +39,7 @@ class PushHistoryPresenterTest {
2939
assertThat(initialState.pushHistoryItems).isEmpty()
3040
assertThat(initialState.showOnlyErrors).isFalse()
3141
assertThat(initialState.resetAction).isEqualTo(AsyncAction.Uninitialized)
42+
assertThat(initialState.showNotSameAccountError).isFalse()
3243
}
3344
}
3445

@@ -119,11 +130,57 @@ class PushHistoryPresenterTest {
119130
}
120131
}
121132

133+
@Test
134+
fun `present - item click current account`() = runTest {
135+
val pushHistoryNavigatorResult = lambdaRecorder<RoomId, EventId, Unit> { _, _ -> }
136+
val presenter = createPushHistoryPresenter(
137+
pushHistoryNavigator = { roomId, eventId ->
138+
pushHistoryNavigatorResult(roomId, eventId)
139+
}
140+
)
141+
presenter.test {
142+
val initialState = awaitItem()
143+
initialState.eventSink(
144+
PushHistoryEvents.NavigateTo(
145+
sessionId = A_SESSION_ID,
146+
roomId = A_ROOM_ID,
147+
eventId = AN_EVENT_ID,
148+
)
149+
)
150+
pushHistoryNavigatorResult.assertions()
151+
.isCalledOnce()
152+
.with(value(A_ROOM_ID), value(AN_EVENT_ID))
153+
}
154+
}
155+
156+
@Test
157+
fun `present - item click not current account`() = runTest {
158+
val presenter = createPushHistoryPresenter()
159+
presenter.test {
160+
val initialState = awaitItem()
161+
initialState.eventSink(
162+
PushHistoryEvents.NavigateTo(
163+
sessionId = A_SESSION_ID_2,
164+
roomId = A_ROOM_ID,
165+
eventId = AN_EVENT_ID,
166+
)
167+
)
168+
assertThat(awaitItem().showNotSameAccountError).isTrue()
169+
// Reset error
170+
initialState.eventSink(PushHistoryEvents.ClearDialog)
171+
assertThat(awaitItem().showNotSameAccountError).isFalse()
172+
}
173+
}
174+
122175
private fun createPushHistoryPresenter(
176+
pushHistoryNavigator: PushHistoryNavigator = PushHistoryNavigator { _, _ -> lambdaError() },
123177
pushService: PushService = FakePushService(),
178+
matrixClient: MatrixClient = FakeMatrixClient(),
124179
): PushHistoryPresenter {
125180
return PushHistoryPresenter(
181+
pushHistoryNavigator = pushHistoryNavigator,
126182
pushService = pushService,
183+
matrixClient = matrixClient,
127184
)
128185
}
129186
}

libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryViewTest.kt

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,14 @@ import androidx.compose.ui.test.onNodeWithContentDescription
1414
import androidx.compose.ui.test.onNodeWithText
1515
import androidx.compose.ui.test.performClick
1616
import androidx.test.ext.junit.runners.AndroidJUnit4
17-
import io.element.android.libraries.matrix.api.core.EventId
18-
import io.element.android.libraries.matrix.api.core.RoomId
19-
import io.element.android.libraries.matrix.api.core.SessionId
2017
import io.element.android.libraries.matrix.test.AN_EVENT_ID
2118
import io.element.android.libraries.matrix.test.A_FORMATTED_DATE
2219
import io.element.android.libraries.matrix.test.A_ROOM_ID
2320
import io.element.android.libraries.matrix.test.A_SESSION_ID
2421
import io.element.android.libraries.ui.strings.CommonStrings
2522
import io.element.android.tests.testutils.EnsureNeverCalled
26-
import io.element.android.tests.testutils.EnsureNeverCalledWithThreeParams
2723
import io.element.android.tests.testutils.EventsRecorder
2824
import io.element.android.tests.testutils.clickOn
29-
import io.element.android.tests.testutils.lambda.lambdaRecorder
30-
import io.element.android.tests.testutils.lambda.value
3125
import org.junit.Rule
3226
import org.junit.Test
3327
import org.junit.rules.TestRule
@@ -103,9 +97,8 @@ class PushHistoryViewTest {
10397
}
10498

10599
@Test
106-
fun `clicking on a valid event invokes the expected callback`() {
107-
val eventsRecorder = EventsRecorder<PushHistoryEvents>(expectEvents = false)
108-
val onItemClick = lambdaRecorder<SessionId, RoomId, EventId, Unit> { _, _, _ -> }
100+
fun `clicking on a valid event emits the expected Event`() {
101+
val eventsRecorder = EventsRecorder<PushHistoryEvents>()
109102
rule.setPushHistoryView(
110103
aPushHistoryState(
111104
pushHistoryItems = listOf(
@@ -118,25 +111,26 @@ class PushHistoryViewTest {
118111
),
119112
eventSink = eventsRecorder,
120113
),
121-
onItemClick = onItemClick,
122114
)
123115
rule.onNodeWithText(A_FORMATTED_DATE).performClick()
124-
onItemClick.assertions()
125-
.isCalledOnce()
126-
.with(value(A_SESSION_ID), value(A_ROOM_ID), value(AN_EVENT_ID))
116+
eventsRecorder.assertSingle(
117+
PushHistoryEvents.NavigateTo(
118+
sessionId = A_SESSION_ID,
119+
roomId = A_ROOM_ID,
120+
eventId = AN_EVENT_ID,
121+
)
122+
)
127123
}
128124
}
129125

130126
private fun <R : TestRule> AndroidComposeTestRule<R, ComponentActivity>.setPushHistoryView(
131127
state: PushHistoryState,
132128
onBackClick: () -> Unit = EnsureNeverCalled(),
133-
onItemClick: (SessionId, RoomId, EventId) -> Unit = EnsureNeverCalledWithThreeParams(),
134129
) {
135130
setContent {
136131
PushHistoryView(
137132
state = state,
138133
onBackClick = onBackClick,
139-
onItemClick = onItemClick,
140134
)
141135
}
142136
}

0 commit comments

Comments
 (0)