Skip to content

ATS-MBR-STR-001Define unit kinds and their permitted places: Capability Test Specification

Markdown

ATS-MBR-STR-001

Define unit kinds and their permitted places: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaMembershipModuleOrganizational Structure, Membership Configuration and TermsRevision2

Read atservices-membership 5994c270react-console baf6dae3

Coverage

  • Rule covered
  • Transition covered
  • Validation covered
  • Permission covered
  • Edge covered
  • Failure covered
  • Boundary gap: FND-MBR-STR-054
  • Concurrency covered
  • Invariant gap: FND-MBR-STR-054
  • Interaction covered

Test Scenarios

13 scenarios proving CAP-MBR-STR-001; 5 bound to an existing test.

01 Readable kind identity survives replacementruleapitest
Proves
BR-CAP-MBR-STR-001-01
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Save one kind with an explicit reference and another by name, then replace the first kind.
Expected
The explicit and derived references remain the saved identities.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/acceptance/structure/MBR-ACC-0001.acceptance.ts#MBR-ACC-0001 staff define, rename, retire and delete kinds of unit
Source
services-membership:tests/acceptance/structure/MBR-ACC-0001.acceptance.ts#MBR-ACC-0001 staff define, rename, retire and delete kinds of unit
02 Non-root kinds need a parent choicevalidationapinegativeproposed
Proves
BR-CAP-MBR-STR-001-02
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Attempt a non-root kind with an empty parent selection.
Expected
Validation rejects the request and the catalogue has no added kind.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Source
services-membership:modules/structure/services/persistence/organizational-unit-types.ts:parentIdsOf
03 Parent references are known or self-referentialvalidationapinegativeproposed
Proves
BR-CAP-MBR-STR-001-03
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Compare creation with an unknown parent kind and creation allowing its own kind.
Expected
The unknown choice fails and the self-referential choice saves.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Source
services-membership:modules/structure/services/persistence/organizational-unit-types.ts:requireKnownTypes
04 Duplicate kind creation preserves the first recordedgeapinegativeproposed
Proves
BR-CAP-MBR-STR-001-04
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Submit two creates using the same kind reference.
Expected
The second response reports a conflict and retains the first record.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Source
services-membership:modules/structure/services/persistence/organizational-unit-types.ts:createOrganizationalUnitType
05 Existing placements protect category choicesinteractionapinegativetest
Proves
BR-CAP-MBR-STR-001-05 INV-DOM-MBR-STR-001-05
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Remove zone parentage while the chapter category still has units under zones.
Expected
The response identifies the in-use placement choice and saves no replacement.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/acceptance/structure/MBR-ACC-0003.acceptance.ts#MBR-ACC-0003 a tree rule chapters rely on cannot be withdrawn until they move
Source
services-membership:tests/acceptance/structure/MBR-ACC-0003.acceptance.ts#MBR-ACC-0003 a tree rule chapters rely on cannot be withdrawn until they move
06 Version checks precede a complete replacementconcurrencyapinegativetest
Proves
BR-CAP-MBR-STR-001-06
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Submit a stale kind replacement, then a current replacement without plural name or display order.
Expected
The stale write fails; the accepted replacement clears the plural and restores zero ordering.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/acceptance/structure/MBR-ACC-0001.acceptance.ts#MBR-ACC-0001 staff define, rename, retire and delete kinds of unit
Source
services-membership:tests/acceptance/structure/MBR-ACC-0001.acceptance.ts#MBR-ACC-0001 staff define, rename, retire and delete kinds of unit
07 Kind retirement blocks placement until reactivationtransitionapitest
Proves
BR-CAP-MBR-STR-001-07
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Deactivate sections, attempt section creation and relocation, then reactivate the kind through replacement.
Expected
Retirement preserves existing sections and blocks placement work until reactivation.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/acceptance/structure/MBR-ACC-0004.acceptance.ts#MBR-ACC-0004 retiring the Section kind freezes every section in place
Source
services-membership:tests/acceptance/structure/MBR-ACC-0004.acceptance.ts#MBR-ACC-0004 retiring the Section kind freezes every section in place
08 Unit and program references prevent kind removalfailureapinegativetest
Proves
BR-CAP-MBR-STR-001-08
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Attempt removal of a unit-used kind and a program-selected kind.
Expected
Both conflict responses leave the referenced kinds available.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/e2e/structure-api.e2e.spec.ts#the structure API, end to end in process › refuses to delete a unit type in use, 409 unit_type_in_use
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0084: a structure delete a program’s reference blocks › refuses deleting a unit type a program lists 409 unit_type_in_use, and keeps it
services-membership:tests/acceptance/structure/MBR-ACC-0037.acceptance.ts#MBR-ACC-0037 what other parts of Membership name in the structure
Source
services-membership:tests/e2e/structure-api.e2e.spec.ts#the structure API, end to end in process › refuses to delete a unit type in use, 409 unit_type_in_use
09 Kind browsing follows saved presentation choicesruleapiproposed
Proves
BR-CAP-MBR-STR-001-09
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Create three kinds with display positions 2, 1 and 2; page twice and repeat with retired kinds excluded.
Expected
The first page begins with position 1; tied positions use readable-reference order, and the retired example is absent from the active view.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:modules/structure/services/persistence/organizational-unit-types.ts:listOrganizationalUnitTypes
10 Disabling affiliation eligibility preserves existing tiesinteractionapiproposed
Proves
BR-CAP-MBR-STR-001-10
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Record one chapter affiliation, disable the kind’s affiliation switch and attempt a second affiliation.
Expected
The earlier affiliation keeps its dates and identity; the new affiliation is refused.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:modules/structure/services/persistence/organizational-unit-types.ts:updateOrganizationalUnitType
11 Retirement changes placement eligibilityinteractionapiproposed
Proves
BR-CAP-MBR-STR-001-07 BR-CAP-MBR-STR-002-03
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Retire the section kind, attempt a new section and a section move, reactivate the kind and repeat the placement work.
Expected
Both retired-kind operations fail; after reactivation valid placement succeeds and the earlier tree remains recognizable.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:modules/structure/services/tree/tree-edits.ts:validatePlacement,services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational units in the database › the refusals › refuses a new child under an inactive unit
12 Program references protect the kind catalogueinteractionapiproposed
Proves
BR-CAP-MBR-STR-001-08 BR-CAP-MBR-STR-010-01
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Select a kind in a program requirement list and attempt kind deletion; clear the unused requirement and retry.
Expected
The selected kind is protected; the released unused kind can be removed.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:tests/e2e/structure-api.e2e.spec.ts#the structure API, end to end in process › refuses to delete a unit type in use, 409 unit_type_in_use,services-membership:modules/configuration/services/configuration/configuration-records.ts:replaceProgramUnitTypesOf
13 Workspace authority gates this capabilitypermissionapinegativeproposed
Proves
BR-CAP-MBR-STR-019-01
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Exercise the capability’s exposed operations with its read-only and management callers, then repeat with application access removed, an unlicensed workspace and an unavailable workspace.
Expected
Each named operation requires its declared authority; admission failures occur before any record or calculated result is exposed.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:tests/unit/route-authorization.spec.ts#route authorization: every Membership operation names its permission › requires membership.structure.read of every structure read and membership.structure.manage of every change,services-membership:modules/configuration/aws/api/configuration.routes.ts:configurationModuleRoutes,services-membership:tests/e2e/terms-api.e2e.spec.ts#the terms API, end to end in process › refuses a caller who holds no key in the tenant

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.