@@ -11,9 +11,19 @@ package io.element.android.libraries.troubleshoot.impl.history
11
11
12
12
import com.google.common.truth.Truth.assertThat
13
13
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
14
22
import io.element.android.libraries.push.api.PushService
15
23
import io.element.android.libraries.push.test.FakePushService
24
+ import io.element.android.tests.testutils.lambda.lambdaError
16
25
import io.element.android.tests.testutils.lambda.lambdaRecorder
26
+ import io.element.android.tests.testutils.lambda.value
17
27
import io.element.android.tests.testutils.test
18
28
import kotlinx.coroutines.ExperimentalCoroutinesApi
19
29
import kotlinx.coroutines.test.runTest
@@ -29,6 +39,7 @@ class PushHistoryPresenterTest {
29
39
assertThat(initialState.pushHistoryItems).isEmpty()
30
40
assertThat(initialState.showOnlyErrors).isFalse()
31
41
assertThat(initialState.resetAction).isEqualTo(AsyncAction .Uninitialized )
42
+ assertThat(initialState.showNotSameAccountError).isFalse()
32
43
}
33
44
}
34
45
@@ -119,11 +130,57 @@ class PushHistoryPresenterTest {
119
130
}
120
131
}
121
132
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
+
122
175
private fun createPushHistoryPresenter (
176
+ pushHistoryNavigator : PushHistoryNavigator = PushHistoryNavigator { _, _ -> lambdaError() },
123
177
pushService : PushService = FakePushService (),
178
+ matrixClient : MatrixClient = FakeMatrixClient (),
124
179
): PushHistoryPresenter {
125
180
return PushHistoryPresenter (
181
+ pushHistoryNavigator = pushHistoryNavigator,
126
182
pushService = pushService,
183
+ matrixClient = matrixClient,
127
184
)
128
185
}
129
186
}
0 commit comments