---
id: TST-PFM-QRY-433
title: Platform handle change events
kind: integration
product_area: platform
module: queries
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  rhythm-v2-docs: 99376625d3e7ac26936413cfc31a88fba6562464
repository: services-platform
files:
  - modules/quick-search/tests/integration/services/indexing/handle-change-events.integration.spec.js
implements:
  - ATS-PFM-QRY-017-06
  - ATS-PFM-QRY-017-07
  - ATS-PFM-QRY-017-08
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
isolation: 'The suite’s database fixtures, controlled execution contexts and file-owned external dependency seams.'
evidence:
  - >-
    services-platform:modules/quick-search/tests/integration/services/indexing/handle-change-events.integration.spec.js
assertion_bindings:
  - scenario: ATS-PFM-QRY-017-06
    source:
      - >-
        services-platform:modules/quick-search/tests/integration/services/indexing/handle-change-events.integration.spec.js#removes
        the document of a record the projection no longer finds, leaving no tombstone in the provider
    scope: assertions cited by the scenario
    provenance: test
  - scenario: ATS-PFM-QRY-017-07
    source:
      - >-
        services-platform:modules/quick-search/tests/integration/services/indexing/handle-change-events.integration.spec.js#re-indexes
        the contacts of the organization, so each hit shows the name the organization has now
      - >-
        services-platform:modules/quick-search/tests/integration/services/indexing/handle-change-events.integration.spec.js#re-indexes
        only the contacts with a current affiliation to that organization, not one whose affiliation ended
      - >-
        services-platform:modules/quick-search/tests/integration/services/indexing/handle-change-events.integration.spec.js#re-indexes
        the linked contact, so its hit shows the city the organization’s address has now
    scope: assertions cited by the scenario
    provenance: test
  - scenario: ATS-PFM-QRY-017-08
    source:
      - >-
        services-platform:modules/quick-search/tests/integration/services/indexing/handle-change-events.integration.spec.js#fails
        every event of the tenant whose write was refused, so CRM redelivers exactly those
      - >-
        services-platform:modules/quick-search/tests/integration/services/indexing/handle-change-events.integration.spec.js#writes
        the other tenant’s document, so one tenant’s provider failure stops nothing else
      - >-
        services-platform:modules/quick-search/tests/integration/services/indexing/handle-change-events.integration.spec.js#settles
        the unprovisioned tenant’s events, so its queue drains instead of retrying forever
      - >-
        services-platform:modules/quick-search/tests/integration/services/indexing/handle-change-events.integration.spec.js#settles
        the events of the tenant being deleted, because its records are on their way out
    scope: assertions cited by the scenario
    provenance: test
fixture_seams:
  - >-
    services-platform:modules/quick-search/tests/integration/services/indexing/handle-change-events.integration.spec.js:1078
---

# Platform handle change events

## Verification Boundary

The file invokes its service or persistence boundary against local integration fixtures.

## What This Suite Proves

Its assertions check handle change events. The assertion bindings identify the corresponding acceptance examples and retain their original test-title citations.

## What It Does Not Prove

Local execution does not establish deployed queue scheduling, every external provider response or a passing result at the pinned revision.

## Real Dependencies and Test Doubles

The integration fixture and any imported dependency seams define the environment. Database-oriented checks use PostgreSQL; file-owned transport, clock, provider or worker seams isolate the explicitly controlled boundary.

## Must Not Be Doubled

Keep the service or persistence operation whose behavior is asserted real. Database constraints and transactions cannot be replaced by fixture answers when they are the subject of the check.
