TeraMediaVisibilityTests.swift (1946B)
1 @testable import TeraApp 2 import XCTest 3 4 @MainActor 5 final class TeraMediaVisibilityTests: XCTestCase { 6 func testRemovalCancelsMediaAndRefusesLateCompletionOrRetry() async throws { 7 let backend = try TeraScopeBackend() 8 let client = try await TeraScopeFixtures.client(backend) 9 let store = TeraMediaStore(runtimeClient: client) 10 let reference = TeraScopeFixtures.reference() 11 let context = TeraLocalNetwork.defaultContext(snapshot: TeraScopeFixtures.snapshot()) 12 let pause = await backend.pause(.media) 13 store.load(media: reference, context: context) 14 await pause.entered.wait() 15 store.reconcileVisibility(previous: [reference], current: [], context: context) 16 XCTAssertEqual(store.state(for: reference, context: context), .unavailable) 17 store.retry(media: reference, context: context) 18 store.load(media: reference, context: context) 19 await pause.resume.open() 20 let calls = await backend.counts[.media] 21 XCTAssertEqual(calls, 1) 22 XCTAssertEqual(store.state(for: reference, context: context), .unavailable) 23 store.reset() 24 _ = try await client.stop() 25 } 26 27 func testStillVisibleSharedReferenceRetainsItsVerifiedArtifact() async throws { 28 let backend = try TeraScopeBackend() 29 let client = try await TeraScopeFixtures.client(backend) 30 let store = TeraMediaStore(runtimeClient: client) 31 let reference = TeraScopeFixtures.reference() 32 let context = TeraLocalNetwork.defaultContext(snapshot: TeraScopeFixtures.snapshot()) 33 let expected = try TeraScopeFixtures.artifact("a") 34 store.load(media: reference, context: context) 35 await TeraScopeFixtures.eventually { store.state(for: reference, context: context) == .ready(expected) } 36 store.reconcileVisibility(previous: [reference, reference], current: [reference], context: context) 37 XCTAssertEqual(store.state(for: reference, context: context), .ready(expected)) 38 store.reset() 39 _ = try await client.stop() 40 } 41 }