---
id: TST-COM-FUL-074
title: Post purchase shipping
kind: api-lifecycle
product_area: commerce
module: fulfillment
revision: 1
status: draft
source_sha:
  services-commerce: c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
repository: services-commerce
files:
  - modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js
implements:
  - ATS-COM-FUL-012-12
  - ATS-COM-FUL-014-03
  - ATS-COM-FUL-014-04
  - ATS-COM-FUL-014-09
  - ATS-COM-FUL-015-01
  - ATS-COM-FUL-015-04
  - ATS-COM-FUL-015-06
  - ATS-COM-FUL-015-07
  - ATS-COM-FUL-018-07
  - ATS-COM-FUL-018-10
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
isolation: >-
  Run-created workspace identifiers and fixture records in the prepared test database; concurrency
  cases own their extra connections.
evidence:
  - repository: services-commerce
    path: modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js
    test_titles:
      - >-
        executes the cancellation in the one request: the line executed with the shipment line among
        its fence refs, a cancel obligation open, the document executing
      - >-
        fences and cancels the shipment line, pulls the package and voids the counter label, and
        refuses the handoff asked after (409)
      - >-
        delivers the cancel to the Merchandise participant: unit 2 released, the kept units unfenced
        and picked, the document completed, the memo and the refund after the domain
      - carries the two kept units on a new shipment (0..1)
      - >-
        refuses the cancellation of the shipped shirts: rejected, must_return with
        shipment_handed_off (B9)
      - >-
        authorizes the return with an RMA carrying a return_label shipment packed at the counter:
        the two shipped units in one parcel, to the warehouse, the label the clerk’s (B14)
      - >-
        records the receipt of both units against the RMA (the retry under the key answers it
        again): the document received, nothing on the shelf yet
      - inspects the line and moves the receipt to inspected and the return to inspecting
      - >-
        dispositions one unit restocked and one scrapped in one transaction: the shelf up one, the
        receipt dispositioned, the document completed with the memo and the refund for the two (B15,
        B11)
      - 'refuses a reader the receiving routes 403 permission_missing, and the member 403'
    scenario_anchors:
      - >-
        services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#fences and
        cancels the shipment line, pulls the package and voids the counter label, and refuses the
        handoff asked after (409)
      - >-
        services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#carries the
        two kept units on a new shipment (0..1)
      - >-
        services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#delivers the
        cancel to the Merchandise participant: unit 2 released, the kept units unfenced and picked,
        the document completed, the memo and the refund after the domain
      - >-
        services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#refuses the
        cancellation of the shipped shirts: rejected, must_return with shipment_handed_off (B9)
      - >-
        services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#records the
        receipt of both units against the RMA (the retry under the key answers it again): the
        document received, nothing on the shelf yet
      - >-
        services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#dispositions
        one unit restocked and one scrapped in one transaction: the shelf up one, the receipt
        dispositioned, the document completed with the memo and the refund for the two (B15, B11)
      - >-
        services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#authorizes
        the return with an RMA carrying a return_label shipment packed at the counter: the two
        shipped units in one parcel, to the warehouse, the label the clerk’s (B14)
      - >-
        services-commerce:modules/shipping/tests/e2e/post-purchase-shipping.e2e.spec.js#refuses a
        reader the receiving routes 403 permission_missing, and the member 403
---

# Post purchase shipping

## Verification Boundary

This suite calls the composed local HTTP handler over the prepared database. It checks post purchase shipping through request contracts and the enforcing security boundary.

## What This Suite Proves

The bound scenarios identify the assertions this suite contributes. Source anchors retain the exact test cases; where a capability scenario has several contributing suites, a single binding does not imply that every branch runs here.

## What It Does Not Prove

Local handler execution does not establish deployed routing, queue delivery or browser behavior. It also supplies no latest result until a qualification run records one.

## Real Dependencies and Test Doubles

The database and imported Commerce persistence services are real. Fixtures create the records owned by this run. Signed local security contexts and the composed handler exercise the request boundary. Queue publication uses the suite’s recording or scripted publisher. Accounting command responses use the suite’s fixture port.

## Must Not Be Doubled

Keep the composed handler, permission enforcement, request validation and database writes real when claiming this local API coverage. Scripted financial, queue or carrier outcomes must remain visibly separate from deployed integration evidence.
