Skip to content

ATS-PFM-MTD-006Configure Field Requirements and Exposure: Capability Test Specification

Markdown

ATS-PFM-MTD-006

Configure Field Requirements and Exposure: 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 covered
  • Permission covered
  • Edge covered
  • Failure covered
  • Boundary covered
  • Concurrency gap: FND-PFM-MTD-068
  • Invariant covered
  • Interaction covered

Test Scenarios

11 scenarios proving CAP-PFM-MTD-006; 9 bound to an existing test.

01 Replacement removes omitted rule kindsruleapitest
Proves
BR-CAP-PFM-MTD-006-01
Preconditions
A property has several rules.
Steps
[ { "do": "Save a smaller set and inspect rules and storage.", "provenance": "test", "source": "services-platform:modules/metadata/tests/integration/services/persistence/custom-fields.rules.integration.spec.js#removes the kinds a replacement leaves out" } ]
Expected
Omitted kinds are gone, kinds are unique and default staff exposure needs no row.
Data
A property has several rules.
Bound to
services-platform:modules/metadata/tests/integration/db/custom-field-rules.table.integration.spec.js#refuses a second rule of the same kind on the field, by the primary key
Source
services-platform:modules/metadata/tests/integration/services/persistence/custom-fields.rules.integration.spec.js#removes the kinds a replacement leaves out
02 Conditions use valid fields and bounded storageboundaryapinegativetest
Proves
BR-CAP-PFM-MTD-006-02 INV-DOM-PFM-MTD-002-06
Preconditions
Rule replacement is available.
Steps
[ { "do": "Submit unknown and self references and conditions at and beyond the stored size limit.", "provenance": "test", "source": "services-platform:modules/metadata/tests/integration/services/persistence/custom-fields.rules.integration.spec.js#refuses a condition naming a field the object does not have, and leaves the rules unchanged" } ]
Expected
Unknown, self and oversized conditions fail without changing rules; the boundary size succeeds.
Data
Rule replacement is available.
Bound to
services-platform:modules/metadata/tests/integration/services/persistence/custom-fields.rules.integration.spec.js#refuses a condition naming a field the object does not have, and leaves the rules unchanged
services-platform:modules/metadata/tests/integration/services/persistence/custom-fields.rules.integration.spec.js#refuses a condition one byte over the stored size limit as invalid rules, and leaves the rules unchanged
Source
services-platform:modules/metadata/tests/integration/services/persistence/custom-fields.rules.integration.spec.js#refuses a condition naming a field the object does not have, and leaves the rules unchanged
03 Uniqueness checks existing data before enablinginteractionapinegativetest
Proves
BR-CAP-PFM-MTD-006-03 INV-DOM-PFM-MTD-002-07
Preconditions
Some boats share a property value while another property is unique.
Steps
[ { "do": "Enable uniqueness for each and repeat with no checker registered.", "provenance": "test", "source": "services-platform:modules/custom-objects/tests/integration/services/persistence/custom-object-records.integration.spec.js#refuses a unique rule on a property two records already share, with the count" } ]
Expected
Duplicates report their count, unique data enables enforcement and an unavailable checker refuses the rule.
Data
Some boats share a property value while another property is unique.
Bound to
services-platform:modules/metadata/tests/integration/services/persistence/custom-fields.rules.integration.spec.js#refuses a unique rule while nothing can check the object’s values for uniqueness
Source
services-platform:modules/custom-objects/tests/integration/services/persistence/custom-object-records.integration.spec.js#refuses a unique rule on a property two records already share, with the count
04 Defaults agree with the property typevalidationunitnegativetest
Proves
BR-CAP-PFM-MTD-006-04
Preconditions
A field definition is available.
Steps
[ { "do": "Validate compatible and incompatible literal defaults.", "provenance": "test", "source": "services-platform:modules/metadata/tests/unit/custom-object-properties.spec.ts#refuses a default the field cannot hold" } ]
Expected
The compatible value is accepted and the other fails.
Data
A field definition is available.
Bound to
services-platform:modules/metadata/tests/unit/custom-object-properties.spec.ts#accepts a public exposure and a literal default the field can hold
Source
services-platform:modules/metadata/tests/unit/custom-object-properties.spec.ts#refuses a default the field cannot hold
05 Exposure admits only supported audiencespermissionunitnegativetest
Proves
BR-CAP-PFM-MTD-006-05
Preconditions
A property definition is available.
Steps
[ { "do": "Validate public exposure and an unsupported exposure value.", "provenance": "test", "source": "services-platform:modules/metadata/tests/unit/custom-object-properties.spec.ts#refuses an exposure off the ladder before the description is read" } ]
Expected
The supported value succeeds and the other is rejected.
Data
A property definition is available.
Bound to
services-platform:modules/metadata/tests/unit/custom-object-properties.spec.ts#refuses an exposure off the ladder before the description is read
Source
services-platform:modules/metadata/tests/unit/custom-object-properties.spec.ts#refuses an exposure off the ladder before the description is read
06 Dependencies protect custom-object propertiesinteractionbrowsernegativetest
Proves
BR-CAP-PFM-MTD-006-06 INV-DOM-PFM-MTD-002-08
Preconditions
One property condition names another property.
Steps
[ { "do": "Archive the named property before and after changing the dependent condition.", "provenance": "test", "source": "services-platform:modules/metadata/tests/integration/services/persistence/custom-fields.rules.integration.spec.js#refuses the archive naming each dependent property and rule, and leaves the field and the rules unchanged" } ]
Expected
The dependency refusal preserves both field and rules; after correction the archival succeeds.
Data
One property condition names another property.
Bound to
services-platform:modules/metadata/tests/integration/services/persistence/custom-fields.rules.integration.spec.js#refuses the archive naming each dependent property and rule, and leaves the field and the rules unchanged
react-console:acceptance/custom-objects/playwright/journeys/PLAT-M5-S09.spec.ts#PLAT-M5-S09: archiving a property another rule depends on is refused, naming the rule
Source
services-platform:modules/metadata/tests/integration/services/persistence/custom-fields.rules.integration.spec.js#refuses the archive naming each dependent property and rule, and leaves the field and the rules unchanged
07 Archival removes the field’s own rulestransitionapinegativetest
Proves
BR-CAP-PFM-MTD-006-07
Preconditions
A field has a rule set.
Steps
[ { "do": "Archive it, read its rules and try replacing them.", "provenance": "test", "source": "services-platform:modules/metadata/tests/integration/services/persistence/custom-fields.rules.integration.spec.js#removes a field’s rules when the field is archived" } ]
Expected
Its own rules disappear and replacement is refused until restoration.
Data
A field has a rule set.
Bound to
Source
services-platform:modules/metadata/tests/integration/services/persistence/custom-fields.rules.integration.spec.js#removes a field’s rules when the field is archived
08 Rule writes invalidate query descriptionsinvariantapitest
Proves
BR-CAP-PFM-MTD-006-08 INV-DOM-PFM-MTD-002-09
Preconditions
The workspace has a query description stamp.
Steps
[ { "do": "Write a field rule.", "provenance": "test", "source": "services-platform:modules/metadata/tests/integration/db/custom-field-rules.table.integration.spec.js#moves the tenant’s query description stamp when a rule is written" } ]
Expected
The stamp advances in the transaction.
Data
The workspace has a query description stamp.
Bound to
services-platform:modules/metadata/tests/integration/db/custom-field-rules.table.integration.spec.js#moves the tenant’s query description stamp when a rule is written
Source
services-platform:modules/metadata/tests/integration/db/custom-field-rules.table.integration.spec.js#moves the tenant’s query description stamp when a rule is written
09 Native fields lack the custom-object dependency safeguardedgeapitest
Proves
BR-CAP-PFM-MTD-006-09
Preconditions
A contact field is referenced by another condition.
Steps
[ { "do": "Archive the referenced field.", "provenance": "test", "source": "services-platform:modules/metadata/tests/integration/services/persistence/custom-fields.rules.integration.spec.js#does not apply to a native object: a contacts field its rule depends on is archived" } ]
Expected
Archival succeeds despite that dependency.
Data
A contact field is referenced by another condition.
Bound to
services-platform:modules/metadata/tests/integration/services/persistence/custom-fields.rules.integration.spec.js#does not apply to a native object: a contacts field its rule depends on is archived
Source
services-platform:modules/metadata/tests/integration/services/persistence/custom-fields.rules.integration.spec.js#does not apply to a native object: a contacts field its rule depends on is archived
10 Uniqueness and exposure affect different record outcomesinteractionapiproposed
Proves
BR-CAP-PFM-MTD-006-03 BR-CAP-PFM-MTD-006-05 BR-CAP-PFM-MTD-012-07 BR-CAP-PFM-MTD-011-06
Preconditions
An active object has a unique property and staff and public audience projections.
Steps
[ { "do": "Enable uniqueness and public exposure, create a record, attempt a normalized duplicate and project the surviving record for both audiences.", "provenance": "proposed", "source": [ "services-platform:modules/custom-objects/tests/integration/services/persistence/custom-object-records.integration.spec.js#refuses a unique rule on a property two records already share, with the count", "services-platform:modules/metadata/tests/unit/custom-object-properties.spec.ts#refuses an exposure off the ladder before the description is read", "services-platform:modules/custom-objects/tests/integration/services/persistence/custom-object-records.integration.spec.js#refuses a hull number another boat holds, naming the property and the boat", "services-platform:modules/custom-objects/tests/unit/exposure.spec.ts#shows a portal member the portal and public properties" ] } ]
Expected
Check the duplicate refusal separately from the audience projection.
Data
An active object has a unique property and staff and public audience projections.
Source
services-platform:modules/custom-objects/tests/integration/services/persistence/custom-object-records.integration.spec.js#refuses a unique rule on a property two records already share, with the count,services-platform:modules/metadata/tests/unit/custom-object-properties.spec.ts#refuses an exposure off the ladder before the description is read,services-platform:modules/custom-objects/tests/integration/services/persistence/custom-object-records.integration.spec.js#refuses a hull number another boat holds, naming the property and the boat,services-platform:modules/custom-objects/tests/unit/exposure.spec.ts#shows a portal member the portal and public properties
11 A failed rule save leaves the earlier field definitionfailurebrowsernegativeproposed
Proves
BR-CAP-PFM-MTD-006-02 BR-CAP-PFM-MTD-005-03
Preconditions
The administrator creates a new property through the console.
Steps
[ { "do": "Allow definition creation, submit an invalid condition in the later rule request and reopen the property.", "provenance": "proposed", "source": "specs/platform/metadata/design/workflows/WF-PFM-MTD-003-save-a-field-definition-and-its-rules.md:hops" } ]
Expected
The new definition remains stored and the invalid rule set is absent; the person can correct and retry it.
Data
The administrator creates a new property through the console.
Source
specs/platform/metadata/design/workflows/WF-PFM-MTD-003-save-a-field-definition-and-its-rules.md:hops

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.