---
id: ATS-MBR-MEM-011
scope: CAP-MBR-MEM-011
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-011-01
    title: An application process records what it is for
    level: api
    proves:
      - BR-CAP-MBR-MEM-011-01
    preconditions: >-
      The well-known FAA workspace fixtures, or a workspace the test builds from
      them.
    steps:
      - do: >-
          Create a complete process, read it back, change it at the version read
          and clear its optional fields.
        expect: Every value reads back as sent; review defaults to on.
        provenance: test
        source:
          - >-
            services-membership:tests/acceptance/commerce/MBR-ACC-0346.acceptance.ts#MBR-ACC-0346
    expected: Every value reads back as sent; review defaults to on.
    negative: false
    data_needs: 'FAA programs, packages, units and members from the integration seed.'
    bound_to:
      - TST-MBR-MEM-108
    provenance: test
    source: >-
      services-membership:tests/acceptance/commerce/MBR-ACC-0346.acceptance.ts#MBR-ACC-0346
    category: rule
    binding_evidence:
      - suite: TST-MBR-MEM-108
        source: >-
          services-membership:tests/acceptance/commerce/MBR-ACC-0346.acceptance.ts#MBR-ACC-0346
  - id: ATS-MBR-MEM-011-02
    title: 'A process''s window and packages are checked, naming the field'
    level: api
    proves:
      - BR-CAP-MBR-MEM-011-02
    preconditions: >-
      The well-known FAA workspace fixtures, or a workspace the test builds from
      them.
    steps:
      - do: >-
          Save a window that closes before it opens, a package the workspace
          lacks and a package of another program.
        expect: Each is refused 400 naming closes_on or the package entry.
        provenance: test
        source:
          - >-
            services-membership:tests/e2e/database-refusals.e2e.spec.ts#refuses
            a window that closes before it opens 400 naming closes_on
          - >-
            services-membership:tests/e2e/database-refusals.e2e.spec.ts#refuses
            a package the workspace does not have 400 naming package_ids[1]
          - >-
            services-membership:tests/e2e/database-refusals.e2e.spec.ts#refuses
            a package of another program 400 naming package_ids[0] and the
            program
    expected: Each is refused 400 naming closes_on or the package entry.
    negative: true
    data_needs: 'FAA programs, packages, units and members from the integration seed.'
    bound_to:
      - TST-MBR-MEM-242
    provenance: test
    source: >-
      services-membership:tests/e2e/database-refusals.e2e.spec.ts#refuses a
      window that closes before it opens 400 naming closes_on
    category: validation
    binding_evidence:
      - suite: TST-MBR-MEM-242
        source: >-
          services-membership:tests/e2e/database-refusals.e2e.spec.ts#refuses a
          window that closes before it opens 400 naming closes_on
      - suite: TST-MBR-MEM-242
        source: >-
          services-membership:tests/e2e/database-refusals.e2e.spec.ts#refuses a
          package the workspace does not have 400 naming package_ids[1]
      - suite: TST-MBR-MEM-242
        source: >-
          services-membership:tests/e2e/database-refusals.e2e.spec.ts#refuses a
          package of another program 400 naming package_ids[0] and the program
  - id: ATS-MBR-MEM-011-03
    title: Outcome parameters are limited in content and size
    level: api
    proves:
      - BR-CAP-MBR-MEM-011-03
    preconditions: >-
      The well-known FAA workspace fixtures, or a workspace the test builds from
      them.
    steps:
      - do: 'Save outcome parameters with an unknown key, and over 2 KB.'
        expect: Both are refused.
        provenance: test
        source:
          - >-
            services-membership:tests/acceptance/commerce/MBR-ACC-0347.acceptance.ts#MBR-ACC-0347
    expected: Both are refused.
    negative: true
    data_needs: 'FAA programs, packages, units and members from the integration seed.'
    bound_to:
      - TST-MBR-MEM-109
    provenance: test
    source: >-
      services-membership:tests/acceptance/commerce/MBR-ACC-0347.acceptance.ts#MBR-ACC-0347
    category: boundary
    binding_evidence:
      - suite: TST-MBR-MEM-109
        source: >-
          services-membership:tests/acceptance/commerce/MBR-ACC-0347.acceptance.ts#MBR-ACC-0347
  - id: ATS-MBR-MEM-011-04
    title: The list answers the same packages as the single read
    level: api
    proves:
      - BR-CAP-MBR-MEM-011-04
    preconditions: >-
      The well-known FAA workspace fixtures, or a workspace the test builds from
      them.
    steps:
      - do: List processes and read one.
        expect: 'Each listed process carries its packages in order, as the read does.'
        provenance: test
        source:
          - >-
            services-membership:tests/e2e/application-processes-api.e2e.spec.ts#answers
            each listed process with the packages it offers, in their order, as
            the read of the process does
    expected: 'Each listed process carries its packages in order, as the read does.'
    negative: false
    data_needs: 'FAA programs, packages, units and members from the integration seed.'
    bound_to:
      - TST-MBR-MEM-237
    provenance: test
    source: >-
      services-membership:tests/e2e/application-processes-api.e2e.spec.ts#answers
      each listed process with the packages it offers, in their order, as the
      read of the process does
    category: rule
    binding_evidence:
      - suite: TST-MBR-MEM-237
        source: >-
          services-membership:tests/e2e/application-processes-api.e2e.spec.ts#answers
          each listed process with the packages it offers, in their order, as
          the read of the process does
  - id: ATS-MBR-MEM-011-05
    title: Apply the configured review process to checkout
    category: interaction
    level: api
    proves:
      - BR-CAP-MBR-MEM-009-11
      - BR-CAP-MBR-MEM-011-01
    interacts_with:
      - CAP-MBR-MEM-009
    workflows:
      - WF-MBR-MEM-011
    relies_on:
      - ATS-MBR-MEM-009-11
      - ATS-MBR-MEM-011-01
    preconditions: An active application process reviews the selected package.
    steps:
      - do: >-
          Prepare checkout before approval, then record a matching approval and
          prepare with its application.
        expect: >-
          The first preparation needs approval; the approved application permits
          preparation of the same offer.
        provenance: proposed
        source: &ref_0
          - >-
            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:tests/acceptance/commerce/MBR-ACC-0346.acceptance.ts#MBR-ACC-0346
    expected: >-
      The first preparation needs approval; the approved application permits
      preparation of the same offer.
    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-011-06
    title: Connect a reviewed offer to its decision and order
    category: interaction
    level: api
    proves:
      - BR-CAP-MBR-MEM-011-01
      - BR-CAP-MBR-MEM-012-05
      - BR-CAP-MBR-MEM-012-06
    interacts_with:
      - CAP-MBR-MEM-012
    workflows: []
    relies_on:
      - ATS-MBR-MEM-011-01
      - ATS-MBR-MEM-012-05
    preconditions: >-
      A saved process offers a package and a typed application refers to that
      process.
    steps:
      - do: >-
          Read the offered package, deliver approval, inspect the recorded
          application and prepared order.
        expect: >-
          The recorded decision places the selected offered package and chosen
          chapter dues once.
        provenance: proposed
        source: &ref_1
          - >-
            services-membership:tests/acceptance/commerce/MBR-ACC-0346.acceptance.ts#MBR-ACC-0346
          - >-
            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 recorded decision places the selected offered package and chosen
      chapter dues once.
    negative: false
    data_needs: >-
      An isolated workspace with the specified membership, package, chapter and
      partner-port fixtures.
    bound_to: []
    provenance: proposed
    source: *ref_1
  - id: ATS-MBR-MEM-011-07
    title: Apply member reach when reading attached applications
    category: interaction
    level: api
    proves:
      - BR-CAP-MBR-MEM-011-04
      - BR-CAP-MBR-MEM-015-04
    interacts_with:
      - CAP-MBR-MEM-015
    workflows: []
    relies_on:
      - ATS-MBR-MEM-011-04
      - ATS-MBR-MEM-015-04
    preconditions: >-
      An officer reaches one member and not another; each has an application,
      and a third application has no member.
    steps:
      - do: >-
          Read and list applications with the officer and a workspace-wide
          reader.
        expect: >-
          The officer receives only reachable member applications; the
          unattached application is available only to the workspace-wide reader.
        provenance: proposed
        source: &ref_2
          - >-
            services-membership:tests/e2e/application-processes-api.e2e.spec.ts#answers
            each listed process with the packages it offers, in their order, as
            the read of the process does
          - >-
            services-membership:modules/memberships/tests/integration/services/unit-scope.integration.spec.ts#reads
            Jo for the Atlanta officer, the Savannah affiliation marked out of
            scope
    expected: >-
      The officer receives only reachable member applications; the unattached
      application is available only to the workspace-wide reader.
    negative: false
    data_needs: >-
      An isolated workspace with the specified membership, package, chapter and
      partner-port fixtures.
    bound_to: []
    provenance: proposed
    source: *ref_2
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-093'
  transition: 'gap: FND-MBR-MEM-093'
  validation: covered
  permission: 'gap: FND-MBR-MEM-093'
  edge: 'gap: FND-MBR-MEM-093'
  failure: 'gap: FND-MBR-MEM-093'
  boundary: covered
  concurrency: 'gap: FND-MBR-MEM-093'
  invariant: 'gap: FND-MBR-MEM-093'
  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.
---

# Define what applications are for and read the applications: Capability Test Specification

## Coverage

| Rule | Scenario or Finding |
|---|---|
| `BR-CAP-MBR-MEM-011-01` | `ATS-MBR-MEM-011-01`, `ATS-MBR-MEM-011-05`, `ATS-MBR-MEM-011-06` |
| `BR-CAP-MBR-MEM-011-02` | `ATS-MBR-MEM-011-02` |
| `BR-CAP-MBR-MEM-011-03` | `ATS-MBR-MEM-011-03` |
| `BR-CAP-MBR-MEM-011-04` | `ATS-MBR-MEM-011-04`, `ATS-MBR-MEM-011-07` |
| `BR-CAP-MBR-MEM-011-05` | no scenario: `FND-MBR-MEM-041` |
| `BR-CAP-MBR-MEM-011-06` | no scenario: `FND-MBR-MEM-042` |
| `BR-CAP-MBR-MEM-011-07` | no scenario: `FND-MBR-MEM-040` |

## 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.
