---
id: TST-COM-ORD-036
title: Product purchase eligibility through preview and placement
kind: api-lifecycle
product_area: commerce
module: orders
revision: 1
status: draft
source_sha:
  services-commerce: c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b
repository: services-commerce
files:
  - modules/checkout/tests/e2e/product-purchase-eligibility.e2e.spec.js
implements:
  - ATS-COM-ORD-003-04
  - ATS-COM-ORD-005-07
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 2
isolation: The suite creates its own test workspace records and removes them using the fixture cleanup.
evidence:
  - provenance: test
    source: 'services-commerce:modules/checkout/tests/e2e/product-purchase-eligibility.e2e.spec.js'
    test_cases:
      - previews with no problem
      - 'places the order, both lines on it'
      - >-
        previews with a product_not_eligible problem on the bound line alone, naming it and the engine's
        sentence
      - refuses the placement 409 product_not_eligible naming the product (id and name) and the reason
      - writes no order and leaves the checkout open
      - previews the line as a product_not_eligible problem
      - 'refuses the placement 409 product_not_eligible, indeterminate, closed'
      - writes no order
      - 'is unaffected: previews with no problem and places'
scenario_coverage:
  - scenario: ATS-COM-ORD-003-04
    test_cases:
      - previews with no problem
      - >-
        previews with a product_not_eligible problem on the bound line alone, naming it and the engine's
        sentence
      - previews the line as a product_not_eligible problem
    scope: >-
      The cited cases exercise the scenario’s listed fixture outcomes; this register makes no verified
      conformance claim.
  - scenario: ATS-COM-ORD-005-07
    test_cases:
      - refuses the placement 409 product_not_eligible naming the product (id and name) and the reason
      - 'refuses the placement 409 product_not_eligible, indeterminate, closed'
    scope: >-
      The cited cases exercise the scenario’s listed fixture outcomes; this register makes no verified
      conformance claim.
dependency_evidence:
  provenance: test
  source: 'services-commerce:modules/checkout/tests/e2e/product-purchase-eligibility.e2e.spec.js'
  declared_by_test: >-
    the composed handler, the routes, the workflows, the purchase check, the persistence and PostgreSQL.
    Doubled: the binding source and the display evaluation (the fixtures the running macroservice uses when
    Platform's transport is not configured: `FIXTURE_PURCHASE_BINDINGS`), Platform's `eligibility_check` (the
    database stand-in), the signing key pair.
---

# Product purchase eligibility through preview and placement

## Verification Boundary

The suite drives the composed local API dispatcher and its registered routes.

## What This Suite Proves

The registered cases check product purchase eligibility through preview and placement with their fixture records and assertions. Scenario bindings name only the examples those cases exercise.

## What It Does Not Prove

A registered file supplies no run result or verified conformance by itself. Local fixtures do not establish deployed cross-service behavior or complete browser journeys.

## Real Dependencies and Test Doubles

PostgreSQL and the exercised Commerce persistence or workflow code are real. Remote service records, clocks and transports follow the suite’s fixtures.

## Must Not Be Doubled

The database constraints, role restrictions, locks and transactions exercised by this suite must use PostgreSQL.
