Skip to content

Commit 0772b15

Browse files
committed
feat(domain-provider): improve error handling and implement backup feature on update interactor
1 parent dcd97a5 commit 0772b15

File tree

8 files changed

+419
-217
lines changed

8 files changed

+419
-217
lines changed

domain/provider/src/androidTest/kotlin/com/flixclusive/domain/provider/usecase/manage/impl/InitializeProvidersUseCaseImplTest.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class InitializeProvidersUseCaseImplTest {
6868
mockDataStoreManager.updateUserPrefs(
6969
UserPreferences.PROVIDER_PREFS_KEY,
7070
ProviderPreferences::class,
71-
any()
71+
any(),
7272
)
7373
} returns Unit
7474
}
@@ -106,7 +106,7 @@ class InitializeProvidersUseCaseImplTest {
106106
)
107107

108108
val preferencesWithProvider = ProviderPreferences(
109-
providers = listOf(providerFromPrefs)
109+
providers = listOf(providerFromPrefs),
110110
)
111111

112112
coEvery {
@@ -137,7 +137,7 @@ class InitializeProvidersUseCaseImplTest {
137137
)
138138

139139
val preferencesWithProvider = ProviderPreferences(
140-
providers = listOf(providerFromPrefs)
140+
providers = listOf(providerFromPrefs),
141141
)
142142

143143
coEvery {
@@ -198,7 +198,7 @@ class InitializeProvidersUseCaseImplTest {
198198
)
199199

200200
val preferencesWithProviders = ProviderPreferences(
201-
providers = listOf(provider1, provider2)
201+
providers = listOf(provider1, provider2),
202202
)
203203

204204
coEvery {
@@ -244,7 +244,7 @@ class InitializeProvidersUseCaseImplTest {
244244
)
245245

246246
val preferencesWithProvider = ProviderPreferences(
247-
providers = listOf(providerFromPrefs)
247+
providers = listOf(providerFromPrefs),
248248
)
249249

250250
coEvery {
@@ -254,7 +254,7 @@ class InitializeProvidersUseCaseImplTest {
254254
val failure = LoadProviderResult.Failure(
255255
provider = testProviderMetadata,
256256
filePath = dummyProviderFile.absolutePath,
257-
error = RuntimeException("Test error")
257+
error = RuntimeException("Test error"),
258258
)
259259

260260
coEvery {
@@ -291,7 +291,7 @@ class InitializeProvidersUseCaseImplTest {
291291
// Create updater.json for debug provider using Kotlin serialization
292292
val debugMetadata = testProviderMetadata.copy(
293293
id = testProviderMetadata.id,
294-
name = testProviderMetadata.name
294+
name = testProviderMetadata.name,
295295
)
296296

297297
debugUpdaterFile.writeText(Json.encodeToString(listOf(debugMetadata)))
@@ -306,7 +306,7 @@ class InitializeProvidersUseCaseImplTest {
306306

307307
val preferencesWithDebugProvider = ProviderPreferences(
308308
providers = listOf(debugProvider),
309-
shouldAddDebugPrefix = true
309+
shouldAddDebugPrefix = true,
310310
)
311311

312312
coEvery {
@@ -315,7 +315,7 @@ class InitializeProvidersUseCaseImplTest {
315315

316316
val expectedDebugMetadata = debugMetadata.copy(
317317
id = "${debugMetadata.id}-debug",
318-
name = "${debugMetadata.name}-debug"
318+
name = "${debugMetadata.name}-debug",
319319
)
320320

321321
coEvery {
@@ -348,7 +348,7 @@ class InitializeProvidersUseCaseImplTest {
348348

349349
val preferencesWithoutDebugPrefix = ProviderPreferences(
350350
providers = listOf(debugProvider),
351-
shouldAddDebugPrefix = false
351+
shouldAddDebugPrefix = false,
352352
)
353353

354354
coEvery {

domain/provider/src/androidTest/kotlin/com/flixclusive/domain/provider/usecase/manage/impl/UnloadProviderUseCaseImplTest.kt

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,12 @@ class UnloadProviderUseCaseImplTest {
4646
private lateinit var tempDirectory: File
4747
private val testDispatcher = StandardTestDispatcher()
4848

49+
private val buildUrlPrefix = "https://raw.githubusercontent.com/flixclusiveorg/providers-template/builds"
4950
private val testProviderMetadata = ProviderTestDefaults.getProviderMetadata(
50-
buildUrl = "https://raw.githubusercontent.com/flixclusiveorg/providers-template/builds/BasicDummyProvider.flx",
51+
buildUrl = "$buildUrlPrefix/BasicDummyProvider.flx",
5152
)
5253
private val webViewProviderMetadata = ProviderTestDefaults.getWebViewProviderMetadata(
53-
buildUrl = "https://raw.githubusercontent.com/flixclusiveorg/providers-template/builds/BasicDummyWebViewProvider.flx",
54+
buildUrl = "$buildUrlPrefix/BasicDummyWebViewProvider.flx",
5455
)
5556

5657
@Before
@@ -106,9 +107,11 @@ class UnloadProviderUseCaseImplTest {
106107
setupProviderPreferences(listOf(providerFromPrefs))
107108
every { mockProviderRepository.getProvider(testProviderMetadata.id) } returns mockProvider
108109

109-
val result = unloadProviderUseCase(testProviderMetadata)
110+
val result = runCatching {
111+
unloadProviderUseCase(testProviderMetadata)
112+
}
110113

111-
expectThat(result).isTrue()
114+
expectThat(result.isSuccess).isTrue()
112115
verify { mockProvider.onUnload(context) }
113116
coVerify { mockProviderRepository.remove(testProviderMetadata.id) }
114117
coVerify { mockProviderApiRepository.removeApi(testProviderMetadata.id) }
@@ -128,12 +131,14 @@ class UnloadProviderUseCaseImplTest {
128131
setupProviderPreferences(listOf(providerFromPrefs))
129132
every { mockProviderRepository.getProvider(testProviderMetadata.id) } returns mockProvider
130133

131-
val result = unloadProviderUseCase(
132-
metadata = testProviderMetadata,
133-
unloadFromPrefs = false,
134-
)
134+
val result = runCatching {
135+
unloadProviderUseCase(
136+
metadata = testProviderMetadata,
137+
unloadFromPrefs = false,
138+
)
139+
}
135140

136-
expectThat(result).isTrue()
141+
expectThat(result.isSuccess).isTrue()
137142
verify { mockProvider.onUnload(context) }
138143
coVerify { mockProviderRepository.remove(testProviderMetadata.id) }
139144
coVerify { mockProviderApiRepository.removeApi(testProviderMetadata.id) }
@@ -150,7 +155,7 @@ class UnloadProviderUseCaseImplTest {
150155
}
151156

152157
expectThat(result.isFailure).isTrue()
153-
expectThat(result.exceptionOrNull()).isA<IllegalArgumentException>()
158+
expectThat(result.exceptionOrNull()).isA<IllegalStateException>()
154159
}
155160

156161
@Test
@@ -166,9 +171,11 @@ class UnloadProviderUseCaseImplTest {
166171
setupProviderPreferences(listOf(providerFromPrefs))
167172
every { mockProviderRepository.getProvider(testProviderMetadata.id) } returns mockProvider
168173

169-
val result = unloadProviderUseCase(testProviderMetadata)
174+
val result = runCatching {
175+
unloadProviderUseCase(testProviderMetadata)
176+
}
170177

171-
expectThat(result).isFalse()
178+
expectThat(result.isFailure).isTrue()
172179
coVerify(exactly = 0) { mockProviderRepository.remove(any()) }
173180
coVerify(exactly = 0) { mockProviderApiRepository.removeApi(any()) }
174181
}
@@ -186,9 +193,11 @@ class UnloadProviderUseCaseImplTest {
186193
setupProviderPreferences(listOf(providerFromPrefs))
187194
every { mockProviderRepository.getProvider(testProviderMetadata.id) } returns null
188195

189-
val result = unloadProviderUseCase(testProviderMetadata)
196+
val result = kotlin.runCatching {
197+
unloadProviderUseCase(testProviderMetadata)
198+
}
190199

191-
expectThat(result).isFalse()
200+
expectThat(result.isFailure).isTrue()
192201
coVerify(exactly = 0) { mockProviderRepository.remove(any()) }
193202
coVerify(exactly = 0) { mockProviderApiRepository.removeApi(any()) }
194203
}
@@ -224,11 +233,11 @@ class UnloadProviderUseCaseImplTest {
224233
val metadata1 = testProviderMetadata.copy(id = "provider1", name = "Provider 1")
225234
val metadata2 = webViewProviderMetadata.copy(id = "provider2", name = "Provider 2")
226235

227-
val result1 = unloadProviderUseCase(metadata1)
228-
val result2 = unloadProviderUseCase(metadata2)
236+
val result1 = runCatching { unloadProviderUseCase(metadata1) }
237+
val result2 = runCatching { unloadProviderUseCase(metadata2) }
229238

230-
expectThat(result1).isTrue()
231-
expectThat(result2).isTrue()
239+
expectThat(result1.isSuccess).isTrue()
240+
expectThat(result2.isSuccess).isTrue()
232241

233242
verify { mockProvider1.onUnload(context) }
234243
verify { mockProvider2.onUnload(context) }
@@ -263,9 +272,9 @@ class UnloadProviderUseCaseImplTest {
263272
setupProviderPreferences(listOf(providerFromPrefs))
264273
every { mockProviderRepository.getProvider(testProviderMetadata.id) } returns mockProvider
265274

266-
val result = unloadProviderUseCase(testProviderMetadata)
275+
val result = runCatching { unloadProviderUseCase(testProviderMetadata) }
267276

268-
expectThat(result).isTrue()
277+
expectThat(result.isSuccess).isTrue()
269278
expectThat(providerFile.exists()).isFalse()
270279
expectThat(updaterFile.exists()).isFalse()
271280
expectThat(providerDir.exists()).isFalse()
@@ -300,9 +309,9 @@ class UnloadProviderUseCaseImplTest {
300309
setupProviderPreferences(listOf(providerFromPrefs))
301310
every { mockProviderRepository.getProvider(testProviderMetadata.id) } returns mockProvider
302311

303-
val result = unloadProviderUseCase(testProviderMetadata)
312+
val result = runCatching { unloadProviderUseCase(testProviderMetadata) }
304313

305-
expectThat(result).isTrue()
314+
expectThat(result.isSuccess).isTrue()
306315
expectThat(providerFile.exists()).isFalse()
307316
expectThat(updaterFile.exists()).isTrue()
308317
expectThat(otherFile.exists()).isTrue()
@@ -323,9 +332,9 @@ class UnloadProviderUseCaseImplTest {
323332
setupProviderPreferences(listOf(debugProviderFromPrefs))
324333
every { mockProviderRepository.getProvider(testProviderMetadata.id) } returns mockProvider
325334

326-
val result = unloadProviderUseCase(testProviderMetadata)
335+
val result = runCatching { unloadProviderUseCase(testProviderMetadata) }
327336

328-
expectThat(result).isTrue()
337+
expectThat(result.isSuccess).isTrue()
329338
verify { mockProvider.onUnload(context) }
330339
coVerify { mockProviderRepository.remove(testProviderMetadata.id) }
331340
coVerify { mockProviderApiRepository.removeApi(testProviderMetadata.id) }
@@ -349,12 +358,11 @@ class UnloadProviderUseCaseImplTest {
349358
setupProviderPreferences(listOf(providerFromPrefs))
350359
every { mockProviderRepository.getProvider(testProviderMetadata.id) } returns mockProviderWithException
351360

352-
val result = unloadProviderUseCase(testProviderMetadata)
361+
val result = runCatching { unloadProviderUseCase(testProviderMetadata) }
353362

354-
expectThat(result).isTrue()
363+
expectThat(result.isFailure).isTrue()
364+
expectThat(result.exceptionOrNull()?.cause).isA<RuntimeException>()
355365
verify { mockProviderWithException.onUnload(context) }
356-
coVerify { mockProviderRepository.remove(testProviderMetadata.id) }
357-
coVerify { mockProviderApiRepository.removeApi(testProviderMetadata.id) }
358366
}
359367

360368
private fun setupProviderPreferences(providers: List<ProviderFromPreferences>) {

0 commit comments

Comments
 (0)