---
id: ATS-MBR-MEM-012
scope: CAP-MBR-MEM-012
product_area: membership
module: memberships
revision: 2
status: proposed
approved_by: null
approved_at: null
source_sha:
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
scenarios:
  - id: ATS-MBR-MEM-012-01
    title: Decisions about other applications' subjects are refused
    level: unit
    proves:
      - BR-CAP-MBR-MEM-012-01
    preconditions: >-
      The well-known FAA workspace fixtures, or a workspace the test builds from
      them.
    steps:
      - do: >-
          Deliver a golden decision document, and one about another
          application's subject kind.
        expect: The golden one parses; the other is refused.
        provenance: test
        source:
          - >-
            services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#parses
            the golden delivery document
          - >-
            services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#refuses
            a decision about a subject kind that is not Membership’s
    expected: The golden one parses; the other is refused.
    negative: true
    data_needs: 'FAA programs, packages, units and members from the integration seed.'
    bound_to:
      - TST-MBR-MEM-003
    provenance: test
    source: >-
      services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#parses
      the golden delivery document
    category: validation
    binding_evidence:
      - suite: TST-MBR-MEM-003
        source: >-
          services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#parses
          the golden delivery document
      - suite: TST-MBR-MEM-003
        source: >-
          services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#refuses
          a decision about a subject kind that is not Membership’s
  - id: ATS-MBR-MEM-012-02
    title: Decision codes map onto the engine's kinds
    level: unit
    proves:
      - BR-CAP-MBR-MEM-012-02
    preconditions: >-
      The well-known FAA workspace fixtures, or a workspace the test builds from
      them.
    steps:
      - do: Map each join and membership code.
        expect: As the rule lists.
        provenance: test
        source:
          - >-
            services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#maps
            a join’s codes onto the engine’s kinds
          - >-
            services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#maps
            renew, reinstate and change onto approved for a membership
    expected: As the rule lists.
    negative: false
    data_needs: 'FAA programs, packages, units and members from the integration seed.'
    bound_to:
      - TST-MBR-MEM-003
    provenance: test
    source: >-
      services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#maps
      a join’s codes onto the engine’s kinds
    category: rule
    binding_evidence:
      - suite: TST-MBR-MEM-003
        source: >-
          services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#maps
          a join’s codes onto the engine’s kinds
      - suite: TST-MBR-MEM-003
        source: >-
          services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#maps
          renew, reinstate and change onto approved for a membership
  - id: ATS-MBR-MEM-012-03
    title: >-
      A decision is recorded once, superseded explicitly and never by a stale
      one
    level: unit
    proves:
      - BR-CAP-MBR-MEM-012-03
      - INV-DOM-MBR-MEM-004-06
    preconditions: >-
      The well-known FAA workspace fixtures, or a workspace the test builds from
      them.
    steps:
      - do: >-
          Record a decision, redeliver it, deliver one naming it as superseded,
          and deliver a stale one.
        expect: 'Recorded, answered as recorded, replaced, ignored.'
        provenance: test
        source:
          - >-
            services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#records
            a first decision
          - >-
            services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#answers
            a redelivered decision as recorded
          - >-
            services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#records
            a decision that supersedes the recorded one
          - >-
            services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#ignores
            a decision a later one has replaced
    expected: 'Recorded, answered as recorded, replaced, ignored.'
    negative: false
    data_needs: 'FAA programs, packages, units and members from the integration seed.'
    bound_to:
      - TST-MBR-MEM-003
    provenance: test
    source: >-
      services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#records
      a first decision
    category: concurrency
    binding_evidence:
      - suite: TST-MBR-MEM-003
        source: >-
          services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#records
          a first decision
      - suite: TST-MBR-MEM-003
        source: >-
          services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#answers
          a redelivered decision as recorded
      - suite: TST-MBR-MEM-003
        source: >-
          services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#records
          a decision that supersedes the recorded one
      - suite: TST-MBR-MEM-003
        source: >-
          services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#ignores
          a decision a later one has replaced
  - id: ATS-MBR-MEM-012-04
    title: The decision leaves the application in its kind's status
    level: unit
    proves:
      - BR-CAP-MBR-MEM-012-04
    preconditions: >-
      The well-known FAA workspace fixtures, or a workspace the test builds from
      them.
    steps:
      - do: >-
          Deliver approval, rejection, revision required, withdrawal and closing
          outcomes to the pure status mapping.
        expect: >-
          The mapping returns decided for approval and rejection, awaiting
          applicant for revision, withdrawn for withdrawal and closed for
          closing.
        provenance: test
        source:
          - >-
            services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#leaves
            the application decided, awaiting the applicant or withdrawn by the
            decision’s kind
    expected: >-
      The mapping returns decided for approval and rejection, awaiting applicant
      for revision, withdrawn for withdrawal and closed for closing.
    negative: false
    data_needs: 'FAA programs, packages, units and members from the integration seed.'
    bound_to:
      - TST-MBR-MEM-003
    provenance: test
    source: >-
      services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#leaves
      the application decided, awaiting the applicant or withdrawn by the
      decision’s kind
    category: transition
    binding_evidence:
      - suite: TST-MBR-MEM-003
        source: >-
          services-membership:modules/applications/tests/unit/submissions-contracts.spec.ts#leaves
          the application decided, awaiting the applicant or withdrawn by the
          decision’s kind
  - id: ATS-MBR-MEM-012-05
    title: An approval orders the dues once and acknowledges
    level: api
    proves:
      - BR-CAP-MBR-MEM-012-05
      - BR-CAP-MBR-MEM-012-06
    preconditions: >-
      The well-known FAA workspace fixtures, or a workspace the test builds from
      them.
    steps:
      - do: 'Deliver Nia''s approval with Atlanta chosen, then redeliver it.'
        expect: >-
          One order for the package and Atlanta's dues is placed and recorded;
          the purchase stays pending; the redelivery calls neither port.
        provenance: test
        source:
          - >-
            services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#records
            an approval, places the dues order through the port (package and
            chapter dues), and acknowledges it
          - >-
            services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#leaves
            the approved purchase pending in Membership until Commerce fulfils
            it
          - >-
            services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#answers
            a redelivered decision as recorded and calls neither port again
    expected: >-
      One order for the package and Atlanta's dues is placed and recorded; the
      purchase stays pending; the redelivery calls neither port.
    negative: false
    data_needs: 'FAA programs, packages, units and members from the integration seed.'
    bound_to:
      - TST-MBR-MEM-002
    provenance: test
    source: >-
      services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#records
      an approval, places the dues order through the port (package and chapter
      dues), and acknowledges it
    category: interaction
    binding_evidence:
      - suite: TST-MBR-MEM-002
        source: >-
          services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#records
          an approval, places the dues order through the port (package and
          chapter dues), and acknowledges it
      - suite: TST-MBR-MEM-002
        source: >-
          services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#leaves
          the approved purchase pending in Membership until Commerce fulfils it
      - suite: TST-MBR-MEM-002
        source: >-
          services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#answers
          a redelivered decision as recorded and calls neither port again
  - id: ATS-MBR-MEM-012-06
    title: A rejection releases the reserved term and keeps the membership
    level: api
    proves:
      - BR-CAP-MBR-MEM-012-07
    preconditions: >-
      The well-known FAA workspace fixtures, or a workspace the test builds from
      them.
    steps:
      - do: >-
          Reject an application whose purchase was placed; withdraw and close
          others.
        expect: >-
          Each pending term is cancelled with its reservation; the memberships
          remain.
        provenance: proposed
        source: >-
          services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#cancels
          the pending term of a rejected application whose purchase was placed
    expected: >-
      Each pending term is cancelled with its reservation; the memberships
      remain.
    negative: false
    data_needs: 'FAA programs, packages, units and members from the integration seed.'
    bound_to: []
    provenance: proposed
    source: >-
      services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#cancels
      the pending term of a rejected application whose purchase was placed
    category: transition
    binding_gap: FND-MBR-MEM-103
  - id: ATS-MBR-MEM-012-07
    title: A decision for an unknown submission is not acknowledged
    level: api
    proves:
      - BR-CAP-MBR-MEM-012-09
    preconditions: >-
      The well-known FAA workspace fixtures, or a workspace the test builds from
      them.
    steps:
      - do: Deliver a decision for a submission Membership has no application of.
        expect: Answered unknown_submission and not acknowledged.
        provenance: test
        source:
          - >-
            services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#does
            not acknowledge a decision for a submission it holds no application
            of
    expected: Answered unknown_submission and not acknowledged.
    negative: true
    data_needs: 'FAA programs, packages, units and members from the integration seed.'
    bound_to:
      - TST-MBR-MEM-002
    provenance: test
    source: >-
      services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#does
      not acknowledge a decision for a submission it holds no application of
    category: failure
    binding_evidence:
      - suite: TST-MBR-MEM-002
        source: >-
          services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#does
          not acknowledge a decision for a submission it holds no application of
  - id: ATS-MBR-MEM-012-08
    title: Use decided application contacts for assigned coverage
    category: interaction
    level: api
    proves:
      - BR-CAP-MBR-MEM-006-06
      - BR-CAP-MBR-MEM-012-05
      - BR-CAP-MBR-MEM-012-06
    interacts_with:
      - CAP-MBR-MEM-006
    workflows: []
    relies_on:
      - ATS-MBR-MEM-006-06
      - ATS-MBR-MEM-012-05
    preconditions: >-
      A corporate application carries selected people and a package with an
      assigned-seat cap.
    steps:
      - do: >-
          Record the application approval, fulfil its purchase, and derive
          children from the selected people.
        expect: >-
          The decided application supplies the assignment candidates and the
          resulting assigned holdings respect the selected cap.
        provenance: proposed
        source: &ref_0
          - >-
            services-membership:modules/memberships/services/flowdown/organization-children.ts:wantedPeople
          - >-
            services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#records
            an approval, places the dues order through the port (package and
            chapter dues), and acknowledges it
    expected: >-
      The decided application supplies the assignment candidates and the
      resulting assigned holdings respect the selected cap.
    negative: false
    data_needs: >-
      An isolated workspace with the specified membership, package, chapter and
      partner-port fixtures.
    bound_to: []
    provenance: proposed
    source: *ref_0
  - id: ATS-MBR-MEM-012-09
    title: Keep an approved purchase pending until fulfilment
    category: interaction
    level: api
    proves:
      - BR-CAP-MBR-MEM-009-11
      - BR-CAP-MBR-MEM-012-05
      - BR-CAP-MBR-MEM-012-06
    interacts_with:
      - CAP-MBR-MEM-009
    workflows:
      - WF-MBR-MEM-016
    relies_on:
      - ATS-MBR-MEM-009-11
      - ATS-MBR-MEM-012-05
    preconditions: A typed application selects a package and dues-bearing chapter.
    steps:
      - do: >-
          Deliver approval, inspect the placed purchase, redeliver approval,
          then fulfil the authorization.
        expect: >-
          The decision creates one pending purchase; only fulfilment commits
          coverage, and decision replay creates no second order.
        provenance: proposed
        source: &ref_1
          - >-
            services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#answers
            requires_approval for the package the process reviews when no
            decided application is named
          - >-
            services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#records
            an approval, places the dues order through the port (package and
            chapter dues), and acknowledges it
    expected: >-
      The decision creates one pending purchase; only fulfilment commits
      coverage, and decision replay creates no second order.
    negative: false
    data_needs: >-
      An isolated workspace with the specified membership, package, chapter and
      partner-port fixtures.
    bound_to: []
    provenance: proposed
    source: *ref_1
evidence:
  - >-
    services-membership at 5994c270e8a37a30f848e99ba5b5ee6b87c08893: the
    capability sources and the bound test files.
  - >-
    rhythm-v2-docs:specs/membership/memberships/design/: domain objects, state
    models and workflows reviewed for coverage.
coverage:
  rule: 'gap: FND-MBR-MEM-094'
  transition: 'gap: FND-MBR-MEM-094'
  validation: covered
  permission: 'gap: FND-MBR-MEM-094'
  edge: 'gap: FND-MBR-MEM-094'
  failure: covered
  boundary: 'gap: FND-MBR-MEM-094'
  concurrency: covered
  invariant: 'gap: FND-MBR-MEM-094'
  interaction: covered
coverage_notes:
  transition: >-
    The scenarios do not enumerate every applicable object transition; the
    finding preserves the remaining transition matrix.
  permission: >-
    The finding records named permissions without a complete positive and
    negative proof.
  invariant: >-
    Existing invariant examples do not cover every applicable domain-object
    constraint.
  interaction: >-
    Every related capability and each cross-capability workflow has an explicit
    composite scenario. Unbound composites remain proposed.
---

# Act on an application's decision: Capability Test Specification

## Coverage

| Rule | Scenario or Finding |
|---|---|
| `BR-CAP-MBR-MEM-012-01` | `ATS-MBR-MEM-012-01` |
| `BR-CAP-MBR-MEM-012-02` | `ATS-MBR-MEM-012-02` |
| `BR-CAP-MBR-MEM-012-03` | `ATS-MBR-MEM-012-03` |
| `BR-CAP-MBR-MEM-012-04` | `ATS-MBR-MEM-012-04` |
| `BR-CAP-MBR-MEM-012-05` | `ATS-MBR-MEM-012-05`, `ATS-MBR-MEM-012-08`, `ATS-MBR-MEM-012-09` |
| `BR-CAP-MBR-MEM-012-06` | `ATS-MBR-MEM-012-05`, `ATS-MBR-MEM-012-08`, `ATS-MBR-MEM-012-09` |
| `BR-CAP-MBR-MEM-012-07` | `ATS-MBR-MEM-012-06` |
| `BR-CAP-MBR-MEM-012-08` | no scenario: `FND-MBR-MEM-044` |
| `BR-CAP-MBR-MEM-012-09` | `ATS-MBR-MEM-012-07` |

## Interactions With Related Capabilities

The interaction cases test how a shared holding, period, chapter connection or recorded change affects related work. Each case names its related capabilities and workflows in frontmatter. A composite case remains proposed until executable assertions establish every part of its expected outcome.
