Skip to content

ATS-MBR-STR-011Classify memberships and configure organization flow-down: Capability Test Specification

Markdown

ATS-MBR-STR-011

Classify memberships and configure organization flow-down: Capability Test Specification

Markdown
  • DocumentProposed

Planning

Proves capability
CAP-MBR-STR-011

Design

Executed by
TST-MBR-STR-032, TST-MBR-STR-037, TST-MBR-STR-095

KindAcceptance test setProduct areaMembershipModuleOrganizational Structure, Membership Configuration and TermsRevision2

Read atservices-membership 5994c270react-console baf6dae3

Coverage

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

Test Scenarios

8 scenarios proving CAP-MBR-STR-011; 3 bound to an existing test.

01 Dependent types cannot cross programsinvariantapinegativetest
Proves
BR-CAP-MBR-STR-011-01 INV-DOM-MBR-STR-003-02
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Create a type under a missing program and try moving a package-referenced type elsewhere.
Expected
The relevant program field is reported and existing classifications remain intact.
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 type of a program that does not exist 400 naming program_id
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 moving a type a package names to another program 400 naming program_id, and leaves it where it was
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 type of a program that does not exist 400 naming program_id
02 Type overrides preserve zero and no-benefit choicesinteractionapitest
Proves
BR-CAP-MBR-STR-011-02
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Give Alumni zero grace and no benefits, then evaluate a covering and an ended period.
Expected
The covering period is active without benefits and the ended period has no inherited grace.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
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-0097.acceptance.ts#MBR-ACC-0097: A type's flow-down settings and benefits flag are configured and felt downstream: a firm's Corporate membership reaches its billing contacts, and a type without benefits makes its members active without benefits
Source
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
03 Flow-down needs an available targetvalidationapinegativetest
Proves
BR-CAP-MBR-STR-011-03 INV-DOM-MBR-STR-003-03
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Enable flow-down with no target and with a missing target.
Expected
Both cases fail and identify the target field.
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 flow-down enabled without a target type 400 naming flowdown_type_id, and writes no type
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0264: a flow-down type that does not exist › refuses an unknown flowdown_type_id 400 naming the field and the type, and writes no type
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 flow-down enabled without a target type 400 naming flowdown_type_id, and writes no type
04 Flow-down selections deduplicate at their size limitboundaryapiproposed
Proves
BR-CAP-MBR-STR-011-04
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Submit 100 role selections including a duplicate, omit them in a later update, then submit 101 selections.
Expected
The accepted list contains each role once; omission retains it and the oversized request is refused.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:modules/configuration/services/persistence/membership-types.ts:replaceFlowdownLists
05 Type retirement separates staff entry from product saletransitionapiproposed
Proves
BR-CAP-MBR-STR-011-06
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Retire a type used by an active package product; compare staff term creation with purchase preparation.
Expected
Staff term creation refuses the type; purchase preparation still offers the active product.
Data
Separate fixture records for the accepted and refused operations.
Source
react-console:acceptance/membership/journeys/configuration/MBR-ACC-0113.json
06 Package references prevent moving a classificationinteractionapiproposed
Proves
BR-CAP-MBR-STR-011-01 BR-CAP-MBR-STR-012-05
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Create a package using a type, then try moving the type to another program.
Expected
The program change fails and both package and type retain their original program relationship.
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 moving a type a package names to another program 400 naming program_id, and leaves it where it was,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 package of a type of another program 400 naming membership_type_id, and writes no package nor unit rule
07 Changing benefits changes current interpretationinteractionapiproposed
Proves
BR-CAP-MBR-STR-011-02 BR-CAP-MBR-STR-016-04
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Evaluate a covering term with benefits, disable benefits on its type and evaluate again from live settings.
Expected
The same period becomes active without benefits without changing its dates.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:modules/configuration/db/membership-types.table.ts:membershipTypes,services-membership:modules/terms/tests/unit/status.spec.ts#holding status: the rows of §2 › is active without benefits when the covering term’s classification confers none
08 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.