Skip to content

ATS-PFM-ELG-007Connect a rule to an application decision: Capability Test Specification

Markdown

ATS-PFM-ELG-007

Connect a rule to an application decision: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaPlatformModuleEligibility, Responsibilities and AttentionRevision3

Read atservices-platform ad3f6a65react-console baf6dae3

Coverage

  • Rule covered
  • Transition gap: FND-PFM-ELG-059
  • Validation covered
  • Permission gap: FND-PFM-ELG-059
  • Edge gap: FND-PFM-ELG-059
  • Failure gap: FND-PFM-ELG-059
  • Boundary covered
  • Concurrency covered
  • Invariant covered
  • Interaction covered

Test Scenarios

20 scenarios proving CAP-PFM-ELG-007; 14 bound to an existing test.

01 Authorize binding managementpermissionapinegativetest
Proves
BR-CAP-PFM-ELG-007-01
Preconditions
Workspace personas, roleless and staff callers and outside customers are available.
Steps
Create, edit and remove bindings as each.
Expected
Only callers with binding-management authority succeed.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/e2e/eligibility-definitions.e2e.spec.js#refuses the bindings routes to a caller without the bindings permission, 403
Source
services-platform:modules/eligibility/tests/e2e/eligibility-definitions.e2e.spec.js#refuses the bindings routes to a caller without the bindings permission, 403
02 Reject incompatible purposesvalidationapinegativetest
Proves
BR-CAP-PFM-ELG-007-02 INV-DOM-PFM-ELG-002-04
Preconditions
Purposes provide different subjects, facts and provider support.
Steps
Attempt each expression against each purpose.
Expected
Compatible pairs succeed and incompatible pairs name the missing subject, fact or condition.
Data
No fixtures beyond the described setup.
Bound to
Source
services-platform:modules/eligibility/tests/integration/services/bindings/consumer-bindings.integration.spec.js#refuses a consumer kind the registry does not have, and writes nothing
03 Validate configured parameter valuesvalidationunitnegativetest
Proves
BR-CAP-PFM-ELG-007-03
Preconditions
A rule declares typed parameters and defaults.
Steps
Supply unknown, absent-required, mistyped, unsupported-choice and out-of-range values.
Expected
Each invalid parameter is named, and an omitted defaultable value is filled.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/unit/binding-fit.spec.js#refuses a value for a parameter the rule does not declare
services-platform:modules/eligibility/tests/unit/binding-fit.spec.js#accepts a required parameter left out when it has a default
Source
services-platform:modules/eligibility/tests/unit/binding-fit.spec.js#refuses a value for a parameter the rule does not declare
04 Reject invalid new pinsvalidationapinegativetest
Proves
BR-CAP-PFM-ELG-007-04 INV-DOM-PFM-ELG-002-02 INV-DOM-PFM-ELG-002-03
Preconditions
A rule has publications, a draft and a retired release.
Steps
Request missing, draft, foreign and retired pins and read an existing pin after retirement.
Expected
New invalid pins fail while the previously stored pin remains.
Data
No fixtures beyond the described setup.
Bound to
Source
services-platform:modules/eligibility/tests/integration/services/persistence/bindings.integration.spec.js#refuses a pin of the definition’s draft
05 Use declared failure defaultsruleapitest
Proves
BR-CAP-PFM-ELG-007-05
Preconditions
A purpose defaults to closed.
Steps
Bind without a policy, with each valid policy and with an unsupported one.
Expected
The default and explicit choices are retained; the unsupported policy fails.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/integration/services/bindings/consumer-bindings.integration.spec.js#takes the consumer kind’s default fail policy when the request names none
services-platform:modules/eligibility/tests/e2e/eligibility-definitions.e2e.spec.js#creates the binding with the consumer kind’s default fail policy
Source
services-platform:modules/eligibility/tests/integration/services/bindings/consumer-bindings.integration.spec.js#takes the consumer kind’s default fail policy when the request names none
06 Prevent repeated and obsolete usesinvariantapinegativetest
Proves
BR-CAP-PFM-ELG-007-06 INV-DOM-PFM-ELG-002-01
Preconditions
A consumer has a binding and other rules are deprecated or archived.
Steps
Duplicate the binding and bind the obsolete rules.
Expected
Every request fails without a write.
Data
No fixtures beyond the described setup.
Bound to
Source
services-platform:modules/eligibility/tests/integration/services/persistence/bindings.integration.spec.js#refuses a second binding of the same consumer to the same definition
07 Protect binding updates from stale readersconcurrencyapinegativetest
Proves
BR-CAP-PFM-ELG-007-07 INV-DOM-PFM-ELG-002-04
Preconditions
Two administrators read one binding version.
Steps
Submit their successive updates.
Expected
The later obsolete update requests a reload and preserves the accepted change.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/integration/services/bindings/consumer-bindings.integration.spec.js#refuses a change to parameters the rule does not declare, and leaves the binding as it was
Source
services-platform:modules/eligibility/tests/integration/services/bindings/consumer-bindings.integration.spec.js#refuses a change at a version that is no longer current
08 Apply suspension immediatelytransitionapinegativetest
Proves
BR-CAP-PFM-ELG-007-08 INV-DOM-PFM-ELG-002-05
Preconditions
A kiosk has a rule binding.
Steps
Suspend and evaluate, resume and evaluate, then archive and retry activation.
Expected
Suspension refuses, valid resumption answers and archive prevents further activation.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/integration/services/persistence/bindings.integration.spec.js#refuses to make a suspended binding of an archived definition active again
Source
react-console:acceptance/eligibility/playwright/journeys/bindings/ELIG-ACC-0217.spec.ts#ELIG-ACC-0217
09 Remove plans while preserving historytransitionapitest
Proves
BR-CAP-PFM-ELG-007-09 INV-DOM-PFM-ELG-002-06
Preconditions
A binding has compiled plans and retained answers.
Steps
Delete it, inspect history and archive its rule.
Expected
Plans are removed, decisions remain and dependency-free archive succeeds.
Data
No fixtures beyond the described setup.
Bound to
Source
services-platform:modules/eligibility/tests/integration/services/persistence/bindings.integration.spec.js#takes the binding’s plans with it
10 Bound and page binding discoveryboundaryapinegativetest
Proves
BR-CAP-PFM-ELG-007-10
Preconditions
A rule has many consumers across applications.
Steps
Read cursor pages and filtered consumer references at 100, 101 and no required filter.
Expected
Pages avoid duplicates, 100 references pass and excessive or unqualified requests fail.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/e2e/eligibility-governance-repairs.e2e.spec.js#answers 400 naming the limit for more than 100 values, on both routes
services-platform:modules/eligibility/tests/e2e/eligibility-definitions.e2e.spec.js#refuses a list that names neither a definition nor a consumer, 400
Source
services-platform:modules/eligibility/tests/e2e/eligibility-governance-repairs.e2e.spec.js#honours limit=2 and answers next_cursor
11 Use service identity in dispatchpermissionapitest
Proves
BR-CAP-PFM-ELG-007-11
Preconditions
A registered consumer principal is available.
Steps
Create, inspect, edit and delete through dispatch, then try a web caller.
Expected
Dispatch succeeds as the service and web access is denied.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/e2e/eligibility-evaluate.e2e.spec.js#registers the binding, recorded as made by the service principal
services-platform:modules/eligibility/tests/e2e/eligibility-evaluate.e2e.spec.js#refuses a console caller a service route over HTTP, as a mismatched context
Source
services-platform:modules/eligibility/tests/e2e/eligibility-evaluate.e2e.spec.js#registers the binding, recorded as made by the service principal
12 Revalidate complete plan changesruleapitest
Proves
BR-CAP-PFM-ELG-007-12
Preconditions
A binding has a previously read plan tag.
Steps
Request unchanged content, then change a reference, failure policy and portal wording.
Expected
Unchanged requests return not modified; each relevant change yields a new tag.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/e2e/eligibility-governance-repairs.e2e.spec.js#answers 304 to its own tag while nothing changed (premise of the cases below)
services-platform:modules/eligibility/tests/e2e/eligibility-governance-repairs.e2e.spec.js#answers a new tag, 200, when a definition the rule references is published
services-platform:modules/eligibility/tests/e2e/eligibility-governance-repairs.e2e.spec.js#answers a new tag, 200, when the binding’s fail policy changes
services-platform:modules/eligibility/tests/e2e/eligibility-governance-repairs.e2e.spec.js#answers a new tag, 200, when the definition’s portal message changes
Source
services-platform:modules/eligibility/tests/e2e/eligibility-governance-repairs.e2e.spec.js#answers 304 to its own tag while nothing changed (premise of the cases below)
13 Separate staff and service plan detailpermissionapinegativetest
Proves
BR-CAP-PFM-ELG-007-13 INV-DOM-PFM-ELG-002-07
Preconditions
An analyst and consumer service can read the plan.
Steps
Fetch the same SQL-backed plan as both.
Expected
Staff retain tree and hash without queries or templates; the service receives full detail.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/eligibility/tests/e2e/eligibility-evaluate.e2e.spec.js#redacts the sql, function, cache, batch and explain internals of the plan for a console caller (DEF-ELIG-0005)
services-platform:modules/eligibility/tests/e2e/eligibility-evaluate.e2e.spec.js#answers a service principal the whole plan, the predicate requests and the registry’s sql included (DEF-ELIG-0005)
Source
services-platform:modules/eligibility/tests/e2e/eligibility-evaluate.e2e.spec.js#redacts the sql, function, cache, batch and explain internals of the plan for a console caller (DEF-ELIG-0005)
14 Promote a product-private expressioninteractionbrowsertest
Proves
BR-CAP-PFM-ELG-007-14
Preconditions
A product editor can select a shared rule.
Steps
Select it, replace it with a private expression and share that expression.
Expected
The private expression enters the shared library only on promotion, with no expression stored on the product.
Data
No fixtures beyond the described setup.
Bound to
Source
react-console:acceptance/eligibility/playwright/journeys/bindings/ELIG-ACC-0234.spec.ts#ELIG-ACC-0234
15 Promote private product work without detaching itinteractionapiproposed
Proves
BR-CAP-PFM-ELG-001-11 BR-CAP-PFM-ELG-007-14
Preconditions
A product has a private rule and an active use.
Steps
Share the rule with publication authority and inspect the shared library and the product connection.
Expected
The rule appears in the shared library and the product retains the same connection.
Data
Run-owned records and a controlled clock where timing changes the result.
Source
services-platform:modules/eligibility/tests/e2e/eligibility-definitions.e2e.spec.js#refuses a writer without the publish permission the promotion of a private definition, 403; react-console:components/eligibility/embeds/eligibility-card.tsx:EligibilityCard
16 Discover a newly connected consumerinteractionapiproposed
Proves
BR-CAP-PFM-ELG-002-07 BR-CAP-PFM-ELG-007-09
Preconditions
A published rule has no uses.
Steps
Connect a consumer, inspect usage, remove the use and inspect usage again.
Expected
Usage identifies the consumer and its version choice while connected and removes that entry after deletion.
Data
Run-owned records and a controlled clock where timing changes the result.
Source
services-platform:modules/eligibility/tests/integration/services/governance/usage.integration.spec.js#groups the bindings by consumer kind in kind order, each labelled from the registry and counted; services-platform:modules/eligibility/tests/integration/services/persistence/bindings.integration.spec.js#takes the binding’s plans with it
17 Suspend an incompatible follower during releaseinteractionapinegativeproposed
Proves
BR-CAP-PFM-ELG-004-06 BR-CAP-PFM-ELG-007-08
Preconditions
A following use is compatible with the current release but not with the proposed draft; a pin remains compatible.
Steps
Attempt normal publication, force it, inspect both uses and evaluate each.
Expected
The refusal precedes any release; the forced release suspends the follower and leaves the pin usable.
Data
Run-owned records and a controlled clock where timing changes the result.
Source
services-platform:modules/eligibility/tests/integration/services/governance/publish-followers.integration.spec.js#refuses the publish as unfit_followers, naming the binding and what its kind does not supply; react-console:acceptance/eligibility/playwright/journeys/bindings/ELIG-ACC-0217.spec.ts#ELIG-ACC-0217
18 Keep pins while moving following usesinteractionapiproposed
Proves
BR-CAP-PFM-ELG-005-05 BR-CAP-PFM-ELG-007-04
Preconditions
An obsolete rule has one following use and one pinned use; its replacement fits both purposes.
Steps
Move uses to the replacement, inspect both connections and evaluate them.
Expected
The follower changes rule without a duplicate consumer use; the pin retains its earlier rule and expression.
Data
Run-owned records and a controlled clock where timing changes the result.
Source
services-platform:modules/eligibility/tests/integration/services/governance/lifecycle.integration.spec.js#lists the pinned binding for a person to move, and leaves it on the deprecated definition; services-platform:modules/eligibility/tests/integration/services/persistence/bindings.integration.spec.js#refuses a pin of the definition’s draft
19 Protect a purpose while a consumer uses itinteractionapiproposed
Proves
BR-CAP-PFM-ELG-006-04 BR-CAP-PFM-ELG-007-02
Preconditions
An application purpose has an active consumer connection.
Steps
Deploy a manifest omitting that purpose, inspect the registry, remove the connection and deploy the manifest again.
Expected
The first deployment fails without partial registry writes; the second can withdraw the unused purpose.
Data
Run-owned records and a controlled clock where timing changes the result.
Source
services-platform:modules/eligibility/tests/integration/services/registry/register-eligibility-registration.integration.spec.js#refuses to withdraw a type a published version of a tenant uses, naming the tenant and the definition, and writes nothing; services-platform:modules/eligibility/tests/integration/services/bindings/consumer-bindings.integration.spec.js#refuses a rule that needs a subject the kind does not supply
20 Apply availability before uncertainty policyinteractionapinegativeproposed
Proves
BR-CAP-PFM-ELG-007-08 BR-CAP-PFM-ELG-008-01
Preconditions
A valid following use has a cached answer.
Steps
Suspend the use, attempt evaluation under each failure policy, then reactivate compatibly and evaluate again.
Expected
Suspension produces a refusal rather than an ineligible answer; compatible reactivation permits evaluation.
Data
Run-owned records and a controlled clock where timing changes the result.
Source
react-console:acceptance/eligibility/playwright/journeys/bindings/ELIG-ACC-0217.spec.ts#ELIG-ACC-0217; services-platform:modules/eligibility/tests/unit/compile-and-evaluate.spec.js#makes an indeterminate state ineligible under closed

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.