Skip to content

ATS-PFM-MTD-014Explain Custom Record Changes: Capability Test Specification

Markdown

ATS-PFM-MTD-014

Explain Custom Record Changes: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaPlatformModuleMetadata and Organization-defined RecordsRevision2

Read atservices-platform ad3f6a65react-console baf6dae3

Coverage

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

Test Scenarios

7 scenarios proving CAP-PFM-MTD-014; 6 bound to an existing test.

01 The timeline identifies committed changes and authorsrulebrowsertest
Proves
BR-CAP-PFM-MTD-014-01
Preconditions
A boat has creation, edit, relationship and lifecycle changes.
Steps
[ { "do": "Read its timeline and open the console history.", "provenance": "test", "source": "services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#answers the association, the update and the creation, newest first" } ]
Expected
Changes appear newest first with their authors and revision descriptions.
Data
A boat has creation, edit, relationship and lifecycle changes.
Bound to
services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#presents each item in the shape of the contract’s RevisionSummary, by the console user who made it
react-console:acceptance/custom-objects/playwright/journeys/PLAT-M5-S07.spec.ts#PLAT-M5-S07: publish, archive and restore from the boat page; History names each revision and who made it
Source
services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#answers the association, the update and the creation, newest first
02 Revision detail follows recognizable field groupsruleapitest
Proves
BR-CAP-PFM-MTD-014-02
Preconditions
A revision changes grouped properties, list values and ownership.
Steps
[ { "do": "Read the revision detail.", "provenance": "test", "source": "services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#names each changed property by its label, with its values before and after as the drawer shows them" } ]
Expected
Sections follow form grouping, values use labels and before-and-after information, and ownership uses the reverse relationship label.
Data
A revision changes grouped properties, list values and ownership.
Bound to
services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#presents the property groups as sections in the boat form’s order, under the groups’ names
services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#names each changed property by its label, with its values before and after as the drawer shows them
Source
services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#names each changed property by its label, with its values before and after as the drawer shows them
03 History access remains separate from record readingpermissionapinegativetest
Proves
BR-CAP-PFM-MTD-014-03
Preconditions
Readers lack history, reach another object or inspect a deleted boat.
Steps
[ { "do": "Request history under each grant.", "provenance": "test", "source": "services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#refuses a caller who may read boats but not their history" } ]
Expected
Missing history permission fails, wrong-object reach is hidden and deleted-record history remains readable with history permission.
Data
Readers lack history, reach another object or inspect a deleted boat.
Bound to
Source
services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#refuses a caller who may read boats but not their history
04 Archived objects keep their history surfacestransitionapitest
Proves
BR-CAP-PFM-MTD-014-04
Preconditions
An archived custom object has record revisions.
Steps
[ { "do": "Read timeline, revision detail and actors.", "provenance": "test", "source": "services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#answers the timeline of a record of an archived object" } ]
Expected
All three histories remain available.
Data
An archived custom object has record revisions.
Bound to
Source
services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#answers the timeline of a record of an archived object
05 Merge revisions retain the prior referenceinteractionapitest
Proves
BR-CAP-PFM-MTD-014-06
Preconditions
A custom record refers to a duplicate contact.
Steps
[ { "do": "Merge it into the survivor and read the custom-record revision.", "provenance": "test", "source": "services-platform:modules/custom-objects/tests/integration/db/custom-object-records-merge.integration.spec.js#attributes the change to the merge: its source, its actor and its merge id" } ]
Expected
The reference moves and history retains the former value with the survivor afterwards.
Data
A custom record refers to a duplicate contact.
Bound to
services-platform:modules/custom-objects/tests/integration/db/custom-object-records-merge.integration.spec.js#attributes the change to the merge: its source, its actor and its merge id
Source
services-platform:modules/custom-objects/tests/integration/db/custom-object-records-merge.integration.spec.js#attributes the change to the merge: its source, its actor and its merge id
06 Relationship history is captured on its applicable endpointsinteractionapitest
Proves
BR-CAP-PFM-MTD-014-05 BR-CAP-PFM-MTD-014-01
Preconditions
A contact and custom record are linked.
Steps
[ { "do": "Change the link and inspect their captured revisions.", "provenance": "test", "source": "services-platform:modules/custom-objects/tests/integration/services/persistence/record-revisions.integration.spec.js#writes the association on the contact, a native from record, under its own record type" } ]
Expected
The starting endpoint and applicable custom endpoint histories record the change; CRM drawer integration remains deferred.
Data
A contact and custom record are linked.
Bound to
services-platform:modules/custom-objects/tests/integration/services/persistence/record-revisions.integration.spec.js#writes the association on the contact, a native from record, under its own record type
services-platform:modules/custom-objects/tests/integration/services/persistence/record-revisions.integration.spec.js#mirrors the association on the boat, a custom to record, as its reverse association
services-platform:modules/custom-objects/tests/integration/services/persistence/record-revisions.integration.spec.js#records a re-pointed from record as a removal on the contact it left and an addition on the one it joined
Source
services-platform:modules/custom-objects/tests/integration/services/persistence/record-revisions.integration.spec.js#writes the association on the contact, a native from record, under its own record type
07 A merge updates references and retained history under history reachinteractionapiproposed
Proves
BR-CAP-PFM-MTD-014-06 BR-CAP-PFM-MTD-014-03 BR-CAP-PFM-MTD-019-08
Preconditions
A custom record names a duplicate contact and has an attributed revision.
Steps
[ { "do": "Merge the contact, read the record and revision with history permission and repeat the history request without that permission.", "provenance": "proposed", "source": [ "services-platform:modules/custom-objects/tests/integration/db/custom-object-records-merge.integration.spec.js#attributes the change to the merge: its source, its actor and its merge id", "services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#refuses a caller who may read boats but not their history", "services-platform:modules/custom-objects/tests/integration/db/custom-object-records-merge.integration.spec.js#names the surviving contact in every property that named a merged one" ] } ]
Expected
Compare the survivor value, prior reference and history refusal.
Data
A custom record names a duplicate contact and has an attributed revision.
Source
services-platform:modules/custom-objects/tests/integration/db/custom-object-records-merge.integration.spec.js#attributes the change to the merge: its source, its actor and its merge id,services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#refuses a caller who may read boats but not their history,services-platform:modules/custom-objects/tests/integration/db/custom-object-records-merge.integration.spec.js#names the surviving contact in every property that named a merged one

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.