Skip to content

ATS-MBR-STR-017Maintain reasons for membership status actions: Capability Test Specification

Markdown

ATS-MBR-STR-017

Maintain reasons for membership status actions: Capability Test Specification

Markdown
  • DocumentProposed

Planning

Proves capability
CAP-MBR-STR-017

KindAcceptance test setProduct areaMembershipModuleOrganizational Structure, Membership Configuration and TermsRevision2

Read atservices-membership 5994c270react-console baf6dae3

Coverage

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

Test Scenarios

6 scenarios proving CAP-MBR-STR-017; 0 bound to an existing test.

01 Reasons reject an unsupported action categoryvalidationapinegativeproposed
Proves
BR-CAP-MBR-STR-017-01
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Attempt to create a reason categorized as expiry.
Expected
Validation reports the unsupported use and saves no reason.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Source
services-membership:modules/configuration/services/configuration/configuration-records.ts:statusReasonContent
02 Actions reject inactive or mismatched reasonsvalidationapinegativeproposed
Proves
BR-CAP-MBR-STR-017-02
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Attempt termination using a suspension-only reason and an inactive reason.
Expected
Both requests identify why the selected reason is unsuitable.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Source
services-membership:modules/configuration/services/persistence/membership-status-reasons.ts:requireStatusReason
03 Reason browsing ignores priority and allows duplicate namesruleapiproposed
Proves
BR-CAP-MBR-STR-017-04
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Create two differently identified reasons sharing a name and with opposing priority values, then list them.
Expected
Both reasons remain present and reference ordering decides their position.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:modules/configuration/services/persistence/configuration-store.ts:configurationStore
04 Reason browsing selects the requested action useruleapiproposed
Proves
BR-CAP-MBR-STR-017-06
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Create a termination reason and a suspension reason, then request each use separately.
Expected
Each answer contains only the reason of the selected use.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:modules/configuration/aws/api/configuration.routes.ts:configurationModuleRoutes
05 Rejected action reasons preserve standing inputsinteractionapiproposed
Proves
BR-CAP-MBR-STR-016-02 BR-CAP-MBR-STR-017-02
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Attempt termination with a suspension-only reason and with an inactive termination reason, then evaluate the original period.
Expected
Both actions fail and the unchanged effective term continues to produce its original standing.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:modules/terms/tests/unit/status.spec.ts#holding status: the effective states of §1 › never lets a pending term cover a date,services-membership:modules/configuration/services/persistence/membership-status-reasons.ts:requireStatusReason
06 Workspace authority gates this capabilitypermissionapinegativeproposed
Proves
BR-CAP-MBR-STR-019-02
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.