Skip to content

ATS-MBR-STR-013Bundle grants and package-specific unit requirements: Capability Test Specification

Markdown

ATS-MBR-STR-013

Bundle grants and package-specific unit requirements: Capability Test Specification

Markdown
  • DocumentProposed

Planning

Proves capability
CAP-MBR-STR-013

Design

Executed by
TST-MBR-STR-002, TST-MBR-STR-044, 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-066
  • Transition covered
  • Validation covered
  • Permission covered
  • Edge covered
  • Failure gap: FND-MBR-STR-066
  • Boundary covered
  • Concurrency gap: FND-MBR-STR-066
  • Invariant gap: FND-MBR-STR-066
  • Interaction covered

Test Scenarios

9 scenarios proving CAP-MBR-STR-013; 3 bound to an existing test.

01 Submitted grants exclude own-program and oversized listsboundaryapinegativeproposed
Proves
BR-CAP-MBR-STR-013-01
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Submit a grant to the package’s own program and separately submit eleven grants.
Expected
Each invalid list fails without saving its package changes.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Source
services-membership:modules/configuration/services/configuration/configuration-records.ts:packageResource
02 Grant classifications match their target programvalidationapinegativetest
Proves
BR-CAP-MBR-STR-013-02
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Pair a grant program with a classification from another program.
Expected
The refusal identifies the grant classification.
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 grant whose type is not of the granted program 400 naming grants: membership_type_id, and writes no package
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 grant whose type is not of the granted program 400 naming grants: membership_type_id, and writes no package
03 Independent grant rules must be computablevalidationapinegativeproposed
Proves
BR-CAP-MBR-STR-013-03
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Submit an independently dated grant without a required length.
Expected
The package write fails and names the grant rule problem.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Source
services-membership:modules/configuration/services/configuration/configuration-records.ts:packageResource
04 Package unit rows report combined problemsvalidationapinegativetest
Proves
BR-CAP-MBR-STR-013-05
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Submit an affiliation-disabled kind, duplicate kinds and contradictory counts.
Expected
One response identifies every detected unit-rule problem.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/acceptance/configuration/MBR-ACC-0104.acceptance.ts#MBR-ACC-0104: A package's unit rules override the program's counts: the Regular package demands a chapter the program leaves optional, a Section-only package names a type the program does not list, a region is refused, and clearing the rules hands control back to the program
Source
services-membership:tests/acceptance/configuration/MBR-ACC-0104.acceptance.ts#MBR-ACC-0104: A package's unit rules override the program's counts: the Regular package demands a chapter the program leaves optional, a Section-only package names a type the program does not list, a region is refused, and clearing the rules hands control back to the program
05 Package requirements specialize program defaultsinteractionapitest
Proves
BR-CAP-MBR-STR-013-06
Preconditions
An isolated Membership-licensed workspace contains the relevant records, with caller permissions selected for the case.
Steps
Require chapters for Regular, add a package-only kind and then clear package requirements.
Expected
Package-specific counts and kinds apply first, with program defaults restored after clearing.
Data
The FAA example records or equivalent records prepared within the isolated workspace.
Bound to
services-membership:tests/acceptance/configuration/MBR-ACC-0104.acceptance.ts#MBR-ACC-0104: A package's unit rules override the program's counts: the Regular package demands a chapter the program leaves optional, a Section-only package names a type the program does not list, a region is refused, and clearing the rules hands control back to the program
services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#the term affiliations in the database › refuses a Regular term with no chapter: the package needs one (unit_minimum)
services-membership:modules/memberships/tests/integration/services/affiliations.integration.spec.ts#the term affiliations in the database › refuses a second chapter on a Student term: the package allows one (unit_maximum)
Source
services-membership:tests/acceptance/configuration/MBR-ACC-0104.acceptance.ts#MBR-ACC-0104: A package's unit rules override the program's counts: the Regular package demands a chapter the program leaves optional, a Section-only package names a type the program does not list, a region is refused, and clearing the rules hands control back to the program
06 Grant replacement creates new child identitiestransitionapiproposed
Proves
BR-CAP-MBR-STR-013-04
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Save a package with one grant, replace that grant list with the same submitted content at the current version and read the result.
Expected
The grant content remains equivalent and its child identity changes.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:modules/configuration/services/persistence/membership-packages.ts:replacePackageChildren
07 Omission and clearing have distinct list outcomesedgeapinegativeproposed
Proves
BR-CAP-MBR-STR-013-07
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Save fixed ends, grants and unit rules; omit all three in one update and send empty lists in the next.
Expected
Omission retains each list; the later accepted update removes all three lists.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:modules/configuration/services/configuration/configuration-records.ts:packageResource
08 Independent grants require a valid date ruleinteractionapiproposed
Proves
BR-CAP-MBR-STR-013-03 BR-CAP-MBR-STR-015-01
Preconditions
An isolated workspace contains the records and current versions needed for the case.
Steps
Submit a grant using its own anniversary rule but missing length, then correct the rule and calculate its period beside the primary term.
Expected
The invalid aggregate saves nothing; the corrected rule yields the separately expected period.
Data
Separate fixture records for the accepted and refused operations.
Source
services-membership:modules/configuration/services/configuration/configuration-records.ts:packageResource,services-membership:modules/terms/tests/unit/term-rules.spec.ts#term rules: what 2.0 decides › reports every problem of a rule at once
09 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.