---
id: TST-PFM-ELG-484
title: Eligibility transform criteria checks
kind: unit
product_area: platform
module: eligibility
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - modules/eligibility/tests/unit/migration/transform-criteria.spec.js
implements: []
environment: mock
implementation_state: implemented
latest_result: not-run
conformance: not-verified
estimated_minutes: 1
isolation: One process with suite-local inputs.
evidence:
  - provenance: test
    source: >-
      services-platform:modules/eligibility/tests/unit/migration/transform-criteria.spec.js
    cases:
      - >-
        maps types, packages, statuses and status reasons to the membership
        condition types
      - >-
        keeps "any membership record" for members without statuses, with a
        warning and a review item to tighten it
      - >-
        maps non-members to no membership record, with the warning that an
        expired member is a member
      - >-
        requires a chapter, then the listed chapters of the listed types,
        negated by the section operator
      - >-
        maps committee options to one quantified block per 1.0 sub-check over
        current seats
      - >-
        requires every listed program for certifications, as 1.0 did, with the
        warning that any record counted
      - >-
        maps the age range to two comparisons, warning that the maximum is now
        in whole years
      - >-
        drops a contact-only section on an organization host and offers it
        retargeted to the acting contact
      - >-
        leaves event registrations out for an organization, as 1.0 passed it,
        and offers them retargeted
      - >-
        reads the organization type of the primary affiliation and the roles of
        any affiliation for a contact
      - 'ignores contact roles for an organization, as 1.0 did, with a warning'
      - >-
        keeps "has an address" under a negated location, since 1.0 refused a
        customer with none
      - maps an `or` over publications to one condition naming them all
      - 'maps each entitlement restriction with its quantity, one by default'
      - inverts the whole rule under a top-level not
      - maps all and any to groups and each known fact to its condition type
      - >-
        sends a rule over an unknown fact or a dead operator to review with the
        rules kept, and leaves it out of the draft
      - decides a customerType comparison once for the definition’s kind
      - >-
        keeps an expression’s text in a review item and leaves it out of the
        draft
      - >-
        keeps a custom Lambda’s id in a review item, and answers no definition
        when nothing else is set
      - >-
        answers no definition for criteria that do not have the 1.0 shape, with
        the schema’s issues
      - >-
        offers the primary organization, the purchasing organization or both for
        the organization switch on organization orders
      - >-
        rewrites the organization switch to the primary organization on a
        contact host, with a warning and no review
      - >-
        offers the bill-to contact, the purchaser or the acting contact when an
        organization order’s rules name contact facts
      - >-
        offers the order’s ship-to party or the line recipient for a special
        price with line recipients
      - >-
        offers the bill-to contact, the purchaser of either kind or the acting
        contact for a coupon on organization orders
      - >-
        offers the organization as the subject, read through the acting contact,
        for an organization process offered to a contact
      - >-
        offers a contact rule, an organization rule or both when a caller-typed
        host names no kind
      - >-
        answers no definition when the customer type can never match the host,
        and offers the retarget
      - flags "Meet NONE" with nothing enabled as refusing everyone
      - 'reports every key the 1.0 schema does not declare, by its path'
      - >-
        keeps the unknown keys in the criteria it reads, rather than stripping
        them
      - warns once for each unknown key
      - >-
        warns that each application-owned condition type is pending
        registration, and not for CRM’s
      - answers a review item rather than an expression the grammar refuses
      - >-
        answers only expressions without problems, for a rule that touches every
        section
  - provenance: documented
    source: >-
      services-platform:modules/eligibility/tests/unit/migration/transform-criteria.spec.js:suite
      header
    note: >-
      The source header describes the verification boundary and declared
      substitutions.
proof_limit: >-
  No complete capability or feature scenario is mapped to this file; case-level
  ownership remains a coverage finding.
---

# Eligibility transform criteria checks

## Verification Boundary

This suite checks isolated decisions and validation using the imported inputs. It cannot establish a complete service or browser lifecycle.

## What This Suite Proves

The file contains executable checks, but no complete scenario mapping is established here. Its source test titles identify the remaining mapping work.

## What It Does Not Prove

Registration supplies no execution result or conformance decision. Passing isolated checks does not establish deployed dependencies or cross-application delivery.

## Real Dependencies and Test Doubles

The suite runs isolated checks; its imported fixtures and injected collaborators define the substitutions. The source imports and suite header identify the exact dependencies.

## Must Not Be Doubled

The decision or validator being asserted remains real; returning the expected answer from a substitute defeats the check.
