---
id: TST-PFM-ELG-438
title: Eligibility authoring checks
kind: integration
product_area: platform
module: eligibility
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - >-
    modules/eligibility/tests/integration/services/model/authoring.integration.spec.js
implements:
  - ATS-PFM-ELG-001-05
  - ATS-PFM-ELG-001-06
  - ATS-PFM-ELG-001-11
  - ATS-PFM-ELG-001-12
  - ATS-PFM-ELG-001-14
environment: local
implementation_state: implemented
latest_result: not-run
conformance: not-verified
estimated_minutes: 5
isolation: Prepared local test database with suite-owned fixture keys and cleanup.
evidence:
  - provenance: test
    source: >-
      services-platform:modules/eligibility/tests/integration/services/model/authoring.integration.spec.js
    cases:
      - >-
        creates a definition without a draft when the request carries no
        expression
      - owns a definition made without an owner by the tenant
      - saves the expression as draft version 1 with its summary and no problems
      - records the draft’s dependencies
      - saves a draft with a problem and answers the problem
      - records the create in the audit trail
      - refuses a key the tenant already uses
      - makes the first draft of a bare definition version 1
      - 'replaces the draft in place on the next save, moving its version'
      - >-
        saves an expression the grammar refuses, with its problems and the fixed
        summary
      - records no dependency for an expression the grammar refuses
      - >-
        refuses a save at a draft version that is no longer current, and leaves
        the draft as it was
      - refuses a draft of an archived definition
      - 'refuses a definition the tenant does not have, 404'
      - answers the problems and the summary and leaves the draft as it was
      - changes the name at the version read and records it
      - >-
        refuses to promote a private definition without the publish permission,
        403
      - promotes a private definition for a caller who may publish
      - >-
        copies the published rule as the copy’s draft by default, with a note
        naming the source
      - >-
        copies the definition’s own fields, named as a copy and owned by the
        tenant
      - 'copies the draft when asked, under the name given'
      - refuses to copy a published rule from a definition never published
  - provenance: documented
    source: >-
      services-platform:modules/eligibility/tests/integration/services/model/authoring.integration.spec.js:suite
      header
    note: >-
      The source header describes the verification boundary and declared
      substitutions.
proof_limit: >-
  Only the named scenario checkpoints have a verified source binding; execution
  has not been attempted.
---

# Eligibility authoring checks

## Verification Boundary

This suite checks the module through real local service and database code at the entry points used by its test cases.

## What This Suite Proves

The mapped scenarios identify the capability and feature checkpoints this file exercises. The source test titles preserve the assertion-level evidence.

## What It Does Not Prove

Registration supplies no execution result or conformance decision. Checks beyond the file’s reachable assertions remain unverified, including production configuration.

## Real Dependencies and Test Doubles

The suite uses local integration fixtures. Signing, caches, provider responses or outbound delivery may be supplied by fixtures where the source declares a substitution. The source imports and suite header identify the exact dependencies.

## Must Not Be Doubled

The module behavior under assertion, transaction boundary and database constraint being checked remain real. Fixture setup cannot stand in for the asserted write or refusal.
