@@ -14,15 +14,12 @@ import io.element.android.features.space.api.SpaceEntryPoint
14
14
import io.element.android.libraries.architecture.AsyncAction
15
15
import io.element.android.libraries.architecture.AsyncData
16
16
import io.element.android.libraries.matrix.api.MatrixClient
17
- import io.element.android.libraries.matrix.test.AN_EXCEPTION
18
17
import io.element.android.libraries.matrix.test.A_ROOM_ID
19
18
import io.element.android.libraries.matrix.test.A_SPACE_NAME
20
19
import io.element.android.libraries.matrix.test.FakeMatrixClient
21
- import io.element.android.libraries.matrix.test.room.FakeBaseRoom
22
20
import io.element.android.libraries.matrix.test.spaces.FakeSpaceRoomList
23
21
import io.element.android.libraries.matrix.test.spaces.FakeSpaceService
24
22
import io.element.android.libraries.previewutils.room.aSpaceRoom
25
- import io.element.android.tests.testutils.lambda.lambdaRecorder
26
23
import io.element.android.tests.testutils.test
27
24
import kotlinx.coroutines.ExperimentalCoroutinesApi
28
25
import kotlinx.coroutines.test.advanceUntilIdle
@@ -32,27 +29,21 @@ import org.junit.Test
32
29
class LeaveSpacePresenterTest {
33
30
@Test
34
31
fun `present - initial state` () = runTest {
35
- val paginateResult = lambdaRecorder<Result <Unit >> {
36
- Result .success(Unit )
37
- }
38
32
val presenter = createLeaveSpacePresenter(
39
33
matrixClient = FakeMatrixClient (
40
34
spaceService = FakeSpaceService (
41
35
spaceRoomListResult = {
42
- FakeSpaceRoomList (
43
- paginateResult = paginateResult,
44
- )
36
+ FakeSpaceRoomList ()
45
37
},
46
38
),
47
39
),
48
40
)
49
41
presenter.test {
50
42
val state = awaitItem()
51
43
assertThat(state.spaceName).isNull()
52
- assertThat(state.selectableSpaceRooms).isEqualTo(AsyncAction .Uninitialized )
44
+ assertThat(state.selectableSpaceRooms).isEqualTo(AsyncData .Uninitialized )
53
45
assertThat(state.leaveSpaceAction).isEqualTo(AsyncAction .Uninitialized )
54
- advanceUntilIdle()
55
- paginateResult.assertions().isCalledOnce()
46
+ skipItems(1 )
56
47
}
57
48
}
58
49
@@ -74,133 +65,11 @@ class LeaveSpacePresenterTest {
74
65
name = A_SPACE_NAME
75
66
)
76
67
fakeSpaceRoomList.emitCurrentSpace(aSpace)
68
+ skipItems(1 )
77
69
assertThat(awaitItem().spaceName).isEqualTo(A_SPACE_NAME )
78
70
}
79
71
}
80
72
81
- @Test
82
- fun `present - leave space and cancel` () = runTest {
83
- val fakeSpaceRoomList = FakeSpaceRoomList (
84
- paginateResult = { Result .success(Unit ) },
85
- )
86
- val presenter = createLeaveSpacePresenter(
87
- matrixClient = FakeMatrixClient (
88
- spaceService = FakeSpaceService (
89
- spaceRoomListResult = { fakeSpaceRoomList },
90
- ),
91
- ),
92
- )
93
- presenter.test {
94
- val state = awaitItem()
95
- advanceUntilIdle()
96
- assertThat(state.leaveSpaceAction).isEqualTo(AsyncAction .Uninitialized )
97
- state.eventSink(LeaveSpaceEvents .LeaveSpace )
98
- val stateAfterStarting = awaitItem()
99
- assertThat(stateAfterStarting.leaveSpaceAction).isInstanceOf(LeaveSpaceState ::class .java)
100
- val shown = stateAfterStarting.leaveSpaceAction as LeaveSpaceState
101
- assertThat(shown.spaceName).isNull()
102
- assertThat(shown.selectableSpaceRooms).isInstanceOf(AsyncData .Loading ::class .java)
103
- val stateAfterLoading = awaitItem()
104
- val shownLoaded = stateAfterLoading.leaveSpaceAction as LeaveSpaceState
105
- assertThat(shownLoaded.selectableSpaceRooms.dataOrNull()!! ).isEmpty()
106
- stateAfterLoading.eventSink(LeaveSpaceEvents .CloseError )
107
- val stateAfterCancel = awaitItem()
108
- assertThat(stateAfterCancel.leaveSpaceAction).isEqualTo(AsyncAction .Uninitialized )
109
- }
110
- }
111
-
112
- @Test
113
- fun `present - leave space and confirm` () = runTest {
114
- val fakeSpaceRoomList = FakeSpaceRoomList (
115
- paginateResult = { Result .success(Unit ) },
116
- )
117
- val leaveRoomLambda = lambdaRecorder<Result <Unit >> {
118
- Result .success(Unit )
119
- }
120
- val presenter = createLeaveSpacePresenter(
121
- matrixClient = FakeMatrixClient (
122
- spaceService = FakeSpaceService (
123
- spaceRoomListResult = { fakeSpaceRoomList },
124
- ),
125
- ).apply {
126
- givenGetRoomResult(
127
- roomId = A_ROOM_ID ,
128
- result = FakeBaseRoom (
129
- leaveRoomLambda = leaveRoomLambda,
130
- )
131
- )
132
- },
133
- )
134
- presenter.test {
135
- val state = awaitItem()
136
- advanceUntilIdle()
137
- assertThat(state.leaveSpaceAction).isEqualTo(AsyncAction .Uninitialized )
138
- state.eventSink(LeaveSpaceEvents .LeaveSpace )
139
- val stateAfterStarting = awaitItem()
140
- assertThat(stateAfterStarting.leaveSpaceAction).isInstanceOf(LeaveSpaceState ::class .java)
141
- val shown = stateAfterStarting.leaveSpaceAction as LeaveSpaceState
142
- assertThat(shown.spaceName).isNull()
143
- assertThat(shown.selectableSpaceRooms).isInstanceOf(AsyncData .Loading ::class .java)
144
- val stateAfterLoading = awaitItem()
145
- val shownLoaded = stateAfterLoading.leaveSpaceAction as LeaveSpaceState
146
- assertThat(shownLoaded.selectableSpaceRooms.dataOrNull()!! ).isEmpty()
147
- stateAfterLoading.eventSink(LeaveSpaceEvents .LeaveSpace )
148
- val stateLoading = awaitItem()
149
- assertThat(stateLoading.leaveSpaceAction).isEqualTo(AsyncAction .Loading )
150
- val stateFinal = awaitItem()
151
- assertThat(stateFinal.leaveSpaceAction).isEqualTo(AsyncAction .Success (Unit ))
152
- leaveRoomLambda.assertions().isCalledOnce()
153
- }
154
- }
155
-
156
- @Test
157
- fun `present - leave space, confirm then failure` () = runTest {
158
- val fakeSpaceRoomList = FakeSpaceRoomList (
159
- paginateResult = { Result .success(Unit ) },
160
- )
161
- val leaveRoomLambda = lambdaRecorder<Result <Unit >> {
162
- Result .failure(AN_EXCEPTION )
163
- }
164
- val presenter = createLeaveSpacePresenter(
165
- matrixClient = FakeMatrixClient (
166
- spaceService = FakeSpaceService (
167
- spaceRoomListResult = { fakeSpaceRoomList },
168
- ),
169
- ).apply {
170
- givenGetRoomResult(
171
- roomId = A_ROOM_ID ,
172
- result = FakeBaseRoom (
173
- leaveRoomLambda = leaveRoomLambda,
174
- )
175
- )
176
- },
177
- )
178
- presenter.test {
179
- val state = awaitItem()
180
- advanceUntilIdle()
181
- assertThat(state.leaveSpaceAction).isEqualTo(AsyncAction .Uninitialized )
182
- state.eventSink(LeaveSpaceEvents .LeaveSpace )
183
- val stateAfterStarting = awaitItem()
184
- assertThat(stateAfterStarting.leaveSpaceAction).isInstanceOf(LeaveSpaceState ::class .java)
185
- val shown = stateAfterStarting.leaveSpaceAction as LeaveSpaceState
186
- assertThat(shown.spaceName).isNull()
187
- assertThat(shown.selectableSpaceRooms).isInstanceOf(AsyncData .Loading ::class .java)
188
- val stateAfterLoading = awaitItem()
189
- val shownLoaded = stateAfterLoading.leaveSpaceAction as LeaveSpaceState
190
- assertThat(shownLoaded.selectableSpaceRooms.dataOrNull()!! ).isEmpty()
191
- stateAfterLoading.eventSink(LeaveSpaceEvents .LeaveSpace )
192
- val stateLoading = awaitItem()
193
- assertThat(stateLoading.leaveSpaceAction).isEqualTo(AsyncAction .Loading )
194
- val stateError = awaitItem()
195
- assertThat(stateError.leaveSpaceAction).isEqualTo(AsyncAction .Failure (AN_EXCEPTION ))
196
- leaveRoomLambda.assertions().isCalledOnce()
197
- // Close error
198
- stateError.eventSink(LeaveSpaceEvents .CloseError )
199
- val stateFinal = awaitItem()
200
- assertThat(stateFinal.leaveSpaceAction).isEqualTo(AsyncAction .Uninitialized )
201
- }
202
- }
203
-
204
73
private fun createLeaveSpacePresenter (
205
74
inputs : SpaceEntryPoint .Inputs = SpaceEntryPoint .Inputs (A_ROOM_ID ),
206
75
matrixClient : MatrixClient = FakeMatrixClient (),
0 commit comments