18
18
package com.wire.android.ui.home
19
19
20
20
import androidx.lifecycle.SavedStateHandle
21
+ import app.cash.turbine.test
21
22
import com.wire.android.config.CoroutineTestExtension
22
23
import com.wire.android.datastore.GlobalDataStore
23
24
import com.wire.android.datastore.UserDataStore
@@ -33,8 +34,6 @@ import com.wire.kalium.logic.feature.user.ObserveSelfUserUseCase
33
34
import io.mockk.MockKAnnotations
34
35
import io.mockk.coEvery
35
36
import io.mockk.impl.annotations.MockK
36
- import io.mockk.impl.annotations.RelaxedMockK
37
- import io.mockk.verify
38
37
import kotlinx.coroutines.ExperimentalCoroutinesApi
39
38
import kotlinx.coroutines.flow.Flow
40
39
import kotlinx.coroutines.flow.MutableStateFlow
@@ -102,11 +101,13 @@ class HomeViewModelTest {
102
101
val (arrangement, viewModel)= Arrangement ()
103
102
.withShouldTriggerMigrationForUserReturning(true )
104
103
.arrange()
105
- // when
106
- viewModel.checkRequirements(arrangement.onRequirement)
107
- advanceUntilIdle()
108
- // then
109
- verify { arrangement.onRequirement(HomeRequirement .Migration (TestUser .SELF_USER .id)) }
104
+ viewModel.actions.test {
105
+ // when
106
+ viewModel.checkRequirements()
107
+ advanceUntilIdle()
108
+ // then
109
+ assertEquals(HomeRequirement .Migration (TestUser .SELF_USER .id), expectMostRecentItem())
110
+ }
110
111
}
111
112
112
113
@Test
@@ -116,10 +117,12 @@ class HomeViewModelTest {
116
117
.withShouldTriggerMigrationForUserReturning(false )
117
118
.withNeedsToRegisterClientReturning(true )
118
119
.arrange()
119
- // when
120
- viewModel.checkRequirements(arrangement.onRequirement)
121
- // then
122
- verify { arrangement.onRequirement(HomeRequirement .RegisterDevice ) }
120
+ viewModel.actions.test {
121
+ // when
122
+ viewModel.checkRequirements()
123
+ // then
124
+ assertEquals(HomeRequirement .RegisterDevice , expectMostRecentItem())
125
+ }
123
126
}
124
127
125
128
@Test
@@ -130,10 +133,12 @@ class HomeViewModelTest {
130
133
.withNeedsToRegisterClientReturning(false )
131
134
.withInitialSyncCompletedReturning(flowOf(false ))
132
135
.arrange()
133
- // when
134
- viewModel.checkRequirements(arrangement.onRequirement)
135
- // then
136
- verify { arrangement.onRequirement(HomeRequirement .InitialSync ) }
136
+ viewModel.actions.test {
137
+ // when
138
+ viewModel.checkRequirements()
139
+ // then
140
+ assertEquals(HomeRequirement .InitialSync , expectMostRecentItem())
141
+ }
137
142
}
138
143
139
144
@Test
@@ -145,10 +150,12 @@ class HomeViewModelTest {
145
150
.withInitialSyncCompletedReturning(flowOf(true ))
146
151
.withSelfUser(flowOf(TestUser .SELF_USER .copy(handle= null )))
147
152
.arrange()
148
- // when
149
- viewModel.checkRequirements(arrangement.onRequirement)
150
- // then
151
- verify { arrangement.onRequirement(HomeRequirement .CreateAccountUsername ) }
153
+ viewModel.actions.test {
154
+ // when
155
+ viewModel.checkRequirements()
156
+ // then
157
+ assertEquals(HomeRequirement .CreateAccountUsername , expectMostRecentItem())
158
+ }
152
159
}
153
160
154
161
@Test
@@ -163,7 +170,7 @@ class HomeViewModelTest {
163
170
.withWelcomeScreenPresentedReturning(false )
164
171
.arrange()
165
172
// when
166
- viewModel.checkRequirements(arrangement.onRequirement )
173
+ viewModel.checkRequirements()
167
174
// then
168
175
assertEquals(true , viewModel.homeState.shouldDisplayWelcomeMessage)
169
176
}
@@ -180,7 +187,7 @@ class HomeViewModelTest {
180
187
.withWelcomeScreenPresentedReturning(true )
181
188
.arrange()
182
189
// when
183
- viewModel.checkRequirements(arrangement.onRequirement )
190
+ viewModel.checkRequirements()
184
191
// then
185
192
assertEquals(false , viewModel.homeState.shouldDisplayWelcomeMessage)
186
193
}
@@ -211,9 +218,6 @@ class HomeViewModelTest {
211
218
@MockK
212
219
lateinit var canMigrateFromPersonalToTeam: CanMigrateFromPersonalToTeamUseCase
213
220
214
- @RelaxedMockK
215
- lateinit var onRequirement: (HomeRequirement )-> Unit
216
-
217
221
private val viewModel by lazy {
218
222
HomeViewModel (
219
223
savedStateHandle= savedStateHandle,