Skip to content

ATS-MBR-STR-008Connect unit dues to products and settlement choices: Capability Test Specification

Markdown

ATS-MBR-STR-008

Connect unit dues to products and settlement choices: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaMembershipModuleOrganizational Structure, Membership Configuration and TermsRevision2

Read atservices-membership 5994c270react-console baf6dae3

Coverage

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

Test Scenarios

9 scenarios proving CAP-MBR-STR-008; 6 bound to an existing test.

01 Dues extensions require the appropriate productvalidationapinegativetest
Proves
BR-CAP-MBR-STR-008-01 AS-JNY-MBR-STR-001-03 INV-DOM-MBR-STR-002-06
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Create Atlanta’s extension from a chapter-dues product, then try a missing product and a membership-package product.
Expected
The valid extension retains product identity and shared fields; invalid products fail.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/e2e/packages-as-products.e2e.spec.ts#packages as products, through the API › extends a product of type chapter_dues as a unit’s dues product, under the product’s id, with the product’s name
services-membership:modules/structure/tests/unit/accounting-products.spec.ts#the Accounting products port › refuses an extension on a missing product or on a product of another type, naming the field
Source
services-membership:tests/e2e/packages-as-products.e2e.spec.ts#packages as products, through the API › extends a product of type chapter_dues as a unit’s dues product, under the product’s id, with the product’s name
02 Package and catch-all dues choices are uniqueinvariantapinegativeproposed
Proves
BR-CAP-MBR-STR-008-02 INV-DOM-MBR-STR-002-05
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Attempt duplicate package-specific dues offerings and duplicate catch-all offerings.
Expected
The second offering in each context is refused.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Source
services-membership:modules/structure/services/persistence/organizational-unit-dues-products.ts:createDuesProduct
03 Dues reads track current product stateedgeunittest
Proves
BR-CAP-MBR-STR-008-03
Preconditions
Explicit inputs or a recording fixture represent the cases exercised below.
Steps
Read an extension after its product is inactive and after the product is unavailable.
Expected
Shared fields reflect inactivity, with missing-product defaults of hidden and inactive.
Data
Literal term, state or declaration fixtures for the described cases.
Bound to
services-membership:modules/structure/tests/unit/accounting-products.spec.ts#the Accounting products port › answers the product’s common fields under the names the package wire kept: inactive is not active and not portal visible
services-membership:modules/structure/tests/unit/accounting-products.spec.ts#the Accounting products port › answers a product Accounting no longer has as its id, inactive, hidden, with no product status
Source
services-membership:modules/structure/tests/unit/accounting-products.spec.ts#the Accounting products port › answers the product’s common fields under the names the package wire kept: inactive is not active and not portal visible
04 Repointing preserves product identityconcurrencyapinegativetest
Proves
BR-CAP-MBR-STR-008-04
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Replace the dues package association using the current version and then the earlier version.
Expected
The first advances the extension version and the stale replacement fails.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/e2e/packages-as-products.e2e.spec.ts#packages as products, through the API › re-points a unit’s dues product at another package at the version just read, 200 with the next version
Source
services-membership:tests/e2e/packages-as-products.e2e.spec.ts#packages as products, through the API › re-points a unit’s dues product at another package at the version just read, 200 with the next version
05 Financial settings distinguish first and later savesruleapinegativetest
Proves
BR-CAP-MBR-STR-008-06
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Read absent settings, create them without a version and compare later saves with absent, current and stale versions.
Expected
Absent reads fail; creation succeeds and later replacement requires the current version.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
Source
services-membership:tests/acceptance/structure/MBR-ACC-0023.acceptance.ts#MBR-ACC-0023 a chapter's financial settings
06 Profile choices are stored without duplicating checkoutruleapinegativetest
Proves
BR-CAP-MBR-STR-008-07
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Save an explicit ordering profile, clear it and attempt an invalid profile shape.
Expected
The explicit pointer and cleared choice round-trip, while invalid shape fails.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
Source
services-membership:tests/acceptance/structure/MBR-ACC-0023.acceptance.ts#MBR-ACC-0023 a chapter's financial settings
07 Merge leaves local dues and settlement work on the sourceinteractionapitest
Proves
BR-CAP-MBR-STR-003-07 BR-CAP-MBR-STR-008-09
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Prepare source dues and financial settings, merge the source, inspect the returned follow-up list and reread the source facets.
Expected
The result identifies the source’s dues and settings as follow-up work; both remain readable on the source.
Data
Separate fixture records for the accepted and refused operations.
Bound to
services-membership:tests/acceptance/structure/MBR-ACC-0018.acceptance.ts#not_moved: the dues product, the settings, the legal-entity link
Source
services-membership:modules/structure/tests/integration/services/persistence/organizational-units.integration.spec.ts#organizational units in the database › merge › moves the children under the survivor, marks the unit merged and lists what it left,services-membership:modules/structure/services/persistence/organizational-unit-dues-products.ts:createDuesProduct,services-membership:tests/acceptance/structure/MBR-ACC-0018.acceptance.ts#not_moved: the dues product, the settings, the legal-entity link
08 Clearing a local profile exposes program fallbackinteractionapiproposed
Proves
BR-CAP-MBR-STR-008-07 BR-CAP-MBR-STR-009-12
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Save different local and program ordering-profile choices; resolve the sales context, clear the local choice and resolve again.
Expected
The local choice is used first and the program choice is used after clearing.
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),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)
09 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.