Skip to content

Commit b60d7ba

Browse files
committed
Use backgroundScope
1 parent 792bc25 commit b60d7ba

File tree

3 files changed

+20
-99
lines changed

3 files changed

+20
-99
lines changed

features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueServiceTest.kt

Lines changed: 12 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,19 @@ import io.element.android.features.ftue.impl.state.DefaultFtueService
1515
import io.element.android.features.ftue.impl.state.FtueStep
1616
import io.element.android.features.lockscreen.api.LockScreenService
1717
import io.element.android.features.lockscreen.test.FakeLockScreenService
18+
import io.element.android.libraries.matrix.api.verification.SessionVerificationService
1819
import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus
1920
import io.element.android.libraries.matrix.test.verification.FakeSessionVerificationService
21+
import io.element.android.libraries.permissions.api.PermissionStateProvider
2022
import io.element.android.libraries.permissions.impl.FakePermissionStateProvider
23+
import io.element.android.libraries.preferences.api.store.SessionPreferencesStore
2124
import io.element.android.libraries.preferences.test.InMemorySessionPreferencesStore
2225
import io.element.android.services.analytics.api.AnalyticsService
2326
import io.element.android.services.analytics.test.FakeAnalyticsService
2427
import io.element.android.services.toolbox.test.sdk.FakeBuildVersionSdkIntProvider
2528
import io.element.android.tests.testutils.lambda.lambdaRecorder
2629
import io.element.android.tests.testutils.lambda.value
27-
import kotlinx.coroutines.CoroutineScope
28-
import kotlinx.coroutines.SupervisorJob
29-
import kotlinx.coroutines.cancel
30+
import kotlinx.coroutines.test.TestScope
3031
import kotlinx.coroutines.test.runTest
3132
import org.junit.Test
3233

@@ -36,8 +37,9 @@ class DefaultFtueServiceTest {
3637
val sessionVerificationService = FakeSessionVerificationService().apply {
3738
givenVerifiedStatus(SessionVerifiedStatus.Unknown)
3839
}
39-
val coroutineScope = CoroutineScope(coroutineContext + SupervisorJob())
40-
val service = createDefaultFtueService(coroutineScope, sessionVerificationService)
40+
val service = createDefaultFtueService(
41+
sessionVerificationService = sessionVerificationService,
42+
)
4143

4244
service.state.test {
4345
// Verification state is unknown, we don't display the flow yet
@@ -47,9 +49,6 @@ class DefaultFtueServiceTest {
4749
sessionVerificationService.givenVerifiedStatus(SessionVerifiedStatus.NotVerified)
4850
assertThat(awaitItem()).isEqualTo(FtueState.Incomplete)
4951
}
50-
51-
// Cleanup
52-
coroutineScope.cancel()
5352
}
5453

5554
@Test
@@ -58,10 +57,7 @@ class DefaultFtueServiceTest {
5857
val sessionVerificationService = FakeSessionVerificationService()
5958
val permissionStateProvider = FakePermissionStateProvider(permissionGranted = true)
6059
val lockScreenService = FakeLockScreenService()
61-
val coroutineScope = CoroutineScope(coroutineContext + SupervisorJob())
62-
6360
val service = createDefaultFtueService(
64-
coroutineScope = coroutineScope,
6561
sessionVerificationService = sessionVerificationService,
6662
analyticsService = analyticsService,
6763
permissionStateProvider = permissionStateProvider,
@@ -75,9 +71,6 @@ class DefaultFtueServiceTest {
7571
service.updateState()
7672

7773
assertThat(service.state.value).isEqualTo(FtueState.Complete)
78-
79-
// Cleanup
80-
coroutineScope.cancel()
8174
}
8275

8376
@Test
@@ -88,10 +81,7 @@ class DefaultFtueServiceTest {
8881
val analyticsService = FakeAnalyticsService()
8982
val permissionStateProvider = FakePermissionStateProvider(permissionGranted = false)
9083
val lockScreenService = FakeLockScreenService()
91-
val coroutineScope = CoroutineScope(coroutineContext + SupervisorJob())
92-
9384
val service = createDefaultFtueService(
94-
coroutineScope = coroutineScope,
9585
sessionVerificationService = sessionVerificationService,
9686
analyticsService = analyticsService,
9787
permissionStateProvider = permissionStateProvider,
@@ -126,20 +116,15 @@ class DefaultFtueServiceTest {
126116
// Final state
127117
null,
128118
)
129-
130-
// Cleanup
131-
coroutineScope.cancel()
132119
}
133120

134121
@Test
135122
fun `if a check for a step is true, start from the next one`() = runTest {
136-
val coroutineScope = CoroutineScope(coroutineContext + SupervisorJob())
137123
val sessionVerificationService = FakeSessionVerificationService()
138124
val analyticsService = FakeAnalyticsService()
139125
val permissionStateProvider = FakePermissionStateProvider(permissionGranted = false)
140126
val lockScreenService = FakeLockScreenService()
141127
val service = createDefaultFtueService(
142-
coroutineScope = coroutineScope,
143128
sessionVerificationService = sessionVerificationService,
144129
analyticsService = analyticsService,
145130
permissionStateProvider = permissionStateProvider,
@@ -155,22 +140,17 @@ class DefaultFtueServiceTest {
155140

156141
analyticsService.setDidAskUserConsent()
157142
assertThat(service.getNextStep(null)).isNull()
158-
159-
// Cleanup
160-
coroutineScope.cancel()
161143
}
162144

163145
@Test
164146
fun `if version is older than 13 we don't display the notification opt in screen`() = runTest {
165-
val coroutineScope = CoroutineScope(coroutineContext + SupervisorJob())
166147
val sessionVerificationService = FakeSessionVerificationService()
167148
val analyticsService = FakeAnalyticsService()
168149
val lockScreenService = FakeLockScreenService()
169150

170151
val service = createDefaultFtueService(
171152
sdkIntVersion = Build.VERSION_CODES.M,
172153
sessionVerificationService = sessionVerificationService,
173-
coroutineScope = coroutineScope,
174154
analyticsService = analyticsService,
175155
lockScreenService = lockScreenService,
176156
)
@@ -182,14 +162,10 @@ class DefaultFtueServiceTest {
182162

183163
analyticsService.setDidAskUserConsent()
184164
assertThat(service.getNextStep(null)).isNull()
185-
186-
// Cleanup
187-
coroutineScope.cancel()
188165
}
189166

190167
@Test
191168
fun `reset do the expected actions S`() = runTest {
192-
val coroutineScope = CoroutineScope(coroutineContext + SupervisorJob())
193169
val resetAnalyticsLambda = lambdaRecorder<Unit> { }
194170
val analyticsService = FakeAnalyticsService(
195171
resetLambda = resetAnalyticsLambda
@@ -199,7 +175,6 @@ class DefaultFtueServiceTest {
199175
resetPermissionLambda = resetPermissionLambda
200176
)
201177
val service = createDefaultFtueService(
202-
coroutineScope = coroutineScope,
203178
sdkIntVersion = Build.VERSION_CODES.S,
204179
permissionStateProvider = permissionStateProvider,
205180
analyticsService = analyticsService,
@@ -211,7 +186,6 @@ class DefaultFtueServiceTest {
211186

212187
@Test
213188
fun `reset do the expected actions TIRAMISU`() = runTest {
214-
val coroutineScope = CoroutineScope(coroutineContext + SupervisorJob())
215189
val resetLambda = lambdaRecorder<Unit> { }
216190
val analyticsService = FakeAnalyticsService(
217191
resetLambda = resetLambda
@@ -221,7 +195,6 @@ class DefaultFtueServiceTest {
221195
resetPermissionLambda = resetPermissionLambda
222196
)
223197
val service = createDefaultFtueService(
224-
coroutineScope = coroutineScope,
225198
sdkIntVersion = Build.VERSION_CODES.TIRAMISU,
226199
permissionStateProvider = permissionStateProvider,
227200
analyticsService = analyticsService,
@@ -232,17 +205,16 @@ class DefaultFtueServiceTest {
232205
.with(value("android.permission.POST_NOTIFICATIONS"))
233206
}
234207

235-
private fun createDefaultFtueService(
236-
coroutineScope: CoroutineScope,
237-
sessionVerificationService: FakeSessionVerificationService = FakeSessionVerificationService(),
208+
private fun TestScope.createDefaultFtueService(
209+
sessionVerificationService: SessionVerificationService = FakeSessionVerificationService(),
238210
analyticsService: AnalyticsService = FakeAnalyticsService(),
239-
permissionStateProvider: FakePermissionStateProvider = FakePermissionStateProvider(permissionGranted = false),
211+
permissionStateProvider: PermissionStateProvider = FakePermissionStateProvider(permissionGranted = false),
240212
lockScreenService: LockScreenService = FakeLockScreenService(),
241-
sessionPreferencesStore: InMemorySessionPreferencesStore = InMemorySessionPreferencesStore(),
213+
sessionPreferencesStore: SessionPreferencesStore = InMemorySessionPreferencesStore(),
242214
// First version where notification permission is required
243215
sdkIntVersion: Int = Build.VERSION_CODES.TIRAMISU,
244216
) = DefaultFtueService(
245-
sessionCoroutineScope = coroutineScope,
217+
sessionCoroutineScope = backgroundScope,
246218
sessionVerificationService = sessionVerificationService,
247219
sdkVersionProvider = FakeBuildVersionSdkIntProvider(sdkIntVersion),
248220
analyticsService = analyticsService,

0 commit comments

Comments
 (0)