---
id: TST-PFM-MTD-077
title: rules
kind: unit
product_area: platform
module: metadata
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - modules/custom-objects/tests/unit/rules.spec.ts
implements:
  - ATS-PFM-MTD-009-05
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 1
isolation: >-
  Prepared integration database and the suite fixture records; fixture teardown restores or removes its own
  rows.
evidence:
  - 'services-platform:modules/custom-objects/tests/unit/rules.spec.ts'
  - >-
    services-platform:modules/custom-objects/tests/unit/rules.spec.ts#accepts a text display property with an
    existing secondary property
  - >-
    services-platform:modules/custom-objects/tests/unit/rules.spec.ts#accepts an integer display property, one
    of the five name-like types
  - >-
    services-platform:modules/custom-objects/tests/unit/rules.spec.ts#refuses an object that names no display
    property
  - >-
    services-platform:modules/custom-objects/tests/unit/rules.spec.ts#refuses a display property the object
    does not have
  - >-
    services-platform:modules/custom-objects/tests/unit/rules.spec.ts#refuses a display property of a type no
    name is read from
  - >-
    services-platform:modules/custom-objects/tests/unit/rules.spec.ts#refuses a secondary display property the
    object does not have
  - >-
    services-platform:modules/custom-objects/tests/unit/rules.spec.ts#accepts an active one-to-many type that
    ends at the object
  - >-
    services-platform:modules/custom-objects/tests/unit/rules.spec.ts#accepts a one-to-one type, which also
    gives a record one owner
  - 'services-platform:modules/custom-objects/tests/unit/rules.spec.ts#refuses a type the tenant does not have'
  - 'services-platform:modules/custom-objects/tests/unit/rules.spec.ts#refuses an inactive type'
  - >-
    services-platform:modules/custom-objects/tests/unit/rules.spec.ts#refuses a type whose to side is another
    object
  - >-
    services-platform:modules/custom-objects/tests/unit/rules.spec.ts#refuses a many-to-many type, which gives
    a record many owners
  - >-
    services-platform:modules/custom-objects/tests/unit/rules.spec.ts#accepts a type with the object on one
    side
  - 'services-platform:modules/custom-objects/tests/unit/rules.spec.ts#refuses a type the tenant does not have'
  - >-
    services-platform:modules/custom-objects/tests/unit/rules.spec.ts#refuses a type that relates two other
    objects
fixture_imports:
  - chai
  - ../../rules
test_doubles: []
limitations: []
unmatched_specification: null
binding_assertions:
  - scenario: ATS-PFM-MTD-009-05
    provenance: test
    source:
      - >-
        services-platform:modules/custom-objects/tests/unit/rules.spec.ts#accepts an active one-to-many type
        that ends at the object
      - >-
        services-platform:modules/custom-objects/tests/unit/rules.spec.ts#refuses a many-to-many type, which
        gives a record many owners
      - 'services-platform:modules/custom-objects/tests/unit/rules.spec.ts#refuses an inactive type'
    note: >-
      These references identify the assertions this suite contributes; bindings to additional suites remain
      part of the scenario’s proof.
---

# Rules

## Verification Boundary

This unit 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 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 imported contract and validation code runs locally. The fixture imports identify the setup seams; this register makes no broader claim that dependencies are undoubled.

## Must Not Be Doubled

The contract or validation function under examination must run directly; expected outputs cannot replace it.
