---
id: ATS-MBR-STR-010
scope: CAP-MBR-STR-010
product_area: membership
module: structure
revision: 1
status: proposed
approved_by: null
approved_at: null
source_sha:
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
scenarios:
  - id: ATS-MBR-STR-010-01
    title: Program requirements replace at the read version
    level: api
    proves:
      - BR-CAP-MBR-STR-010-01
    preconditions: >-
      An isolated Membership-licensed workspace contains the relevant records, with caller permissions
      selected for the case.
    steps: Replace unit requirements with the current program version and repeat with the earlier version.
    expected: 'The list saves once, advances the program version and rejects the stale retry.'
    negative: true
    data_needs: The FAA example records or equivalent records prepared within the isolated workspace.
    bound_to: []
    provenance: proposed
    source: >-
      services-membership:modules/configuration/services/configuration/configuration-records.ts:replaceProgramUnitTypesOf
  - id: ATS-MBR-STR-010-02
    title: Non-affiliation programs reject populated requirements
    level: api
    proves:
      - BR-CAP-MBR-STR-010-02
    preconditions: >-
      An isolated Membership-licensed workspace contains the relevant records, with caller permissions
      selected for the case.
    steps: Submit a nonempty category list for a program without unit binding.
    expected: The request fails without changing the program list.
    negative: true
    data_needs: The FAA example records or equivalent records prepared within the isolated workspace.
    bound_to: []
    provenance: proposed
    source: >-
      services-membership:modules/configuration/services/configuration/configuration-records.ts:replaceProgramUnitTypesOf
  - id: ATS-MBR-STR-010-03
    title: All invalid unit rows are reported
    level: api
    proves:
      - BR-CAP-MBR-STR-010-03
    preconditions: >-
      An isolated Membership-licensed workspace contains the relevant records, with caller permissions
      selected for the case.
    steps: 'Submit an affiliation-disabled category, a repeated category and contradictory counts together.'
    expected: The refusal identifies all detected row problems.
    negative: true
    data_needs: The FAA example records or equivalent records prepared within the isolated workspace.
    bound_to: []
    provenance: proposed
    source: >-
      services-membership:modules/configuration/services/configuration/configuration-records.ts:unitTypeProblems
  - id: ATS-MBR-STR-010-04
    title: Current affiliations protect their category
    level: api
    proves:
      - BR-CAP-MBR-STR-010-04
    preconditions: >-
      An isolated Membership-licensed workspace contains the relevant records, with caller permissions
      selected for the case.
    steps: Remove a kind still used by an open qualifying affiliation.
    expected: The list replacement fails and retains the category.
    negative: true
    data_needs: The FAA example records or equivalent records prepared within the isolated workspace.
    bound_to:
      - >-
        services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#the
        term affiliations in the database › refuses to drop a unit type from the program while an affiliation
        uses it (unit_type_in_use)
    provenance: test
    source: >-
      services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#the
      term affiliations in the database › refuses to drop a unit type from the program while an affiliation
      uses it (unit_type_in_use)
evidence:
  - 'services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts'
---

# Set a program’s affiliation requirements: Acceptance Test Set

## Coverage

| Rule | Proof Scenario or Open Finding |
|---|---|
| `BR-CAP-MBR-STR-010-01` | `ATS-MBR-STR-010-01` |
| `BR-CAP-MBR-STR-010-02` | `ATS-MBR-STR-010-02` |
| `BR-CAP-MBR-STR-010-03` | `ATS-MBR-STR-010-03` |
| `BR-CAP-MBR-STR-010-04` | `ATS-MBR-STR-010-04` |
