Skip to content

ATS-CRM-DQ-008Dismiss false matches and reopen review: Capability Test Specification

Markdown

ATS-CRM-DQ-008

Dismiss false matches and reopen review: Capability Test Specification

Markdown
  • DocumentProposed

Planning

Proves capability
CAP-CRM-DQ-008

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-059
  • Boundary gap: FND-CRM-DQ-059
  • Concurrency gap: FND-CRM-DQ-059
  • Invariant covered
  • Interaction covered

Test Scenarios

18 scenarios proving CAP-CRM-DQ-008; 8 bound to an existing test.

01 Dismissal retains attribution and the reviewed evidencetransitionapitest
Proves
BR-CAP-CRM-DQ-008-01
Preconditions
An open pair awaits review.
Steps
Dismiss it using a note padded with spaces.
Expected
The stored dismissal has trimmed note, author, time and fingerprint and moves from open to dismissed work.
Data
The existing scenario setup supplies the required records.
Bound to
Source
services-crm:modules/duplicates/tests/e2e/duplicates.e2e.spec.js#dismisses the pair, stamping who said so, when, and the note as trimmed
02 Repeated dismissal preserves the first reviewerinvariantapitest
Proves
BR-CAP-CRM-DQ-008-02
Preconditions
Prepare a dismissed pair and group.
Steps
Dismiss both again.
Expected
Both succeed without writes and retain the earlier identity, permitted name, time and note.
Data
The existing scenario setup supplies the required records.
Bound to
Source
services-crm:modules/duplicates/tests/e2e/duplicates.e2e.spec.js#tells the second request the pair was already dismissed, with the earlier who, when and note (D-34)
03 A group decision commits all pairs togetherinvariantapitest
Proves
BR-CAP-CRM-DQ-008-03
Preconditions
A group has two open pairs and a failure-injection variant.
Steps
Submit group dismissal.
Expected
The normal request settles both with shared attribution and returns the dismissed group; failure settles neither.
Data
The existing scenario setup supplies the required records.
Bound to
Source
services-crm:modules/duplicates/tests/integration/services/persistence/duplicate-candidates.integration.spec.js#stamps one actor and one instant on all of them, which is the batch its undo takes back
04 Group undo preserves independent dismissalsedgeapinegativetest
Proves
BR-CAP-CRM-DQ-008-04
Preconditions
Dismiss one pair separately and another through its group.
Steps
Undo the group decision twice.
Expected
Only the group-decided pair reopens and the second undo is refused.
Data
The existing scenario setup supplies the required records.
Bound to
Source
services-crm:modules/duplicates/tests/integration/services/persistence/duplicate-candidates.integration.spec.js#restores exactly the pairs that one dismissal dismissed
05 Pair restoration clears dismissal metadatatransitionapitest
Proves
BR-CAP-CRM-DQ-008-05
Preconditions
A pair is dismissed.
Steps
Restore it twice.
Expected
It stays open with its score, without dismissal attribution or fingerprint, and the repeated restore is harmless.
Data
The existing scenario setup supplies the required records.
Bound to
Source
services-crm:modules/duplicates/tests/integration/services/persistence/duplicate-candidates.integration.spec.js#takes the whole dismissal off: who, when, why and on what evidence
06 Only new strong evidence reopens a dismissaltransitionunittest
Proves
BR-CAP-CRM-DQ-008-06
Preconditions
An existing pair is dismissed.
Steps
Correct a name typo and then add a shared phone.
Expected
The typo leaves the decision intact; the new phone reopens it with an explanation.
Data
The existing scenario setup supplies the required records.
Bound to
Source
services-crm:modules/duplicates/tests/unit/services/matching/fingerprint.spec.js#leaves a pair dismissed when a name typo is fixed and nothing strong changes
07 Review authority controls decisionspermissionapinegativetest
Proves
BR-CAP-CRM-DQ-008-09
Preconditions
Prepare reader and reviewer callers.
Steps
Attempt dismissal and restoration as both.
Expected
The reviewer succeeds and the reader is refused.
Data
The existing scenario setup supplies the required records.
Bound to
Source
services-crm:modules/duplicates/tests/e2e/duplicates.e2e.spec.js#answers 403 to that reader dismissing a pair, which is a decision and not a read
08 Review decisions stay coherent across console entry pointsinteractionbrowsertest
Proves
BR-CAP-CRM-DQ-008-01 BR-CAP-CRM-DQ-008-03 BR-CAP-CRM-DQ-008-04 BR-CAP-CRM-DQ-008-06 BR-CAP-CRM-DQ-008-09
Preconditions
Prepare a four-record group and a record-page candidate.
Steps
Dismiss and undo the group, remove a member, dismiss and restore a noted pair, then introduce a shared mobile.
Expected
Dismissed work shows attribution, restoration clears it, new mobile evidence reopens the pair and read-only staff receive no decision controls.
Data
The existing scenario setup supplies the required records.
Bound to
Source
react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0234.spec.ts#CRM-ACC-0234
09 Observe open becoming dismissed after a reviewer rejects a pair, group or one member’s comparisonstransitionapiproposed
Proves
BR-CAP-CRM-DQ-008-01 BR-CAP-CRM-DQ-008-03
Preconditions
Arrange open standing with the transition guard satisfied: Review authority and a valid optional note are required.
Steps
A reviewer rejects a pair, group or one member’s comparisons.
Expected
Read the dismissed standing and inspect the associated changes: persist the author and dismissal evidence; refresh dismissed grouping.
Data
Fixtures for open, the guard and the affected records; a fixed clock for time-dependent changes.
Source
services-crm:modules/duplicates/tests/e2e/duplicates.e2e.spec.js#records the evidence the dismissal was made against, which a later score is compared with
10 Observe dismissed becoming dismissed after the same rejection is submitted againtransitionapiproposed
Proves
BR-CAP-CRM-DQ-008-02
Preconditions
Arrange dismissed standing with the transition guard satisfied: A dismissal is already stored.
Steps
The same rejection is submitted again.
Expected
Read the dismissed standing and inspect the associated changes: retain the existing decision; return its attribution and already-dismissed indication.
Data
Fixtures for dismissed, the guard and the affected records; a fixed clock for time-dependent changes.
Source
services-crm:modules/duplicates/tests/integration/services/persistence/duplicate-candidates.integration.spec.js#answers the second reviewer the EARLIER dismissal: its who, its name as visibility permits, its when and its note
11 Observe dismissed becoming open after restoration or newly scored strong evidence reopens reviewtransitionapiproposed
Proves
BR-CAP-CRM-DQ-008-05 BR-CAP-CRM-DQ-008-06
Preconditions
Arrange dismissed standing with the transition guard satisfied: Restoration needs review authority and the relevant decision; automatic reopening needs new strong evidence.
Steps
Restoration or newly scored strong evidence reopens review.
Expected
Read the open standing and inspect the associated changes: remove dismissal fields; retain the current scoring result; refresh open grouping.
Data
Fixtures for dismissed, the guard and the affected records; a fixed clock for time-dependent changes.
Source
services-crm:modules/duplicates/tests/unit/services/matching/fingerprint.spec.js#leaves a pair dismissed when a name typo is fixed and nothing strong changes
12 Observe confirmed becoming dismissed after a reviewer rejects a confirmed pairtransitionapiproposed
Proves
BR-CAP-CRM-DQ-008-01
Preconditions
Arrange confirmed standing with the transition guard satisfied: Confirmation does not prevent dismissal by a reviewer.
Steps
A reviewer rejects a confirmed pair.
Expected
Read the dismissed standing and inspect the associated changes: record the rejection; refresh dismissed grouping.
Data
Fixtures for confirmed, the guard and the affected records; a fixed clock for time-dependent changes.
Source
services-crm:modules/duplicates/services/persistence/duplicate-candidates.ts:dismissDuplicateCandidate
13 Observe open group becoming dismissed group after a reviewer dismisses all open comparisons in the selected grouptransitionapiproposed
Proves
BR-CAP-CRM-DQ-008-03
Preconditions
Arrange open group standing with the transition guard satisfied: Review authority and at least one undecided pair are required.
Steps
A reviewer dismisses all open comparisons in the selected group.
Expected
Read the dismissed group standing and inspect the associated changes: return the resulting dismissed component and its separate identity.
Data
Fixtures for open group, the guard and the affected records; a fixed clock for time-dependent changes.
Source
services-crm:modules/duplicates/tests/integration/services/persistence/duplicate-candidates.integration.spec.js#leaves no pair of the group dismissed, a group being decided about whole or not at all
14 Observe dismissed group becoming open group after a reviewer undoes the selected group rejectiontransitionapiproposed
Proves
BR-CAP-CRM-DQ-008-04
Preconditions
Arrange dismissed group standing with the transition guard satisfied: Only pairs attributed to that decision reopen; an empty restoration is refused.
Steps
A reviewer undoes the selected group rejection.
Expected
Read the open group standing and inspect the associated changes: return the resulting open component.
Data
Fixtures for dismissed group, the guard and the affected records; a fixed clock for time-dependent changes.
Source
services-crm:modules/duplicates/tests/integration/services/persistence/duplicate-candidates.integration.spec.js#leaves the pair somebody dismissed on its own dismissed, that being a decision of its own
15 Dismissal cannot be stored with incomplete attributioninvariantapiproposed
Proves
INV-DOM-CRM-DQ-001-03
Preconditions
One open pair and direct writes omitting either dismissal author or time.
Steps
Attempt each incomplete dismissed row, then dismiss and restore through the service.
Expected
Incomplete direct writes are refused; the restored pair has neither dismissal stamp.
Data
Records, versions and caller contexts owned by the run; transaction failure injection when the invariant concerns rollback.
Source
services-crm:modules/duplicates/db/duplicate-candidates.table.ts:candidateConstraints
16 A note over its limit leaves the pair undecidedvalidationapinegativeproposed
Proves
BR-CAP-CRM-DQ-008-10
Preconditions
An open workspace comparison and a note of one thousand and one characters.
Steps
Dismiss with the oversized note; then try an unavailable pair and group.
Expected
The oversized note is rejected and the unavailable records return not found, with no review decision written.
Data
Run-owned records and caller permissions that distinguish the two cases.
Source
services-crm:modules/duplicates/tests/e2e/duplicates.e2e.spec.js#refuses a dismissal note longer than a note may be (400)
17 Removing one member leaves the other comparisons openrulebrowsernegativeproposed
Proves
BR-CAP-CRM-DQ-008-11
Preconditions
A connected three-record group.
Steps
Remove one record from the displayed group and read every pair.
Expected
Only that record’s comparisons are dismissed; the remaining members retain their open comparison.
Data
Run-owned records and caller permissions that distinguish the two cases.
Source
react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0234.spec.ts#CRM-ACC-0234
18 New evidence and later absorption preserve the right decisioninteractionapiproposed
Proves
BR-CAP-CRM-DQ-008-01 BR-CAP-CRM-DQ-008-02 BR-CAP-CRM-DQ-008-03 BR-CAP-CRM-DQ-008-04 BR-CAP-CRM-DQ-008-05 BR-CAP-CRM-DQ-008-06 BR-CAP-CRM-DQ-008-09 BR-CAP-CRM-DQ-008-10 BR-CAP-CRM-DQ-008-11
Preconditions
Run-owned contact and organization records, the relevant staff permissions and the related state described by the sequence.
Steps
Dismiss an outside comparison, correct a name, add a shared mobile, dismiss again and absorb one participant through a merge.
Expected
Reopening and carried attribution match the named rules without overwriting an independent survivor decision.
Data
An isolated workspace with related records and fixed timestamps; owned participant failure injection where requested.
Source
CAP-CRM-DQ-008; CAP-CRM-DQ-001; CAP-CRM-DQ-015; 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.