Skip to content

ATS-CRM-ACT-012Assign shared work and claim it from a queue: Capability Test Specification

Markdown

ATS-CRM-ACT-012

Assign shared work and claim it from a queue: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaCRMModuleActivities, Follow-ups and Task WorkRevision3

Read atservices-crm a8d1364freact-console baf6dae3rhythm-v2-docs 18a49edf

Coverage

  • Rule gap: FND-CRM-ACT-058
  • Transition covered
  • Validation covered
  • Permission gap: FND-CRM-ACT-058
  • Edge covered
  • Failure covered
  • Boundary gap: FND-CRM-ACT-058
  • Concurrency covered
  • Invariant covered
  • Interaction covered

Test Scenarios

17 scenarios proving CAP-CRM-ACT-012; 8 bound to an existing test.

01 Attribute assignment once for an unchanged holderinvariantapitest
Proves
BR-CAP-CRM-ACT-012-01
Preconditions
An open task can be assigned.
Steps
Assign a colleague, repeat that holder and clear assignment.
Expected
The first assignment stamps persist until clearing removes them.
Data
Each run creates and isolates the records it needs.
Bound to
services-crm:modules/tasks/tests/e2e/tasks.e2e.spec.js#stamps who holds the task, who gave it to them and when
services-crm:modules/tasks/tests/e2e/tasks.e2e.spec.js#takes it back when the assignment names nobody, clearing the stamps with it
services-crm:modules/tasks/tests/integration/services/persistence/tasks.integration.spec.js#keeps the first stamp when the task is handed to the person who already holds it
services-crm:modules/tasks/tests/integration/db/tasks.table.integration.spec.js#refuses an assignee with no stamp, so “who gave me this?” always has an answer
Source
services-crm:modules/tasks/tests/e2e/tasks.e2e.spec.js#stamps who holds the task, who gave it to them and when
02 Preserve and reset queue arrival at the appropriate timestransitionapitest
Proves
BR-CAP-CRM-ACT-012-02 BR-CAP-CRM-ACT-012-03
Preconditions
Two queues are available.
Steps
Queue a task, edit it, move queues and remove its queue.
Expected
Edit preserves arrival, movement resets it and removal clears it.
Data
Each run creates and isolates the records it needs.
Bound to
services-crm:modules/tasks/tests/integration/services/persistence/tasks.integration.spec.js#moves a task to another queue and re-stamps when it entered, so it joins the back of that one
services-crm:modules/tasks/tests/integration/services/persistence/tasks.integration.spec.js#clears the queue the replacement did not state, and the moment it entered it with it
services-crm:modules/tasks/tests/integration/db/tasks.table.integration.spec.js#refuses a queue with no moment, so no task sits in a queue in no order
Source
services-crm:modules/tasks/tests/integration/services/persistence/tasks.integration.spec.js#moves a task to another queue and re-stamps when it entered, so it joins the back of that one
03 Reject assignment changes on closed workfailureapinegativetest
Proves
BR-CAP-CRM-ACT-012-04
Preconditions
The task is completed.
Steps
Assign it to a different colleague.
Expected
The service requests reopening before reassignment.
Data
Each run creates and isolates the records it needs.
Bound to
services-crm:modules/tasks/tests/integration/services/persistence/tasks.integration.spec.js#refuses an assignment of a closed task, asking for the reopen first
Source
services-crm:modules/tasks/tests/integration/services/persistence/tasks.integration.spec.js#refuses an assignment of a closed task, asking for the reopen first
04 Reject invalid or service holdersvalidationapinegativetest
Proves
BR-CAP-CRM-ACT-012-06
Preconditions
An open task accepts user assignment.
Steps
Supply malformed user and service-principal references.
Expected
Both are rejected against the holder field.
Data
Each run creates and isolates the records it needs.
Bound to
services-crm:modules/tasks/tests/e2e/tasks.e2e.spec.js#answers 400 for an assignee that is not a Rhythm user id
services-crm:modules/tasks/tests/integration/db/tasks.table.integration.spec.js#refuses a service principal as the assignee: a service never holds a task
Source
services-crm:modules/tasks/tests/e2e/tasks.e2e.spec.js#answers 400 for an assignee that is not a Rhythm user id
05 Require Platform eligibility before assigning workvalidationapinegativeproposed
Proves
BR-CAP-CRM-ACT-012-07
Preconditions
A foreign-customer user and removed colleague are available.
Steps
Attempt assignment to each.
Expected
The proposed contract refuses ineligible holders; current code accepts valid-looking references.
Data
Each run creates and isolates the records it needs.
Source
react-console:acceptance/crm/playwright/journeys/cross-application/CRM-ACC-0711.spec.ts#CRM-ACC-0711
06 Reserve queued work for one concurrent claimantconcurrencyapinegativetest
Proves
BR-CAP-CRM-ACT-012-08
Preconditions
An open queued task has no holder.
Steps
Race three users and also race duplicate requests by one user.
Expected
One assignment and version increment occur; unsuccessful requests identify the holder.
Data
Each run creates and isolates the records it needs.
Bound to
Source
services-crm:modules/tasks/tests/integration/services/persistence/tasks.concurrency.integration.spec.js#lets exactly one of them have it
07 Reject claims of ineligible task statesvalidationapinegativetest
Proves
BR-CAP-CRM-ACT-012-09
Preconditions
Tasks are closed, fully locked or unqueued without a role offer.
Steps
Claim each task.
Expected
Each refusal explains why that work cannot be taken.
Data
Each run creates and isolates the records it needs.
Bound to
services-crm:modules/tasks/tests/integration/services/persistence/tasks.integration.spec.js#refuses a task that is in no queue, saying it is assigned instead
services-crm:modules/tasks/tests/e2e/tasks.e2e.spec.js#answers 409 on claiming a task that is in no queue, which is assigned rather than claimed
Source
services-crm:modules/tasks/tests/integration/services/persistence/tasks.integration.spec.js#refuses a task that is in no queue, saying it is assigned instead
08 Release without changing queue positiontransitionapinegativetest
Proves
BR-CAP-CRM-ACT-012-10
Preconditions
A queued task has been claimed.
Steps
Release it, repeat release and let another user claim.
Expected
Its position persists, duplicate release fails and the other user can take it.
Data
Each run creates and isolates the records it needs.
Bound to
services-crm:modules/tasks/tests/integration/services/persistence/tasks.integration.spec.js#leaves the task in its queue, in the place it had: a release is not a re-queue
services-crm:modules/tasks/tests/e2e/tasks.e2e.spec.js#keeps the task in its queue after the release, at the place it was queued
Source
services-crm:modules/tasks/tests/integration/services/persistence/tasks.integration.spec.js#leaves the task in its queue, in the place it had: a release is not a re-queue
09 Keep inactive queues available to existing claim behavioredgebrowsertest
Proves
BR-CAP-CRM-ACT-012-12
Preconditions
A queue has been deactivated.
Steps
Claim its waiting work and create new work naming it.
Expected
Both remain supported by current code; retirement refusal needs a product decision.
Data
Each run creates and isolates the records it needs.
Bound to
Source
react-console:acceptance/crm/playwright/journeys/cross-application/CRM-ACC-0710.spec.ts#CRM-ACC-0710
10 Shared claims change the overdue audience while preserving role routinginteractionapiproposed
Proves
BR-CAP-CRM-ACT-012-10 BR-CAP-CRM-ACT-013-04 BR-CAP-CRM-ACT-015-02
Preconditions
Publishing is enabled; overdue work carries a queue and a candidate role.
Steps
Claim as an updater who does not hold the role, inspect audience, release and inspect routing and attention again.
Expected
The queue permits the claim, the item addresses the holder, and release retains queue arrival and role while restoring the shared audience.
Data
Run-owned records in an isolated workspace; fixed clock for calendar checks.
Source
services-crm:modules/tasks/tests/integration/services/persistence/tasks.integration.spec.js#leaves the task in its queue, in the place it had: a release is not a re-queue; services-crm:modules/tasks/tests/integration/services/persistence/tasks.role-claim.integration.spec.js#keeps the candidate role, so the task is offered again; services-crm:modules/tasks/tests/integration/services/persistence/task-attention-items.integration.spec.js#addresses a queued task nobody holds to the task queue responsibility at its queue
11 Persist task routing from Unrouted to Heldtransitionapiproposed
Proves
INV-DOM-CRM-ACT-003-03 INV-DOM-CRM-ACT-003-04 INV-DOM-CRM-ACT-003-05 INV-DOM-CRM-ACT-003-06
Preconditions
Run-owned task routing has Unrouted standing. The task is unfinished, updates are unlocked and the user reference has the accepted syntax.
Steps
Assign a user directly, including through ordinary editing. Read the resulting record and affected projections after commit.
Expected
The resulting task routing has Held standing. Set holder and assignment attribution; enabled attention updates its audience.
Data
Run-owned records in an isolated workspace; fixed clock for calendar checks.
Source
services-crm:modules/tasks/tests/e2e/tasks.e2e.spec.js#stamps who holds the task, who gave it to them and when
12 Persist task routing from Held to Unroutedtransitionapiproposed
Proves
INV-DOM-CRM-ACT-003-03 INV-DOM-CRM-ACT-003-04 INV-DOM-CRM-ACT-003-05 INV-DOM-CRM-ACT-003-06
Preconditions
Run-owned task routing has Held standing. The task is unfinished and updates are unlocked.
Steps
Clear the directly assigned user. Read the resulting record and affected projections after commit.
Expected
The resulting task routing has Unrouted standing. Remove assignment attribution; enabled attention falls back to workspace administrators.
Data
Run-owned records in an isolated workspace; fixed clock for calendar checks.
Source
services-crm:modules/tasks/services/persistence/tasks.ts:assignmentValues
13 Persist task routing from Unrouted to Queued waitingtransitionapiproposed
Proves
INV-DOM-CRM-ACT-003-03 INV-DOM-CRM-ACT-003-04 INV-DOM-CRM-ACT-003-05 INV-DOM-CRM-ACT-003-06
Preconditions
Run-owned task routing has Unrouted standing. The queue exists locally; updates require unfinished and unlocked work. Inactive queues are accepted.
Steps
Place unheld work in a queue, including on creation. Read the resulting record and affected projections after commit.
Expected
The resulting task routing has Queued waiting standing. Record arrival at the queue and use queue responsibility for enabled attention.
Data
Run-owned records in an isolated workspace; fixed clock for calendar checks.
Source
services-crm:modules/tasks/tests/integration/services/persistence/tasks.integration.spec.js#moves a task to another queue and re-stamps when it entered, so it joins the back of that one
14 Persist task routing from Queued waiting to Queued claimedtransitionapiproposed
Proves
INV-DOM-CRM-ACT-003-03 INV-DOM-CRM-ACT-003-04 INV-DOM-CRM-ACT-003-05 INV-DOM-CRM-ACT-003-06
Preconditions
Run-owned task routing has Queued waiting standing. The conditional write requires an unfinished, unlocked, queued and unheld task, and a user caller.
Steps
Claim available queued work. Read the resulting record and affected projections after commit.
Expected
The resulting task routing has Queued claimed standing. Set the caller as holder and assigner while retaining queue arrival.
Data
Run-owned records in an isolated workspace; fixed clock for calendar checks.
Source
services-crm:modules/tasks/tests/integration/services/persistence/tasks.concurrency.integration.spec.js#lets exactly one of them have it
15 Persist task routing from Queued claimed to Queued waitingtransitionapiproposed
Proves
INV-DOM-CRM-ACT-003-03 INV-DOM-CRM-ACT-003-04 INV-DOM-CRM-ACT-003-05 INV-DOM-CRM-ACT-003-06
Preconditions
Run-owned task routing has Queued claimed standing. The task is unfinished, update-unlocked, held and queued.
Steps
Release held queued work. Read the resulting record and affected projections after commit.
Expected
The resulting task routing has Queued waiting standing. Clear holder and assignment stamps without changing queue arrival.
Data
Run-owned records in an isolated workspace; fixed clock for calendar checks.
Source
services-crm:modules/tasks/tests/integration/services/persistence/tasks.integration.spec.js#leaves the task in its queue, in the place it had: a release is not a re-queue
16 Persist task routing from Queued waiting to Queued claimedtransitionapiproposed
Proves
INV-DOM-CRM-ACT-003-03 INV-DOM-CRM-ACT-003-04 INV-DOM-CRM-ACT-003-05 INV-DOM-CRM-ACT-003-06
Preconditions
Run-owned task routing has Queued waiting standing. The task is unfinished and updates are unlocked.
Steps
Assign a user while retaining the queue. Read the resulting record and affected projections after commit.
Expected
The resulting task routing has Queued claimed standing. Record assignment attribution without changing its retained queue position.
Data
Run-owned records in an isolated workspace; fixed clock for calendar checks.
Source
services-crm:modules/tasks/services/persistence/tasks.ts:assignTask
17 Persist task routing from Held to Queued claimedtransitionapiproposed
Proves
INV-DOM-CRM-ACT-003-03 INV-DOM-CRM-ACT-003-04 INV-DOM-CRM-ACT-003-05 INV-DOM-CRM-ACT-003-06
Preconditions
Run-owned task routing has Held standing. The task is unfinished, unlocked and references a local queue.
Steps
Add a queue while retaining the holder. Read the resulting record and affected projections after commit.
Expected
The resulting task routing has Queued claimed standing. Stamp arrival in the newly selected queue.
Data
Run-owned records in an isolated workspace; fixed clock for calendar checks.
Source
services-crm:modules/tasks/services/persistence/tasks.ts:queueValues

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.