field_ios

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

TeraSubmissionFormTests.swift (1894B)


      1 import Foundation
      2 @testable import TeraApp
      3 import XCTest
      4 
      5 extension TeraAddStoreTests {
      6   @MainActor
      7   func testAllFiveFormsCompleteWithFrozenSubmissionsAndContinuedEditing() async throws {
      8     let backend = AddBackend()
      9     let client = try await Self.startedClient(backend)
     10     let store = TeraAddStore(
     11       runtimeClient: client,
     12       media: AddMediaHarness()
     13     )
     14     await store.configure(snapshot: backend.snapshot())
     15     await store.start()
     16 
     17     for type in TeraAddCommandType.allCases {
     18       store.newDraft(type: type)
     19       await TeraScopeFixtures.eventually { !store.protection.isWorking }
     20       configure(store, type: type)
     21       if type == .createPhotoUpdate {
     22         await store.importPhotos()
     23         XCTAssertEqual(store.form.media.count, 1)
     24         XCTAssertNil(store.form.media.first?.remoteURL)
     25       }
     26       await store.submit()
     27       XCTAssertEqual(store.submissions.status?.captured.form.commandType, type)
     28       XCTAssertEqual(store.submissions.status?.state, .complete)
     29       XCTAssertEqual(store.submissions.status?.captured.form.editingValue, store.form)
     30       if type == .createPhotoUpdate {
     31         XCTAssertEqual(
     32           store.submissions.status?.preparedMedia.first?.remoteURL,
     33           "http://127.0.0.1:3000/\(String(repeating: "0", count: 64)).png"
     34         )
     35         let didUpload = await backend.submissionBackend.uploadCount > 0
     36         XCTAssertTrue(didUpload)
     37       }
     38     }
     39 
     40     let frozen = try XCTUnwrap(store.submissions.status)
     41     store.updateForm(\.content, "mutated after submit")
     42     XCTAssertEqual(store.form.content, "mutated after submit")
     43     XCTAssertEqual(store.submissions.status, frozen)
     44     XCTAssertTrue(store.isFormEditable)
     45     XCTAssertNil(store.activeDraft)
     46     XCTAssertTrue(store.drafts.isEmpty)
     47     let count = await backend.submissionBackend.prepareCount
     48     XCTAssertEqual(count, 5)
     49     _ = try await client.stop()
     50   }
     51 }