field_ios

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

TeraCoordinateAdmissionTests.swift (2686B)


      1 import Foundation
      2 @testable import TeraApp
      3 import XCTest
      4 
      5 @MainActor
      6 final class TeraCoordinateAdmissionTests: XCTestCase {
      7   func testHeldLegacyRequestRetainsEditingAndCannotResumeOrPublish() async throws {
      8     let backend = try TeraScopeBackend()
      9     var held = TeraScopeFixtures.draft("Retained captured form")
     10     held.coordinateWritable = false
     11     held.coordinateCaptured = true
     12     await backend.setDrafts([held])
     13     let client = try await TeraScopeFixtures.client(backend)
     14     let store = TeraAddStore(runtimeClient: client)
     15     store.configure(snapshot: TeraScopeFixtures.snapshot())
     16     await store.start()
     17     store.updateForm(\.content, "Current editing must survive")
     18     await store.save()
     19     let composer = try XCTUnwrap(store.savedComposer)
     20     await store.retry(id: held.id)
     21     XCTAssertEqual(store.form.content, "Current editing must survive")
     22     XCTAssertEqual(store.savedComposer, composer)
     23     XCTAssertEqual(store.message, TeraPublicationActionReason.coordinateChanged.explanation)
     24     XCTAssertFalse(held.canAdvance)
     25     XCTAssertFalse(held.canQueue)
     26     XCTAssertFalse(held.isEditable)
     27     var accepted: TeraDraftStatus?
     28     let submission = TeraLegacySubmission(
     29       runtimeClient: client, media: nil, revisionID: { nil }, initial: { held }, ensure: {},
     30       acceptDraft: { accepted = $0 }, acceptRevision: { _ in XCTFail("Held request cannot revise") },
     31       message: { XCTAssertEqual($0, held.honestSummary) }, refreshMedia: {}
     32     )
     33     try await submission.submit()
     34     XCTAssertEqual(accepted, held)
     35     store.stop()
     36     _ = try await client.stop()
     37   }
     38 
     39   func testCapturedCoordinateFreezesFormWhilePreservingTheSameRequestForContinuation() {
     40     var captured = TeraScopeFixtures.draft("Captured form")
     41     captured.coordinateCaptured = true
     42     XCTAssertTrue(captured.coordinateWritable)
     43     XCTAssertFalse(captured.isEditable)
     44     XCTAssertTrue(captured.canQueue)
     45     let summary = TeraLegacyDraftSummary(
     46       id: captured.id, revision: captured.revision, kind: captured.kind,
     47       commandType: captured.commandType, state: captured.state, hasForm: true, isRevision: false,
     48       createdAtUnixMilliseconds: captured.createdAtUnixMilliseconds,
     49       updatedAtUnixMilliseconds: captured.updatedAtUnixMilliseconds, mediaCount: 0,
     50       verifiedMediaCount: 0, possibleOrphanCount: 0, settlement: captured.settlement,
     51       coordinateWritable: false, coordinateCaptured: true
     52     )
     53     XCTAssertFalse(summary.isEditable)
     54     XCTAssertFalse(summary.canAdvance)
     55     XCTAssertFalse(summary.canQueue)
     56     XCTAssertEqual(summary.honestSummary, TeraPublicationActionReason.coordinateChanged.explanation)
     57     XCTAssertEqual(summary.id, captured.id)
     58   }
     59 }