field_ios

In-the-field app for Radroots on iOS
git clone https://radroots.dev/git/field_ios.git
Log | Files | Refs | README | LICENSE

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 }