Skip to content

ATS-PFM-ELG-018Manage personal responses to attention items: Capability Test Specification

Markdown

ATS-PFM-ELG-018

Manage personal responses to attention items: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaPlatformModuleEligibility, Responsibilities and AttentionRevision3

Read atservices-platform ad3f6a65react-console baf6dae3

Coverage

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

Test Scenarios

11 scenarios proving CAP-PFM-ELG-018; 7 bound to an existing test.

01 Reject actions on final occurrencesvalidationunitnegativetest
Proves
BR-CAP-PFM-ELG-018-01 INV-DOM-PFM-ELG-005-04
Preconditions
Resolved and expired occurrences exist.
Steps
Attempt every personal response.
Expected
Every response fails because the occurrence is closed.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/unit/rules.spec.js#refuses every action on an item that is no longer open
Source
services-platform:modules/attention/tests/unit/rules.spec.js#refuses every action on an item that is no longer open
02 Mark seen without clearing worktransitionapitest
Proves
BR-CAP-PFM-ELG-018-02
Preconditions
A required item is unread.
Steps
Acknowledge and inspect the summary.
Expected
The action is stored and audited, the item remains and its unread contribution ends.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/integration/services/persistence/states.integration.spec.js#acknowledges an item and records attention.acknowledged against its definition
Source
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#acknowledges an item
03 Prevent required dismissalruleapinegativetest
Proves
BR-CAP-PFM-ELG-018-03 AS-JNY-PFM-ELG-004-05 INV-DOM-PFM-ELG-005-05
Preconditions
A required occurrence exists.
Steps
Attempt dismissal.
Expected
It fails as not dismissible without audit mutation.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#refuses dismissing a required item, with 409 not_dismissable
services-platform:modules/attention/tests/integration/services/persistence/states.integration.spec.js#refuses dismissing a required item as not_dismissable, writing no trail
Source
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#refuses dismissing a required item, with 409 not_dismissable
04 Check postponement boundsboundaryunitnegativetest
Proves
BR-CAP-PFM-ELG-018-04
Preconditions
A required kind allows one snooze and an advisory is present.
Steps
Try repeated or excessive required snoozes, advisory snoozes of 90 and 91 days and a past end.
Expected
Required excesses, 91 days and past ends fail while a 90-day advisory snooze passes.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#refuses a second snooze of a required item allowed once, with 409 snooze_limit
services-platform:modules/attention/tests/unit/rules.spec.js#refuses a required item’s snooze past its definition’s duration as snooze_limit
services-platform:modules/attention/tests/unit/rules.spec.js#lets an advisory be snoozed as often as wanted, up to ninety days at a time
services-platform:modules/attention/tests/unit/rules.spec.js#refuses a snooze that ends in the past as snooze_in_past
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#refuses a snooze without its end, with 400 naming until
Source
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#refuses a second snooze of a required item allowed once, with 409 snooze_limit
05 Remove optional dismissed worktransitionapitest
Proves
BR-CAP-PFM-ELG-018-05
Preconditions
An advisory occurrence is visible.
Steps
Dismiss and inspect the list.
Expected
Its personal dismissal is audited and it no longer appears.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#dismisses an advisory, which then leaves the caller’s list
Source
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#dismisses an advisory, which then leaves the caller’s list
06 Version personal responsesinvariantapitest
Proves
BR-CAP-PFM-ELG-018-07
Preconditions
An open item is available.
Steps
Acknowledge, snooze and end the snooze.
Expected
Each action advances state and is audited, with unsnooze distinguished within the snooze event.
Data
No fixtures beyond the described setup.
Bound to
Source
services-platform:modules/attention/tests/integration/services/persistence/states.integration.spec.js#advances the state’s version with each action
07 Update unread totals without clearing the conditioninteractionapiproposed
Proves
BR-CAP-PFM-ELG-017-07 BR-CAP-PFM-ELG-018-02
Preconditions
A required occurrence appears unread to one person.
Steps
Acknowledge it, snooze it, end the snooze and inspect the list and summary at each stage.
Expected
Acknowledgement removes its unread contribution; snooze hides it temporarily and ending snooze restores an acknowledged item.
Data
Run-owned records and a controlled clock where timing changes the result.
Source
services-platform:modules/attention/tests/integration/services/read/viewer-summary-cap.integration.spec.js#stops a group of 501 open items at 500 and says it is capped; services-platform:modules/attention/tests/integration/services/persistence/states.integration.spec.js#acknowledges an item and records attention.acknowledged against its definition
08 Suppress queued reminders after a responseinteractionapinegativeproposed
Proves
BR-CAP-PFM-ELG-018-04 BR-CAP-PFM-ELG-019-05
Preconditions
A reminder is planned for an open occurrence.
Steps
Snooze the occurrence before sending, invoke delivery, then inspect its skip record and outgoing requests.
Expected
The queued reminder records a snoozed skip and creates no message.
Data
Run-owned records and a controlled clock where timing changes the result.
Source
services-platform:modules/attention/services/reminders/send-reminders.ts:sendTenantReminders
09 Return explicitly from a snoozetransitionapitest
Proves
BR-CAP-PFM-ELG-018-06 BR-CAP-PFM-ELG-018-07
Preconditions
An open required occurrence is snoozed by its addressed person.
Steps
End the snooze, read the personal state and inspect the audit.
Expected
The snooze end is cleared and the audit distinguishes the explicit return action.
Data
Run-owned fixtures, separate caller contexts and a controlled clock where required.
Bound to
Source
services-platform:modules/attention/tests/integration/services/persistence/states.integration.spec.js#unsnoozes, recorded as attention.snoozed with action unsnooze
10 Return at snooze expiry with acknowledgement retainedboundaryapinegativeproposed
Proves
BR-CAP-PFM-ELG-018-06 BR-CAP-PFM-ELG-018-02
Preconditions
An acknowledged open occurrence is snoozed until a known future instant.
Steps
Read immediately before, exactly at and immediately after the end, without running the sweep.
Expected
Ordinary visibility returns at the end while acknowledgement remains and the stored occurrence stays open.
Data
Run-owned fixtures, separate caller contexts and a controlled clock where required.
Source
services-platform:modules/attention/services/persistence/items.ts; services-platform:modules/attention/services/persistence/states.ts:applyStateAction
11 Expose competing first personal responsesconcurrencyapinegativeproposed
Proves
INV-DOM-PFM-ELG-005-08 BR-CAP-PFM-ELG-018-07
Preconditions
An open occurrence reaches one person and has no personal response row.
Steps
Pause two first actions after the audience read, release their insertions together and inspect outcomes and state.
Expected
A first-insert collision can refuse one request rather than transparently retrying; the stored state and accepted audit remain inspectable.
Data
Run-owned fixtures, separate caller contexts and a controlled clock where required.
Source
services-platform:modules/attention/services/persistence/states.ts:applyStateAction

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.