Skip to content

ATS-PFM-ELG-017Deliver relevant attention with a reason: Capability Test Specification

Markdown

ATS-PFM-ELG-017

Deliver relevant attention with a reason: 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-069
  • Validation gap: FND-PFM-ELG-069
  • Permission gap: FND-PFM-ELG-069
  • Edge covered
  • Failure gap: FND-PFM-ELG-069
  • Boundary covered
  • Concurrency gap: FND-PFM-ELG-069
  • Invariant gap: FND-PFM-ELG-069
  • Interaction covered

Test Scenarios

19 scenarios proving CAP-PFM-ELG-017; 16 bound to an existing test.

01 Distinguish baseline from missing signed authoritypermissionapinegativetest
Proves
BR-CAP-PFM-ELG-017-01
Preconditions
A reviewer lacks role-specific attention grants, a signature lacks use authority and a portal caller exists.
Steps
Read personal summary and list as each.
Expected
The reviewer succeeds through baseline authority; the keyless signature and portal caller fail.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#refuses a caller holding no attention key on the caller’s own routes, with 403
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#refuses a portal account on every route: the portal is held
Source
react-console:acceptance/platform-attention/playwright/journeys/security/RA-ACC-0201.spec.ts#RA-ACC-0201
02 Resolve audience matches currentlyruleapitest
Proves
BR-CAP-PFM-ELG-017-02
Preconditions
Items target a scoped responsibility, role and user.
Steps
Read as specific and broad holders, backups, delegates, role holders, the direct user and outsiders.
Expected
Policy-governed matching selects relevant viewers and excludes the outsider.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#reaches the direct holder at the item’s resource scope, as a responsibility at a resource
services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#does not reach a tenant-wide holder where somebody holds the narrower scope (coverage when_unheld)
services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#hides a backup while the primary is present (backup_visibility when_primary_absent)
Source
services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#reaches the direct holder at the item’s resource scope, as a responsibility at a resource
03 Remove ended holding matchesinteractionapitest
Proves
BR-CAP-PFM-ELG-017-03
Preconditions
Pat and another person see the same item.
Steps
End Pat’s holding and read both views.
Expected
Pat loses the match without item mutation and the other holder retains it.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/integration/services/read/ending-assignment.integration.spec.js#removes Pat’s item on the next read, without touching the item, and leaves the second holder’s
Source
services-platform:modules/attention/tests/integration/services/read/ending-assignment.integration.spec.js#removes Pat’s item on the next read, without touching the item, and leaves the second holder’s
04 Prefer one explanatory matchruleapitest
Proves
BR-CAP-PFM-ELG-017-04
Preconditions
A viewer matches responsibility and role audiences.
Steps
Read the item list and reason ordering.
Expected
One occurrence appears with the preferred responsibility reason and the declared ordering applies.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#answers an item reaching the viewer through two audiences once, with the better reason
services-platform:modules/attention/tests/unit/rules.spec.js#orders a resource responsibility, a tenant responsibility, a delegation, covering, a team, a role, an escalation, a user
Source
services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#answers an item reaching the viewer through two audiences once, with the better reason
05 Preserve rank boundariesboundaryunittest
Proves
BR-CAP-PFM-ELG-017-05
Preconditions
Every class and urgency has representative items.
Steps
Apply maximum adjustments and age and evaluate calendar urgency across daylight saving.
Expected
Required work outranks opportunities and displayed due-soon timing follows local calendar days.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/unit/rules.spec.js#weighs a required item over an advisory over an opportunity, all else equal
services-platform:modules/attention/tests/unit/rules.spec.js#never lets an opportunity outrank a required item within the declared bounds
services-platform:modules/attention/tests/unit/rules.spec.js#keeps seven calendar days across the end of daylight saving time (one of them 25 hours long)
services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#ranks the item by the rule rules.ts states, with the definition’s and the tenant’s adjustments
Source
services-platform:modules/attention/tests/unit/rules.spec.js#weighs a required item over an advisory over an opportunity, all else equal
06 Page supported list ordersboundaryapitest
Proves
BR-CAP-PFM-ELG-017-06
Preconditions
Open, dismissed and snoozed occurrences exist.
Steps
Request every sort with and without snoozes, traverse pages and use an invalid sort.
Expected
Dismissed work stays absent, requested snoozes appear, traversal has no gaps or duplicates and invalid sorting fails.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#leaves out an item the viewer snoozed, and shows it when asked for snoozed items
services-platform:modules/attention/tests/integration/services/read/viewer-summary.integration.spec.js#pages each sort by its keyset without repeating or dropping an item
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#lists the caller’s items by due instant when asked, and refuses a sort it does not have with 400
Source
services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#leaves out an item the viewer dismissed
07 Flag capped summaries accuratelyruleapitest
Proves
BR-CAP-PFM-ELG-017-07 AS-JNY-PFM-ELG-004-02
Preconditions
One kind has 501 items and another exactly 500.
Steps
Read summary and unread totals.
Expected
Both display 500, only the excess group is capped, unread flags apply and each group includes its first three items.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/integration/services/read/viewer-summary.integration.spec.js#answers one group per definition with its counts by urgency, snoozed and unread
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
08 Render audience and facts readablyruleunittest
Proves
BR-CAP-PFM-ELG-017-09
Preconditions
Items contain declared facts, resource scopes and dates.
Steps
Render the console view.
Expected
Only declared labelled facts appear, with plural counts and readable times and durations instead of internal references.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/unit/rendering.spec.js#shows a console reader every declared fact and nothing undeclared
services-platform:modules/attention/tests/unit/rendering.spec.js#names another record’s scope by its registered object, never its id
Source
services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#names the reason’s scope by words, never by the unit’s id
09 Conceal item detail outside its audiencepermissionbrowsertest
Proves
BR-CAP-PFM-ELG-017-10 AS-JNY-PFM-ELG-004-03
Preconditions
An occurrence is addressed to Pat.
Steps
Read it as Pat and an unrelated colleague.
Expected
Pat receives its cause, match, working action link and change explanation; the colleague receives not found.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#answers 404 for an item addressed to somebody else
services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#answers the item rendered, with why it exists, why the viewer and when it changes
Source
react-console:acceptance/platform-attention/playwright/journeys/attention/RA-ACC-0102.spec.ts#RA-ACC-0102
10 Check action permissionpermissionapitest
Proves
BR-CAP-PFM-ELG-017-11 INV-DOM-PFM-ELG-005-06
Preconditions
An action declares a required permission.
Steps
Read as authorized and unauthorized viewers.
Expected
The authorized action is available and the other viewer sees the missing authority.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#allows an action to a reader holding the permission its definition declares, and says what another reader needs
Source
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#allows an action to a reader holding the permission its definition declares, and says what another reader needs
11 Protect record attention lookuppermissionapinegativetest
Proves
BR-CAP-PFM-ELG-017-12
Preconditions
A record has multiple open occurrences.
Steps
Read as permitted and unpermitted callers and submit a malformed record reference.
Expected
The record reader sees all with personal matches marked, the other sees not found and malformed input fails.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#answers every open item about a record to a caller who may read it, marking the caller’s
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#answers 404 to a caller who may not read the record
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#refuses a record that is not <object_id>:<record_id> with 400
Source
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#answers every open item about a record to a caller who may read it, marking the caller’s
12 Audit colleague inspectionpermissionapinegativetest
Proves
BR-CAP-PFM-ELG-017-13
Preconditions
A caller has read-others authority and a colleague has items.
Steps
Inspect with and without the key and request a nonexistent user.
Expected
Authorized inspection is audited, missing authority fails and an absent user is not found.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#lists a colleague’s items to a holder of read-others, and audits the read
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#answers 404 for somebody who is not a console user of the tenant
Source
services-platform:modules/attention/tests/e2e/attention.e2e.spec.js#lists a colleague’s items to a holder of read-others, and audits the read
13 Keep workspace and audience isolationboundaryapinegativetest
Proves
BR-CAP-PFM-ELG-017-14 AS-JNY-PFM-ELG-004-04 INV-DOM-PFM-ELG-005-10
Preconditions
Items exist in one workspace with unrelated colleagues and another workspace.
Steps
Read every view, including a session without a workspace.
Expected
Neither unrelated audience nor outside-workspace readers receive the items and the contextless read is empty.
Data
No fixtures beyond the described setup.
Bound to
services-platform:modules/attention/tests/integration/db/attention-items.table.integration.spec.js#reads none of a tenant’s attention rows for a session in no tenant, while the tenant reads its own
Source
services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#reads nothing of the tenant without a tenant: the policy fails closed
14 Explain why an attention summary is emptyedgeapitest
Proves
BR-CAP-PFM-ELG-017-08
Preconditions
One viewer has holdings but no open work, one has no holdings or direct audience, and one has every console kind disabled.
Steps
Read each viewer’s attention summary.
Expected
The three summaries distinguish all clear, no responsibilities and nothing enabled.
Data
Existing evidence fixtures provide the described setup.
Bound to
services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#says all_clear to a viewer who holds responsibilities and has nothing open
services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#says no_responsibilities to a viewer who holds none and is addressed by nothing
services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#says nothing_enabled where the tenant has disabled every definition on the console
Source
services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#says no_responsibilities to a viewer who holds none and is addressed by nothing
15 Remove one holder without rewriting the conditioninteractionapitest
Proves
BR-CAP-PFM-ELG-013-12 BR-CAP-PFM-ELG-017-03
Preconditions
Two people hold the same attention area and an occurrence addresses that area.
Steps
Read both lists, end one holding and read both lists and the occurrence again.
Expected
Only the ended holder loses visibility and the occurrence remains open for the other person.
Data
Run-owned records and a controlled clock where timing changes the result.
Bound to
Source
services-platform:modules/responsibilities/tests/integration/services/persistence/assignments.queries.integration.spec.js#answers the fallback’s holders, every one covering, when nobody holds the key at any sco; services-platform:modules/attention/tests/integration/services/read/ending-assignment.integration.spec.js#removes Pat’s item on the next read, without touching the item, and leaves the second holder’s
16 Transfer attention through temporary coverinteractionbrowsertest
Proves
BR-CAP-PFM-ELG-014-06 BR-CAP-PFM-ELG-017-02
Preconditions
One person holds an area and a colleague holds nothing.
Steps
Arrange cover, read the colleague’s attention and Home banner, end cover and repeat the reads.
Expected
The colleague receives the item with the covering reason and named end while cover applies, then loses both.
Data
Run-owned records and a controlled clock where timing changes the result.
Bound to
Source
react-console:acceptance/platform-attention/playwright/journeys/responsibilities/RA-ACC-0002.spec.ts#RA-ACC-0002; services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#reaches a role audience’s holders, and not a user without the role
17 Remove resolved conditions from every matching listinteractionapiproposed
Proves
BR-CAP-PFM-ELG-016-07 BR-CAP-PFM-ELG-017-02
Preconditions
An open condition reaches two staff members through different audiences.
Steps
Read both lists, resolve the condition at source and read both lists and the stored occurrence.
Expected
Both lists lose the condition while the stored occurrence retains its closed history.
Data
Run-owned records and a controlled clock where timing changes the result.
Source
services-platform:modules/attention/tests/integration/services/persistence/items.integration.spec.js#resolves the open items not confirmed since the instant, in the scope given, and leaves the confirmed; services-platform:modules/attention/tests/integration/services/persistence/items.queries.integration.spec.js#reaches a role audience’s holders, and not a user without the role
18 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
19 Hide presentation without resolving workinteractionapiproposed
Proves
BR-CAP-PFM-ELG-017-06 BR-CAP-PFM-ELG-020-07
Preconditions
An advisory and a required occurrence reach one person.
Steps
Hide the advisory in personal preferences, request hidden items explicitly, then disable the kind in shared settings.
Expected
Personal hiding affects only that person, explicit inclusion restores the advisory and shared disablement leaves stored occurrences open.
Data
Run-owned records and a controlled clock where timing changes the result.
Source
services-platform:modules/attention/tests/integration/services/read/viewer-summary.integration.spec.js#pages each sort by its keyset without repeating or dropping an item; services-platform:modules/attention/tests/integration/services/persistence/preferences.integration.spec.js#refuses to hide a required definition, naming it, the row unchanged

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.