@@ -270,7 +270,7 @@ func testDownloadingImage() async throws {
270
270
}
271
271
272
272
@Test
273
- func testDownloadingImageWhenLowQualityDownloadFailsFirst () async throws {
273
+ func testDownloadingImageWhenLowQualityDownloadFailsAfterHighQualityDownloadSucceeds () async throws {
274
274
try await withProbing {
275
275
viewModel.downloadImage ()
276
276
} dispatchedBy : { dispatcher in
@@ -279,12 +279,39 @@ func testDownloadingImageWhenLowQualityDownloadFailsFirst() async throws {
279
279
try await dispatcher.runUntilExitOfBody ()
280
280
#expect (viewModel.downloadState ? .isDownloading == true )
281
281
282
+ try await dispatcher.runUntilEffectCompleted (" high" )
283
+ #expect (viewModel.downloadState ? .quality == .high )
284
+
282
285
downloader.shouldFailDownload = true
283
286
try await dispatcher.runUntilEffectCompleted (" low" )
287
+ try dispatcher.getCancelledValue (fromEffect : " low" , as : Void .self )
288
+ #expect (viewModel.downloadState ? .quality == .high )
289
+ }
290
+ }
291
+
292
+ @Test
293
+ func testDownloadingImageRepeatedly () async throws {
294
+ try await withProbing {
295
+ viewModel.downloadImage ()
296
+ viewModel.downloadImage ()
297
+ } dispatchedBy : { dispatcher in
298
+ #expect (viewModel.downloadState == nil )
299
+
300
+ try await dispatcher.runUntilExitOfBody ()
284
301
#expect (viewModel.downloadState ? .isDownloading == true )
285
302
286
- downloader.shouldFailDownload = false
287
- try await dispatcher.runUntilEffectCompleted (" high" )
303
+ try await dispatcher.runUntilEffectCompleted (" low0" )
304
+ try dispatcher.getCancelledValue (fromEffect : " low0" , as : Void .self )
305
+ #expect (viewModel.downloadState ? .isDownloading == true )
306
+
307
+ try await dispatcher.runUntilEffectCompleted (" high0" )
308
+ try dispatcher.getCancelledValue (fromEffect : " high0" , as : Void .self )
309
+ #expect (viewModel.downloadState ? .isDownloading == true )
310
+
311
+ try await dispatcher.runUntilEffectCompleted (" low1" )
312
+ #expect (viewModel.downloadState ? .quality == .low )
313
+
314
+ try await dispatcher.runUntilEffectCompleted (" high1" )
288
315
#expect (viewModel.downloadState ? .quality == .high )
289
316
}
290
317
}
0 commit comments