Skip to content

ATS-PFM-MTD-016Load and Reconcile Record Files: Capability Test Specification

Markdown

ATS-PFM-MTD-016

Load and Reconcile Record Files: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaPlatformModuleMetadata and Organization-defined RecordsRevision2

Read atservices-platform ad3f6a65react-console baf6dae3

Coverage

  • Rule covered
  • Transition gap: FND-PFM-MTD-078
  • Validation covered
  • Permission covered
  • Edge covered
  • Failure covered
  • Boundary gap: FND-PFM-MTD-078
  • Concurrency gap: FND-PFM-MTD-078
  • Invariant covered
  • Interaction covered

Test Scenarios

8 scenarios proving CAP-PFM-MTD-016; 7 bound to an existing test.

01 Repeated source files do not duplicate recordsinvariantapitest
Proves
BR-CAP-PFM-MTD-016-01
Preconditions
Files contain known and new source keys.
Steps
[ { "do": "Validate and apply, then resubmit unchanged lines and corrections.", "provenance": "test", "source": "services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0401.spec.js#CO-ACC-0401: A registrar corrects a loaded boat by hand, and the nightly feed neither tramples the correction nor revives a boat that was archived or deleted @area:data-operations @P0 @isolation:parallel-safe" } ]
Expected
The first load creates expected records, repetition makes no changes and corrections affect only supplied changed properties.
Data
Files contain known and new source keys.
Bound to
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0401.spec.js#CO-ACC-0401: A registrar corrects a loaded boat by hand, and the nightly feed neither tramples the correction nor revives a boat that was archived or deleted @area:data-operations @P0 @isolation:parallel-safe
Source
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0401.spec.js#CO-ACC-0401: A registrar corrects a loaded boat by hand, and the nightly feed neither tramples the correction nor revives a boat that was archived or deleted @area:data-operations @P0 @isolation:parallel-safe
02 Preflight reports line and property failuresvalidationapinegativetest
Proves
BR-CAP-PFM-MTD-016-02
Preconditions
A file contains valid and invalid record lines.
Steps
[ { "do": "Validate the input.", "provenance": "test", "source": "services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0400.spec.js#step 3: the rejections name each bad line and its property, never a value or an error class" } ]
Expected
Rejected lines identify properties without values, and validation does not write records.
Data
A file contains valid and invalid record lines.
Bound to
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0400.spec.js#step 3: the rejections name each bad line and its property, never a value or an error class
Source
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0400.spec.js#step 3: the rejections name each bad line and its property, never a value or an error class
03 Apply uses the validated impact digestfailureapinegativetest
Proves
BR-CAP-PFM-MTD-016-03
Preconditions
A job has a validated impact.
Steps
[ { "do": "Apply with a stale digest and then the correct digest.", "provenance": "test", "source": "services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0400.spec.js#step 4: an apply with a stale digest is refused 409 impact_digest_mismatch and the job stays validated" } ]
Expected
The stale request fails while leaving validation intact; the accepted impact can be applied.
Data
A job has a validated impact.
Bound to
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0400.spec.js#step 4: an apply with a stale digest is refused 409 impact_digest_mismatch and the job stays validated
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0400.spec.js#step 5: applies with the digest; the job completes with rejections, writing three lines and rejecting five
Source
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0400.spec.js#step 4: an apply with a stale digest is refused 409 impact_digest_mismatch and the job stays validated
04 Loaded records use the ordinary write contractruleapitest
Proves
BR-CAP-PFM-MTD-016-04
Preconditions
The object includes numbering, references and unique properties.
Steps
[ { "do": "Apply valid lines and a line targeting an archived record.", "provenance": "test", "source": "services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0400.spec.js#step 6: every created boat reads back as the file said, and the id refused at step 2 named no record" } ]
Expected
Successful records have normal derived information and audit effects, while the archived target is refused.
Data
The object includes numbering, references and unique properties.
Bound to
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0400.spec.js#step 6: every created boat reads back as the file said, and the id refused at step 2 named no record
Source
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0400.spec.js#step 6: every created boat reads back as the file said, and the id refused at step 2 named no record
05 Link loads preserve endpoint identityvalidationapinegativetest
Proves
BR-CAP-PFM-MTD-016-05
Preconditions
Types and loaded endpoint keys are available.
Steps
[ { "do": "Load invalid endpoint and cardinality cases, then correct a known link with different endpoints.", "provenance": "test", "source": "services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0402.spec.js#step 9: OWN-2 naming another boat is refused because endpoints never change, and with its own endpoints its notes update" } ]
Expected
Validation refuses incompatible inputs and immutable endpoint changes before writing.
Data
Types and loaded endpoint keys are available.
Bound to
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0402.spec.js#step 2: validates twelve lines: four would be created and eight are blocked, and nothing is written
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0402.spec.js#step 9: OWN-2 naming another boat is refused because endpoints never change, and with its own endpoints its notes update
Source
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0402.spec.js#step 9: OWN-2 naming another boat is refused because endpoints never change, and with its own endpoints its notes update
06 Link corrections expose destructive omission behaviouredgeapitest
Proves
BR-CAP-PFM-MTD-016-06
Preconditions
A known dated link has position and notes and another link is ended.
Steps
[ { "do": "Submit corrections containing only a primary flag or omitting an end date.", "provenance": "test", "source": "services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0402.spec.js#step 6: a CRW-1 line with only isPrimary replaces the association and clears its dates, position and notes, silently" } ]
Expected
Omitted attributes clear and the ended link reopens without warning.
Data
A known dated link has position and notes and another link is ended.
Bound to
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0402.spec.js#step 6: a CRW-1 line with only isPrimary replaces the association and clears its dates, position and notes, silently
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0402.spec.js#step 7: a CRW-2 line without endDate reopens the ended season, and says nothing
Source
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0402.spec.js#step 6: a CRW-1 line with only isPrimary replaces the association and clears its dates, position and notes, silently
07 Job and line permissions remain distinctpermissionapinegativetest
Proves
BR-CAP-PFM-MTD-016-07
Preconditions
Create-only, reader and foreign-workspace callers exist.
Steps
[ { "do": "Load new and known links and inspect results under each caller.", "provenance": "test", "source": "services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0404.spec.js#step 5: a clerk with the create key only has the known key refused as not found and the new key created" } ]
Expected
New links require create, known links require update, disallowed callers fail and other submitters cannot read results.
Data
Create-only, reader and foreign-workspace callers exist.
Bound to
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0404.spec.js#step 1: a read-only volunteer is refused 403 permission_missing, naming no key, and no job is made
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0404.spec.js#step 5: a clerk with the create key only has the known key refused as not found and the new key created
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0404.spec.js#step 8: the create-only clerk reading the registrar’s job results is answered 404
Source
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0404.spec.js#step 5: a clerk with the create key only has the known key refused as not found and the new key created
08 Object lifecycle changes the outcome of record and link loadsinteractionapiproposed
Proves
BR-CAP-PFM-MTD-016-04 BR-CAP-PFM-MTD-016-05 BR-CAP-PFM-MTD-009-08
Preconditions
Record and link files resolve keys into an active object.
Steps
[ { "do": "Validate the files, archive the object, apply the validated impact and inspect line results and storage.", "provenance": "proposed", "source": [ "services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0400.spec.js#step 6: every created boat reads back as the file said, and the id refused at step 2 named no record", "services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0402.spec.js#step 9: OWN-2 naming another boat is refused because endpoints never change, and with its own endpoints its notes update", "services-platform:modules/custom-objects/tests/integration/services/persistence/custom-objects.integration.spec.js#restores an archived object as a draft, keeping its object id" ] } ]
Expected
Check the ordinary write refusals and verify that no invalid records or links are inserted.
Data
Record and link files resolve keys into an active object.
Source
services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0400.spec.js#step 6: every created boat reads back as the file said, and the id refused at step 2 named no record,services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0402.spec.js#step 9: OWN-2 naming another boat is refused because endpoints never change, and with its own endpoints its notes update,services-platform:modules/custom-objects/tests/integration/services/persistence/custom-objects.integration.spec.js#restores an archived object as a draft, keeping its object id

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.