---
id: TST-PFM-MTD-054
title: custom object records table
kind: integration
product_area: platform
module: metadata
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js
implements: []
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/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a second record with the same id in the tenant, by the primary key
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a record of an object the tenant does not have, by the object foreign key
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    to delete an object that has records, the object foreign key having no delete action
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a number another record of the object holds, by the number constraint
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#accepts
    the same number for a record of another object
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a number below one, by the number check
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a publication state outside the four, by the publication check
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a published record without its instant, by the published-at check
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    an instant on a record that is not published, by the published-at check
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    an instant on a record of an object that is not publishable, by the published-at check
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#accepts
    a published record with its instant
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a display name that is blank, which the text normalisation makes null and NOT NULL refuses
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#trims
    a display name, by the text normalisation trigger
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a lock value outside the two, by the locked check
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    an external id another record of the object holds, by the external id index
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a value of a record the tenant does not have, by the record foreign key
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a row with two values, by the one-value check
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a row with no value, by the one-value check
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a key that is neither a plain key nor a custom field key, by the key check
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#accepts
    a plain property key
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a scaled shadow without its decimal, by the scaled-value check
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#accepts
    a decimal with its scaled shadow
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#deletes
    a record’s values with the record
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a value another record of the object holds, by the primary key
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a value naming a record of another object, the foreign key pinning the object
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#deletes
    a record’s unique values with the record
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#shows
    the tests tenant its boats, their values and their hull numbers
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#shows
    another tenant none of them
  - >-
    services-platform:modules/custom-objects/tests/integration/db/custom-object-records.table.integration.spec.js#refuses
    a record written into another tenant from this one’s transaction
fixture_imports:
  - drizzle-orm
  - '@rhythmsoftware/macroservice-testing/refusals'
  - ../../../db/custom-objects.table
  - ../../../db/custom-object-records.table
  - ../../../db/custom-object-record-values.table
  - ../../../db/custom-object-unique-values.table
  - ../support
test_doubles: []
limitations: []
unmatched_specification: FND-PFM-MTD-083
binding_assertions: []
---

# Custom object records table

## Verification Boundary

This integration suite checks custom objects and records within the local test harness. The registered file and pinned revision define its boundary.

## What This Suite Proves

The suite contains executable checks for this module, but no matching detailed scenario is established in this back-fill. The executable coverage finding records that mapping gap. 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.
