---
id: TST-PFM-MTD-126
title: entity capabilities
kind: integration
product_area: platform
module: metadata
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js
implements:
  - ATS-PFM-MTD-003-01
  - ATS-PFM-MTD-003-03
  - ATS-PFM-MTD-003-04
  - ATS-PFM-MTD-003-06
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
isolation: >-
  Prepared integration database and the suite fixture records; fixture teardown restores or removes its own
  rows.
evidence:
  - >-
    services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js
  - >-
    services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#registers
    a manifest without capabilities with all three flags false
  - >-
    services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#stores
    configurable forms and page layouts declared without custom fields
  - >-
    services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#refuses
    custom fields declared on an object Andrew did not approve, naming it and R2-ARCH-001
  - >-
    services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#writes
    nothing of a refused manifest
  - >-
    services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#stores
    all three flags for an approved object whose manifest declares nothing (the transition)
  - >-
    services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#refuses
    a new custom field with the 400 problem
  - >-
    services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#describes
    no custom fields for an object that lost the capability, even with a definition on file
  - >-
    services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#refuses
    to replace a definition that outlived the capability
  - >-
    services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#creates
    a custom field and describes it
  - >-
    services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#lists
    exactly the objects holding custom fields, with their three flags
  - >-
    services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#answers
    contacts with its labels and flags in the wire names
  - >-
    services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#leaves
    an object without custom fields out of that list
  - >-
    services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#lists
    the object under the capability it holds
  - >-
    services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#lists
    every live object when no capability is asked for
fixture_imports:
  - drizzle-orm
  - ../../../../db/registered-objects.table
  - ../../../../services/describe/describe-object
  - ../../../../services/persistence/custom-fields
  - ../../../../services/persistence/registered-objects
  - ../../../../services/registration/register-application
  - ../../../../aws/api/metadata-api-mapper
  - '@rhythmsoftware/macroservice-testing/refusals'
  - '@rhythmsoftware/macroservice-errors/errors'
  - ../../support
test_doubles: []
limitations: []
unmatched_specification: null
binding_assertions:
  - scenario: ATS-PFM-MTD-003-01
    provenance: test
    source:
      - >-
        services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#refuses
        custom fields declared on an object Andrew did not approve, naming it and R2-ARCH-001
      - >-
        services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#writes
        nothing of a refused manifest
    note: >-
      These references identify the assertions this suite contributes; bindings to additional suites remain
      part of the scenario’s proof.
  - scenario: ATS-PFM-MTD-003-03
    provenance: test
    source:
      - >-
        services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#registers
        a manifest without capabilities with all three flags false
      - >-
        services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#stores
        configurable forms and page layouts declared without custom fields
    note: >-
      These references identify the assertions this suite contributes; bindings to additional suites remain
      part of the scenario’s proof.
  - scenario: ATS-PFM-MTD-003-04
    provenance: test
    source:
      - >-
        services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#refuses
        a new custom field with the 400 problem
      - >-
        services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#refuses
        to replace a definition that outlived the capability
      - >-
        services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#describes
        no custom fields for an object that lost the capability, even with a definition on file
    note: >-
      These references identify the assertions this suite contributes; bindings to additional suites remain
      part of the scenario’s proof.
  - scenario: ATS-PFM-MTD-003-06
    provenance: test
    source:
      - >-
        services-platform:modules/metadata/tests/integration/services/registration/entity-capabilities.integration.spec.js#leaves
        an object without custom fields out of that list
    note: >-
      These references identify the assertions this suite contributes; bindings to additional suites remain
      part of the scenario’s proof.
---

# Entity capabilities

## Verification Boundary

This integration suite checks record descriptions and field configuration within the local test harness. The registered file and pinned revision define its boundary.

## What This Suite Proves

The bindings identify the detailed or feature scenarios whose outcomes have assertions in this suite. Original case references remain attached to the detailed scenarios so a reviewer can inspect the exact assertion. Assertions are evidence of implemented checks; no execution result is claimed.

## What It Does Not Prove

The register does not establish a current passing run or full specification conformance. Behavior outside the suite’s fixtures and assertions remains unverified.

## Real Dependencies and Test Doubles

The fixture uses PostgreSQL and the imported persistence or API code. The fixture imports identify the setup seams; this register makes no broader claim that dependencies are undoubled.

## Must Not Be Doubled

The operation under examination and its asserted stored outcomes must remain real within the declared harness. A fixture cannot replace the write, refusal or transactional effect that the bound scenario checks.
