---
id: ATS-MBR-MEM-019
scope: CAP-MBR-MEM-019
product_area: membership
module: memberships
revision: 1
status: proposed
approved_by:
approved_at:
source_sha:
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
scenarios:
  - id: ATS-MBR-MEM-019-01
    title: "The live datasets answer today's status, type, episodes and units"
    level: api
    proves:
      - BR-CAP-MBR-MEM-019-01
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "Query the memberships and affiliation views as the application role."
    expected: "Today's status, current type, episode count, primary unit by type and every unit with its ancestors once."
    negative: false
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:modules/memberships/tests/integration/db/membership-functions.integration.spec.ts#answers the query layer’s picks from memberships_for_queries: status today, current type, episode count"
      - "services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#answers the dataset’s views as the application role: the primary unit today, every unit with its ancestors once"
    provenance: test
    source: "services-membership:modules/memberships/tests/integration/db/membership-functions.integration.spec.ts#answers the query layer’s picks from memberships_for_queries: status today, current type, episode count"
  - id: ATS-MBR-MEM-019-02
    title: "A month's snapshot is known at the month's end"
    level: api
    proves:
      - BR-CAP-MBR-MEM-019-02
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "Plan, dispatch and run September for a workspace with a member entered in October."
    expected: "September is planned once, published as known at its end in the workspace's zone, and does not hold the October member."
    negative: false
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:modules/snapshots/tests/integration/snapshot-pipeline.integration.spec.ts#plans September’s first version for the tenant, once"
      - "services-membership:modules/snapshots/tests/integration/snapshot-pipeline.integration.spec.ts#publishes the planned run as the captured version, known at the month’s end in the tenant’s zone"
      - "services-membership:modules/snapshots/tests/integration/snapshot-pipeline.integration.spec.ts#captures nothing recorded after the month’s end: the membership entered in October is not in September"
    provenance: test
    source: "services-membership:modules/snapshots/tests/integration/snapshot-pipeline.integration.spec.ts#plans September’s first version for the tenant, once"
  - id: ATS-MBR-MEM-019-03
    title: "Each member row is described by its term, and ties by their tree then"
    level: api
    proves:
      - BR-CAP-MBR-MEM-019-03
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "Generate September for FAA."
    expected: "Each row describes the covering, latest or next term; Jo's two chapters are filed with the Eastern Region among their ancestors."
    negative: false
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#describes each member row by its term: the covering one, else the latest before, else the first after"
      - "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#files each affiliation with its unit and every ancestor the unit had at the period end, nearest first"
      - "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#files Jo’s two chapters with the Eastern Region among their ancestors"
    provenance: test
    source: "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#describes each member row by its term: the covering one, else the latest before, else the first after"
  - id: ATS-MBR-MEM-019-04
    title: "Counts group the rows and count the month's movements"
    level: api
    proves:
      - BR-CAP-MBR-MEM-019-04
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "Generate a month with joins, renewals, lapses and reinstatements."
    expected: "Groups by type, package, status, grace and origin, with each movement counted."
    negative: false
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#counts the member rows by type, package, status, grace and origin"
      - "services-membership:modules/snapshots/tests/unit/membership-snapshot-checks.spec.ts#counts the member rows of each group once, in key order"
    provenance: test
    source: "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#counts the member rows by type, package, status, grace and origin"
  - id: ATS-MBR-MEM-019-05
    title: "A failing check publishes nothing"
    level: api
    proves:
      - BR-CAP-MBR-MEM-019-05
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "Run a month whose counts do not add up."
    expected: "The run fails, nothing is published, and the earlier version stays current."
    negative: true
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#fails the run on the counts check, publishes nothing, and leaves the current version current"
      - "services-membership:modules/snapshots/tests/unit/membership-snapshot-checks.spec.ts#fails the counts check when a group’s count is not its member rows"
      - "services-membership:modules/snapshots/tests/unit/membership-snapshot-checks.spec.ts#fails the affiliation check when an affiliation row has no member row"
    provenance: test
    source: "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#fails the run on the counts check, publishes nothing, and leaves the current version current"
  - id: ATS-MBR-MEM-019-06
    title: "Reruns reproduce a month or restate it by exactly the corrections"
    level: api
    proves:
      - BR-CAP-MBR-MEM-019-06
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "Rerun September with the original instant and with a later one after a correction."
    expected: "Identical rows, then rows differing only by the corrected member; each published as the next version."
    negative: false
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#writes identical member, affiliation and count rows with the original known_at"
      - "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#differs, with a later known_at, by exactly the corrected membership"
      - "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#publishes each rerun as the next version and keeps the earlier ones readable"
      - "services-membership:tests/acceptance/history/MBR-ACC-0548.acceptance.ts#MBR-ACC-0548"
    provenance: test
    source: "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#writes identical member, affiliation and count rows with the original known_at"
  - id: ATS-MBR-MEM-019-07
    title: "The workspace chooses what each month freezes"
    level: api
    proves:
      - BR-CAP-MBR-MEM-019-07
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "Configure a captured rank and a reconstructed membership field, reorder them and drop one."
    expected: "The run freezes the configured characteristics; a dropped one is deactivated."
    negative: false
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:tests/e2e/s10-historical-dimension.e2e.spec.ts#configures rank__c as a captured dimension of the tenant’s snapshots"
      - "services-membership:tests/acceptance/history/MBR-ACC-0543.acceptance.ts#MBR-ACC-0543"
    provenance: test
    source: "services-membership:tests/e2e/s10-historical-dimension.e2e.spec.ts#configures rank__c as a captured dimension of the tenant’s snapshots"
  - id: ATS-MBR-MEM-019-08
    title: "Captured values are taken once and carried forward"
    level: unit
    proves:
      - BR-CAP-MBR-MEM-019-08
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "Plan the capture for the latest month, a rerun of a published month, and a back-fill of an older month."
    expected: "Read live, carried forward, not captured."
    negative: false
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:modules/snapshots/tests/unit/dimension-plan.spec.ts#reads the live contact for the first capture of the latest completed month"
      - "services-membership:modules/snapshots/tests/unit/dimension-plan.spec.ts#carries the superseded version’s rows forward on a rerun of a published month"
      - "services-membership:modules/snapshots/tests/unit/dimension-plan.spec.ts#captures nothing for an older month with no published version: today’s value is not the period end’s"
      - "services-membership:tests/e2e/s10-historical-dimension.e2e.spec.ts#keeps September’s rank as captured when it is rerun after the contact changed"
    provenance: test
    source: "services-membership:modules/snapshots/tests/unit/dimension-plan.spec.ts#reads the live contact for the first capture of the latest completed month"
  - id: ATS-MBR-MEM-019-09
    title: "Reports read the current published version only"
    level: api
    proves:
      - BR-CAP-MBR-MEM-019-09
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "Read the published views after two versions of a month."
    expected: "Only the current version is read, inside the workspace."
    negative: false
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#reads the current published version alone through the published view, in the tenant"
    provenance: test
    source: "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#reads the current published version alone through the published view, in the tenant"
  - id: ATS-MBR-MEM-019-10
    title: "A month is filed under its own month-end tree"
    level: api
    proves:
      - BR-CAP-MBR-MEM-019-10
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "Restate September after Atlanta moved in October."
    expected: "Atlanta is still under the Eastern Region in September."
    negative: false
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:tests/e2e/s09-restructuring.e2e.spec.ts#still files Atlanta under the Eastern Region in a September restated after the move: the period end’s tree"
      - "services-membership:tests/e2e/s09-restructuring.e2e.spec.ts#still holds Atlanta among the Eastern Region’s descendants as of the period end"
    provenance: test
    source: "services-membership:tests/e2e/s09-restructuring.e2e.spec.ts#still files Atlanta under the Eastern Region in a September restated after the move: the period end’s tree"
  - id: ATS-MBR-MEM-019-11
    title: "Snapshot rows are purged only from a workspace being deleted"
    level: api
    proves:
      - BR-CAP-MBR-MEM-019-13
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "Purge a live workspace, then one being deleted."
    expected: "The first is refused before any row goes; the second removes the rows in batches."
    negative: true
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#refuses to purge the tenant while Platform holds it active, before any row is removed (DEF-MBR-0010)"
      - "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#removes the tenant’s snapshot rows through membership.snapshots, in batches"
    provenance: test
    source: "services-membership:modules/snapshots/tests/integration/membership-snapshot.integration.spec.ts#refuses to purge the tenant while Platform holds it active, before any row is removed (DEF-MBR-0010)"
evidence:
  - "services-membership at 5994c270e8a37a30f848e99ba5b5ee6b87c08893: the capability sources and the bound test files."
---

# Report on membership now and month by month: Acceptance Test Set

## Coverage

| Rule | Proved by |
|---|---|
| `BR-CAP-MBR-MEM-019-01` | `ATS-MBR-MEM-019-01` |
| `BR-CAP-MBR-MEM-019-02` | `ATS-MBR-MEM-019-02` |
| `BR-CAP-MBR-MEM-019-03` | `ATS-MBR-MEM-019-03` |
| `BR-CAP-MBR-MEM-019-04` | `ATS-MBR-MEM-019-04` |
| `BR-CAP-MBR-MEM-019-05` | `ATS-MBR-MEM-019-05` |
| `BR-CAP-MBR-MEM-019-06` | `ATS-MBR-MEM-019-06` |
| `BR-CAP-MBR-MEM-019-07` | `ATS-MBR-MEM-019-07` |
| `BR-CAP-MBR-MEM-019-08` | `ATS-MBR-MEM-019-08` |
| `BR-CAP-MBR-MEM-019-09` | `ATS-MBR-MEM-019-09` |
| `BR-CAP-MBR-MEM-019-10` | `ATS-MBR-MEM-019-10` |
| `BR-CAP-MBR-MEM-019-11` | no scenario: `FND-MBR-MEM-061` |
| `BR-CAP-MBR-MEM-019-12` | no scenario: `FND-MBR-MEM-062` |
| `BR-CAP-MBR-MEM-019-13` | `ATS-MBR-MEM-019-11` |
