Skip to content

ATS-MBR-STR-009Establish programs and their membership context: Capability Test Specification

Markdown

ATS-MBR-STR-009

Establish programs and their membership context: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaMembershipModuleOrganizational Structure, Membership Configuration and TermsRevision2

Read atservices-membership 5994c270react-console baf6dae3

Coverage

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

Test Scenarios

10 scenarios proving CAP-MBR-STR-009; 3 bound to an existing test.

01 Identity-bound programs need a categoryvalidationapinegativetest
Proves
BR-CAP-MBR-STR-009-01 INV-DOM-MBR-STR-003-01
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Attempt identity-bound program creation without its identifying unit category.
Expected
The request fails with the identifying-category field reported.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses an identity-bound program without its identity unit type 400 naming identity_unit_type_id
services-membership:tests/acceptance/configuration/MBR-ACC-0120.acceptance.ts#MBR-ACC-0120: Scenario 11 through the route: an identity-bound Chapter Membership program names its chapter unit type and its owning unit, refuses the wrong structure references in plain words and the missing identity type raw, and Kim holds a National and an Atlanta membership side by side
Source
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses an identity-bound program without its identity unit type 400 naming identity_unit_type_id
02 Program structural references are verified togethervalidationapinegativetest
Proves
BR-CAP-MBR-STR-009-02
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Submit an absent identity category and an absent owning unit.
Expected
One refusal names both references and no program is created.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/acceptance/configuration/MBR-ACC-0120.acceptance.ts#MBR-ACC-0120: Scenario 11 through the route: an identity-bound Chapter Membership program names its chapter unit type and its owning unit, refuses the wrong structure references in plain words and the missing identity type raw, and Kim holds a National and an Atlanta membership side by side
Source
services-membership:tests/acceptance/configuration/MBR-ACC-0120.acceptance.ts#MBR-ACC-0120: Scenario 11 through the route: an identity-bound Chapter Membership program names its chapter unit type and its owning unit, refuses the wrong structure references in plain words and the missing identity type raw, and Kim holds a National and an Atlanta membership side by side
03 Changed grace settings are read liveinteractionapinegativetest
Proves
BR-CAP-MBR-STR-009-05
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Attempt an oversized grace allowance, then change a valid allowance and evaluate an existing member.
Expected
The excessive value fails and the existing holding uses the new valid grace.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses a grace period of 2^31 days 400 naming grace_days, beyond what the column stores
services-membership:tests/acceptance/configuration/MBR-ACC-0092.acceptance.ts#MBR-ACC-0092: Changing a grace period moves every existing member at once: a type override wins over the program, zero is not blank, and even an as-of answer for a past date follows today's setting
services-membership:tests/acceptance/configuration/MBR-ACC-0119.acceptance.ts#MBR-ACC-0119: Scenario 4 in configuration terms: Sam's grace, lapse, drop and rejoin follow the program's 60-day grace and 60-day continuity gap and the package's 180-day reinstatement, and widening the continuity gap afterwards merges his two episodes into one
Source
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses a grace period of 2^31 days 400 naming grace_days, beyond what the column stores
04 Exclusivity changes affect later enrolmentsinteractionapiproposed
Proves
BR-CAP-MBR-STR-009-06
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Establish two overlapping holdings, put their programs in one exclusivity group and attempt another overlapping enrolment; then clear the group and retry.
Expected
Earlier holdings stay intact; the grouped attempt fails and the cleared-group attempt succeeds.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:tests/acceptance/configuration/MBR-ACC-0093.acceptance.ts#MBR-ACC-0093: Putting two programs into one exclusivity group refuses new overlapping memberships from then on while members who already hold both keep them, and removing the group opens them again
05 Program order follows references rather than saved positionsruleapiproposed
Proves
BR-CAP-MBR-STR-009-11
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Create two programs with opposite reference and display-position ordering and page their catalogue.
Expected
The answer follows reference order while each record retains its saved position.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:modules/configuration/services/persistence/configuration-store.ts:configurationStore
06 An absent program profile delegates resolutionboundaryapiproposed
Proves
BR-CAP-MBR-STR-009-12
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Read a program with an explicit ordering profile, then clear the profile and prepare the next sales context with application and workspace defaults.
Expected
The explicit choice is used first; the cleared choice allows the configured fallback without copying checkout fields into the program.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:docs/migrations/packages-as-products/README.md#Ordering profiles (added the same day, from Commerce's decision Andrew approved at about 15:45 UTC)
07 Program binding controls accepted requirement listsinteractionapiproposed
Proves
BR-CAP-MBR-STR-009-01 BR-CAP-MBR-STR-010-02
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Change an unused program from affiliation binding to no binding, attempt a populated requirement replacement and then an empty replacement.
Expected
The populated list fails and the empty list saves at the current program version.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses an identity-bound program without its identity unit type 400 naming identity_unit_type_id,services-membership:modules/configuration/services/configuration/configuration-records.ts:replaceProgramUnitTypesOf
08 A zero type override changes live grace interpretationinteractionapiproposed
Proves
BR-CAP-MBR-STR-009-05 BR-CAP-MBR-STR-011-02
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Set program grace to 60 and type grace to zero, evaluate an ended holding, then clear the type override and evaluate again.
Expected
The first answer is lapsed and the second uses program grace.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses a grace period of 2^31 days 400 naming grace_days, beyond what the column stores,services-membership:modules/configuration/db/membership-types.table.ts:membershipTypes
09 Changing program grace changes an existing holding answerinteractionapiproposed
Proves
BR-CAP-MBR-STR-009-05 BR-CAP-MBR-STR-016-03
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Evaluate an ended holding with 60 grace days, narrow the live program allowance and evaluate the same date again.
Expected
The retained term is unchanged while its standing changes from grace to lapsed.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses a grace period of 2^31 days 400 naming grace_days, beyond what the column stores,services-membership:modules/terms/tests/unit/status.spec.ts#holding status: the rows of §2 › is in grace on the last day of grace (D = E + grace_days)
10 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.