---
id: FAS-COM-CAT-04
title: 'Marketing Benefits: Feature Acceptance Suite'
feature: FEAT-COM-CAT-04
product_area: commerce
module: catalog
revision: 1
status: proposed
product_intent: proposed
source_sha:
  services-commerce: c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
capabilities:
  - CAP-COM-CAT-014
  - CAP-COM-CAT-015
  - CAP-COM-CAT-016
  - CAP-COM-CAT-017
  - CAP-COM-CAT-018
scenarios:
  - id: FAS-COM-CAT-04-01
    title: A prepared code campaign progresses from preview to recorded use
    kind: behaviour
    exercises:
      - CAP-COM-CAT-014
      - CAP-COM-CAT-015
      - CAP-COM-CAT-016
      - CAP-COM-CAT-017
      - CAP-COM-CAT-018
    relies_on:
      - ATS-COM-CAT-014-08
      - ATS-COM-CAT-015-11
      - ATS-COM-CAT-016-01
      - ATS-COM-CAT-017-01
      - ATS-COM-CAT-018-01
    preconditions: A coordinator prepares a coded campaign and an administrator can launch it.
    steps:
      - do: >-
          Issue codes, compare a sample preview, activate, place a qualifying order and inspect
          usage and immutable line allocations.
        provenance: proposed
        source:
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-014-create-a-promotion-and-take-it-through-its-life.md#ATS-COM-CAT-014-08
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-015-give-out-codes-and-say-who-may-use-them.md#ATS-COM-CAT-015-11
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-016-apply-the-lowest-valid-discount-at-checkout.md#ATS-COM-CAT-016-01
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-017-track-release-and-measure-promotion-uses.md#ATS-COM-CAT-017-01
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-018-try-promotions-on-a-sample-cart-before-they-go-live.md#ATS-COM-CAT-018-01
    expected: A winning benefit is explained before sale and retained with one counted redemption afterward.
    negative: false
    data_needs: >-
      A run-owned workspace, named fixture products and independent caller grants; deterministic
      clock for dated cases.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-014-create-a-promotion-and-take-it-through-its-life.md#ATS-COM-CAT-014-08
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-015-give-out-codes-and-say-who-may-use-them.md#ATS-COM-CAT-015-11
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-016-apply-the-lowest-valid-discount-at-checkout.md#ATS-COM-CAT-016-01
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-017-track-release-and-measure-promotion-uses.md#ATS-COM-CAT-017-01
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-018-try-promotions-on-a-sample-cart-before-they-go-live.md#ATS-COM-CAT-018-01
    assertions:
      - expect: >-
          A winning benefit is explained before sale and retained with one counted redemption
          afterward.
        provenance: proposed
        source:
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-014-create-a-promotion-and-take-it-through-its-life.md#ATS-COM-CAT-014-08
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-015-give-out-codes-and-say-who-may-use-them.md#ATS-COM-CAT-015-11
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-016-apply-the-lowest-valid-discount-at-checkout.md#ATS-COM-CAT-016-01
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-017-track-release-and-measure-promotion-uses.md#ATS-COM-CAT-017-01
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-018-try-promotions-on-a-sample-cart-before-they-go-live.md#ATS-COM-CAT-018-01
  - id: FAS-COM-CAT-04-02
    title: Changing combination terms changes the winning preview
    kind: interaction
    exercises:
      - CAP-COM-CAT-014
      - CAP-COM-CAT-015
      - CAP-COM-CAT-016
      - CAP-COM-CAT-018
    relies_on:
      - ATS-COM-CAT-014-06
      - ATS-COM-CAT-015-06
      - ATS-COM-CAT-016-01
      - ATS-COM-CAT-018-01
    preconditions: Member and Student prices compete with a quarter-off code.
    steps:
      - do: Compare combining and noncombining sample and checkout previews for the fixture subjects.
        provenance: test
        source:
          - 'services-commerce:modules/promotions/tests/e2e/promotion-previews.e2e.spec.js'
    expected: >-
      The exercised cases agree line for line and report sixty, seventy-five or sixty dollars
      according to the valid alternative.
    negative: false
    data_needs: >-
      A run-owned workspace, named fixture products and independent caller grants; deterministic
      clock for dated cases.
    bound_to:
      - TST-COM-CAT-093
    provenance: test
    source:
      - 'services-commerce:modules/promotions/tests/e2e/promotion-previews.e2e.spec.js'
    assertions:
      - expect: >-
          The exercised cases agree line for line and report sixty, seventy-five or sixty dollars
          according to the valid alternative.
        provenance: test
        source:
          - 'services-commerce:modules/promotions/tests/e2e/promotion-previews.e2e.spec.js'
  - id: FAS-COM-CAT-04-03
    title: A released use restores capacity while the campaign keeps its history
    kind: lifecycle
    exercises:
      - CAP-COM-CAT-014
      - CAP-COM-CAT-015
      - CAP-COM-CAT-016
      - CAP-COM-CAT-017
    relies_on:
      - ATS-COM-CAT-014-11
      - ATS-COM-CAT-015-07
      - ATS-COM-CAT-017-03
      - ATS-COM-CAT-017-04
    preconditions: An applied single-use redemption has frozen allocations and has locked the campaign.
    steps:
      - do: >-
          Attempt to edit its economic terms, release once with a reason, repeat release, then
          duplicate the ended campaign.
        provenance: proposed
        source:
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-014-create-a-promotion-and-take-it-through-its-life.md#ATS-COM-CAT-014-11
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-015-give-out-codes-and-say-who-may-use-them.md#ATS-COM-CAT-015-07
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-017-track-release-and-measure-promotion-uses.md#ATS-COM-CAT-017-03
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-017-track-release-and-measure-promotion-uses.md#ATS-COM-CAT-017-04
    expected: >-
      Economic editing and duplicate release refuse; capacity is restored once and a new editable
      draft has no inherited codes or uses.
    negative: true
    data_needs: >-
      A run-owned workspace, named fixture products and independent caller grants; deterministic
      clock for dated cases.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-014-create-a-promotion-and-take-it-through-its-life.md#ATS-COM-CAT-014-11
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-015-give-out-codes-and-say-who-may-use-them.md#ATS-COM-CAT-015-07
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-017-track-release-and-measure-promotion-uses.md#ATS-COM-CAT-017-03
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-017-track-release-and-measure-promotion-uses.md#ATS-COM-CAT-017-04
    assertions:
      - expect: >-
          Economic editing and duplicate release refuse; capacity is restored once and a new
          editable draft has no inherited codes or uses.
        provenance: proposed
        source:
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-014-create-a-promotion-and-take-it-through-its-life.md#ATS-COM-CAT-014-11
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-015-give-out-codes-and-say-who-may-use-them.md#ATS-COM-CAT-015-07
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-017-track-release-and-measure-promotion-uses.md#ATS-COM-CAT-017-03
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-017-track-release-and-measure-promotion-uses.md#ATS-COM-CAT-017-04
  - id: FAS-COM-CAT-04-04
    title: 'Preparation, launch and release remain separate authorities'
    kind: permission
    exercises:
      - CAP-COM-CAT-014
      - CAP-COM-CAT-015
      - CAP-COM-CAT-017
      - CAP-COM-CAT-018
    relies_on:
      - ATS-COM-CAT-014-09
      - ATS-COM-CAT-015-13
      - ATS-COM-CAT-017-08
      - ATS-COM-CAT-018-05
    preconditions: 'Read, manage, launch and override callers exist.'
    steps:
      - do: >-
          Inspect and preview as a reader; prepare and issue as management; attempt activation
          without launch authority; launch with its grant and release with override.
        provenance: proposed
        source:
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-014-create-a-promotion-and-take-it-through-its-life.md#ATS-COM-CAT-014-09
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-015-give-out-codes-and-say-who-may-use-them.md#ATS-COM-CAT-015-13
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-017-track-release-and-measure-promotion-uses.md#ATS-COM-CAT-017-08
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-018-try-promotions-on-a-sample-cart-before-they-go-live.md#ATS-COM-CAT-018-05
    expected: >-
      Each action requires its own authority and refused attempts leave configuration and counters
      unchanged.
    negative: true
    data_needs: >-
      A run-owned workspace, named fixture products and independent caller grants; deterministic
      clock for dated cases.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-014-create-a-promotion-and-take-it-through-its-life.md#ATS-COM-CAT-014-09
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-015-give-out-codes-and-say-who-may-use-them.md#ATS-COM-CAT-015-13
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-017-track-release-and-measure-promotion-uses.md#ATS-COM-CAT-017-08
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-018-try-promotions-on-a-sample-cart-before-they-go-live.md#ATS-COM-CAT-018-05
    assertions:
      - expect: >-
          Each action requires its own authority and refused attempts leave configuration and
          counters unchanged.
        provenance: proposed
        source:
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-014-create-a-promotion-and-take-it-through-its-life.md#ATS-COM-CAT-014-09
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-015-give-out-codes-and-say-who-may-use-them.md#ATS-COM-CAT-015-13
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-017-track-release-and-measure-promotion-uses.md#ATS-COM-CAT-017-08
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-018-try-promotions-on-a-sample-cart-before-they-go-live.md#ATS-COM-CAT-018-05
  - id: FAS-COM-CAT-04-05
    title: A sample preview consumes no promotion use
    kind: regression
    exercises:
      - CAP-COM-CAT-014
      - CAP-COM-CAT-015
      - CAP-COM-CAT-016
      - CAP-COM-CAT-017
      - CAP-COM-CAT-018
    relies_on:
      - ATS-COM-CAT-014-06
      - ATS-COM-CAT-015-01
      - ATS-COM-CAT-016-09
      - ATS-COM-CAT-017-01
      - ATS-COM-CAT-018-03
    preconditions: The workspace has checkouts and coded and automatic campaigns with saved counters.
    steps:
      - do: >-
          Preview several carts including a named draft and compare checkout, item, event, order,
          redemption and usage counts before and afterward.
        provenance: test
        source:
          - 'services-commerce:modules/promotions/tests/e2e/promotion-previews.e2e.spec.js'
    expected: Sample preview changes no stored checkout or usage count and leaves the draft in preparation.
    negative: false
    data_needs: >-
      A run-owned workspace, named fixture products and independent caller grants; deterministic
      clock for dated cases.
    bound_to:
      - TST-COM-CAT-093
    provenance: test
    source:
      - 'services-commerce:modules/promotions/tests/e2e/promotion-previews.e2e.spec.js'
    assertions:
      - expect: >-
          Sample preview changes no stored checkout or usage count and leaves the draft in
          preparation.
        provenance: test
        source:
          - 'services-commerce:modules/promotions/tests/e2e/promotion-previews.e2e.spec.js'
evidence:
  - >-
    rhythm-v2-docs:specs/commerce/catalog/planning/capabilities/CAP-COM-CAT-014-create-a-promotion-and-take-it-through-its-life.md#CAP-COM-CAT-014
  - >-
    rhythm-v2-docs:specs/commerce/catalog/planning/capabilities/CAP-COM-CAT-015-give-out-codes-and-say-who-may-use-them.md#CAP-COM-CAT-015
  - >-
    rhythm-v2-docs:specs/commerce/catalog/planning/capabilities/CAP-COM-CAT-016-apply-the-lowest-valid-discount-at-checkout.md#CAP-COM-CAT-016
  - >-
    rhythm-v2-docs:specs/commerce/catalog/planning/capabilities/CAP-COM-CAT-017-track-release-and-measure-promotion-uses.md#CAP-COM-CAT-017
  - >-
    rhythm-v2-docs:specs/commerce/catalog/planning/capabilities/CAP-COM-CAT-018-try-promotions-on-a-sample-cart-before-they-go-live.md#CAP-COM-CAT-018
---

# Marketing Benefits: Feature Acceptance Suite

## What the Feature Must Do as a Whole

A prepared code campaign progresses from preview to recorded use. The suite follows changes through the feature’s saved configuration, assessments and retained outcomes. It combines the detailed capability scenarios into customer-visible checks and keeps unbound chains proposed.

## Interactions Between Capabilities

Changing combination terms changes the winning preview. Each interaction checks both the changed input and the dependent outcome; an isolated capability result alone is insufficient. Lifecycle and permission cases revisit the same boundary after a state or authority change.

## Regression Record

| Revision | Change | Scenario | Why |
|---|---|---|---|
| 1 | initial | all | Establish cumulative coverage from the landed feature and capability contracts. |
