Skip to content

ATS-CRM-DQ-007Review duplicate groups in a shared queue: Capability Test Specification

Markdown

ATS-CRM-DQ-007

Review duplicate groups in a shared queue: Capability Test Specification

Markdown
  • DocumentProposed

Planning

Proves capability
CAP-CRM-DQ-007

Design

Executed by
TST-CRM-DQ-176, TST-CRM-DQ-180, TST-CRM-DQ-182

KindAcceptance test setProduct areaCRMModuleDuplicate Review and Record MergingRevision1

Read atservices-crm a8d1364freact-console baf6dae3

Coverage

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

Test Scenarios

15 scenarios proving CAP-CRM-DQ-007; 10 bound to an existing test.

01 Oversize connections identify their boundboundaryunittest
Proves
BR-CAP-CRM-DQ-007-01
Preconditions
Connect eleven records in a chain.
Steps
Build the duplicate grouping.
Expected
A displayed group contains ten records and reports that it is bounded.
Data
The existing scenario setup supplies the required records.
Bound to
services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#holds at most ten records, so a group can always be merged as it is
services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#says the group it cut short is bounded, so a reader knows there may be more of it
Source
services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#holds at most ten records, so a group can always be merged as it is
02 Group identities survive structural changestransitionunittest
Proves
BR-CAP-CRM-DQ-007-02
Preconditions
Start with a two-record group.
Steps
Grow, split, join and reduce its connected records.
Expected
Growth keeps identity, the largest split and join contribution retain it and an isolated record removes the group.
Data
The existing scenario setup supplies the required records.
Bound to
services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#KEEPS the id the group already had, so the console is still looking at the same group
services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#keeps the id for the part holding MORE of the group’s records, the other part being a new group
services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#keeps the id of the group that contributed the MOST records, which is the one most reviewers were looking at
Source
services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#KEEPS the id the group already had, so the console is still looking at the same group
03 Pair and group writes share their commitinvariantapitest
Proves
BR-CAP-CRM-DQ-007-03
Preconditions
Prepare a batch that creates candidates.
Steps
Execute detection.
Expected
Stored pairs point to existing groups produced in the same transaction.
Data
The existing scenario setup supplies the required records.
Bound to
Source
services-crm:modules/duplicates/tests/integration/services/detection/duplicate-detection.integration.spec.js#grouped every pair it stored, the groups of a batch being written in the pass’s own transaction (§14)
04 Confirmed decisions leave the grouped queueedgeapitest
Proves
BR-CAP-CRM-DQ-007-04
Preconditions
Manually confirm a pair.
Steps
Recalculate groups.
Expected
The confirmed pair has no group reference.
Data
The existing scenario setup supplies the required records.
Bound to
Source
services-crm:modules/duplicates/tests/integration/services/persistence/duplicate-groups.integration.spec.js#belongs to no group: a confirmed pair is a decision, not a question the queue asks
05 Queue parameters reject unsupported requestsvalidationapinegativetest
Proves
BR-CAP-CRM-DQ-007-05 BR-CAP-CRM-DQ-007-06
Preconditions
Prepare several groups.
Steps
Filter and page them, then change sort with an old cursor and supply unknown evidence.
Expected
Supported filters return matching pages; the incompatible cursor and unknown evidence are refused.
Data
The existing scenario setup supplies the required records.
Bound to
Source
services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#answers only the groups of the band asked for or above it
06 Prefix search narrows groupsruleapitest
Proves
BR-CAP-CRM-DQ-007-07
Preconditions
Create groups with recognizable record names.
Steps
Search a valid prefix and an unmatched prefix.
Expected
Only the first search returns its matching groups.
Data
The existing scenario setup supplies the required records.
Bound to
Source
services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#answers only the groups the records of a typed prefix are in, which is the search box
07 Queue access respects authority and existencepermissionapinegativetest
Proves
BR-CAP-CRM-DQ-007-09
Preconditions
Use anonymous and permissionless callers and an absent group identity.
Steps
List groups and open that group.
Expected
Unauthorized reads fail and the absent group is not found.
Data
The existing scenario setup supplies the required records.
Bound to
Source
services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#refuses the anonymous call, the queue being the tenant’s own
08 A shared review address restores the locationinteractionbrowsertest
Proves
BR-CAP-CRM-DQ-007-01 BR-CAP-CRM-DQ-007-02 BR-CAP-CRM-DQ-007-05 BR-CAP-CRM-DQ-007-06 BR-CAP-CRM-DQ-007-07
Preconditions
Prepare several duplicate groups.
Steps
Sort, search surname prefixes and numbers, filter evidence, page and share an opened group.
Expected
The recipient opens the same selected group.
Data
The existing scenario setup supplies the required records.
Bound to
Source
react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0233.spec.ts#CRM-ACC-0233
09 Observe none becoming open group after at least two records become connected by open comparisonstransitionapiproposed
Proves
BR-CAP-CRM-DQ-007-01 BR-CAP-CRM-DQ-007-03
Preconditions
Arrange none standing with the transition guard satisfied: The component must contain two or more records.
Steps
At least two records become connected by open comparisons.
Expected
Read the open group standing and inspect the associated changes: store counts, strength and timing; attach the grouped pairs; invoke the held attention seam.
Data
Fixtures for none, the guard and the affected records; a fixed clock for time-dependent changes.
Source
services-crm:modules/duplicates/tests/integration/services/detection/duplicate-detection.integration.spec.js#grouped every pair it stored, the groups of a batch being written in the pass’s own transaction (§14)
10 Observe open group becoming open group after comparison changes resize, join or rescore a componenttransitionapiproposed
Proves
BR-CAP-CRM-DQ-007-02
Preconditions
Arrange open group standing with the transition guard satisfied: At least two connected records remain.
Steps
Comparison changes resize, join or rescore a component.
Expected
Read the open group standing and inspect the associated changes: choose the prior identity with the largest contribution; recompute counts; flag traversal truncated by the ten-record limit.
Data
Fixtures for open group, the guard and the affected records; a fixed clock for time-dependent changes.
Source
services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#keeps the id for the part holding MORE of the group’s records, the other part being a new group
11 Observe open group becoming none after pair changes or record removal leave no component of two recordstransitionapiproposed
Proves
BR-CAP-CRM-DQ-007-02
Preconditions
Arrange open group standing with the transition guard satisfied: No additional permission check occurs during regrouping.
Steps
Pair changes or record removal leave no component of two records.
Expected
Read the none standing and inspect the associated changes: delete the empty or undersized group; invoke the held attention resolution.
Data
Fixtures for open group, the guard and the affected records; a fixed clock for time-dependent changes.
Source
services-crm:modules/duplicates/services/groups/group-components.ts
12 Observe dismissed group becoming none after the dismissed component loses its final connected pairtransitionapiproposed
Proves
BR-CAP-CRM-DQ-007-02
Preconditions
Arrange dismissed group standing with the transition guard satisfied: No additional guard applies during regrouping.
Steps
The dismissed component loses its final connected pair.
Expected
Read the none standing and inspect the associated changes: remove the dismissed group.
Data
Fixtures for dismissed group, the guard and the affected records; a fixed clock for time-dependent changes.
Source
services-crm:modules/duplicates/services/groups/group-components.ts
13 A detection batch publishes its groups with its pairsinvariantapitest
Proves
INV-DOM-CRM-DQ-001-07
Preconditions
Two contacts created together in a detection batch.
Steps
Detect the batch and read each stored comparison and its group assignment.
Expected
Every stored pair has the expected group membership at the same committed boundary.
Data
Records, versions and caller contexts owned by the run; transaction failure injection when the invariant concerns rollback.
Bound to
Source
services-crm:modules/duplicates/tests/integration/services/detection/duplicate-detection.integration.spec.js#grouped every pair it stored, the groups of a batch being written in the pass’s own transaction (§14)
14 A bounded group reports the connections it omitsinvariantunittest
Proves
INV-DOM-CRM-DQ-001-08
Preconditions
A connected chain containing eleven records.
Steps
Build the group components and inspect the cut component.
Expected
The component has no more than ten members and reports its bounded traversal.
Data
Records, versions and caller contexts owned by the run; transaction failure injection when the invariant concerns rollback.
Bound to
services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#says the group it cut short is bounded, so a reader knows there may be more of it
Source
services-crm:modules/duplicates/tests/unit/services/groups/group-components.spec.js#says the group it cut short is bounded, so a reader knows there may be more of it
15 Queue decisions and launch use the returned groupinteractionapiproposed
Proves
BR-CAP-CRM-DQ-007-01 BR-CAP-CRM-DQ-007-02 BR-CAP-CRM-DQ-007-03 BR-CAP-CRM-DQ-007-04 BR-CAP-CRM-DQ-007-05 BR-CAP-CRM-DQ-007-06 BR-CAP-CRM-DQ-007-07 BR-CAP-CRM-DQ-007-09
Preconditions
Run-owned contact and organization records, the relevant staff permissions and the related state described by the sequence.
Steps
Open a group, dismiss and restore it, follow each returned group identity, then launch its selected records into a merge preview.
Expected
The selected location follows the server response and the preview contains the reviewed records.
Data
An isolated workspace with related records and fixed timestamps; owned participant failure injection where requested.
Source
CAP-CRM-DQ-007; CAP-CRM-DQ-008; CAP-CRM-DQ-012; WF-CRM-DQ-001; WF-CRM-DQ-004

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.