---
id: TST-CRM-REG-049
title: Regional identity and reference constraints
kind: integration
product_area: crm
module: regions
revision: 1
status: draft
source_sha:
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
repository: services-crm
files:
  - modules/regions/tests/integration/db/regions.table.integration.spec.js
implements:
  - ATS-CRM-REG-001-01
  - ATS-CRM-REG-001-02
  - ATS-CRM-REG-002-01
  - ATS-CRM-REG-009-04
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 2
isolation: Suite-owned workspace and records in the prepared test database.
evidence:
  - 'services-crm:modules/regions/tests/integration/db/regions.table.integration.spec.js'
assertions:
  - scenario: ATS-CRM-REG-001-01
    source: >-
      services-crm:modules/regions/tests/integration/db/regions.table.integration.spec.js#refuses an id
      outside the legacy grammar (a space)
  - scenario: ATS-CRM-REG-001-01
    source: >-
      services-crm:modules/regions/tests/integration/db/regions.table.integration.spec.js#accepts the
      characters of the legacy grammar (word characters, | and -)
  - scenario: ATS-CRM-REG-001-02
    source: >-
      services-crm:modules/regions/tests/integration/db/regions.table.integration.spec.js#refuses a blank
      name
  - scenario: ATS-CRM-REG-002-01
    source: >-
      services-crm:modules/regions/tests/integration/db/regions.table.integration.spec.js#references ›
      refuses to delete a region a contact is in, naming what uses it
  - scenario: ATS-CRM-REG-002-01
    source: >-
      services-crm:modules/regions/tests/integration/db/regions.table.integration.spec.js#references ›
      refuses to delete a region an organization is in
  - scenario: ATS-CRM-REG-002-01
    source: >-
      services-crm:modules/regions/tests/integration/db/regions.table.integration.spec.js#references ›
      refuses to delete a region an assignment rule names
  - scenario: ATS-CRM-REG-009-04
    source: >-
      services-crm:modules/regions/tests/integration/db/regions.table.integration.spec.js#references ›
      refuses a contact naming a region its tenant does not have
  - scenario: ATS-CRM-REG-009-04
    source: >-
      services-crm:modules/regions/tests/integration/db/regions.table.integration.spec.js#references ›
      refuses an organization naming a region its tenant does not have
binding_scope: >-
  Exact assertion anchors identify the contribution of this file. Scenario-level bindings may compose
  several files; registration does not assert that every file alone executes every scenario step.
---

# Regional identity and reference constraints

## Verification Boundary

The suite exercises real regional persistence and processing against the prepared database. It verifies the source assertions linked in this register.

## What This Suite Proves

The linked source assertions contribute checks for identifier validation preserves the legacy grammar; blank names prevent creation; references block removal; foreign regions cannot be saved on records. A scenario spanning several files relies on those assertions together; this file supplies only its named checks.

## What It Does Not Prove

The register establishes neither a current passing run nor verified conformance. Unbound scenarios, broader feature chains and the delegated infrastructure beyond this execution boundary remain unproved.

## Real Dependencies and Test Doubles

PostgreSQL and the regional persistence under assertion are real. The suite supplies test execution contexts and fixtures; a local API harness replaces deployed transport where applicable.

## Must Not Be Doubled

Regional matching, regional persistence and the stored values under assertion must remain real. A substitute answer for these dependencies cannot qualify the linked regional outcomes.
