---
id: TST-PFM-INT-517
title: connection feature changes
kind: integration
product_area: platform
module: integrations
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  macroservice-libraries: 54536a441935c6e09fdb7f96f0bec71c52ba4e03
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
repository: services-platform
files:
  - >-
    modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js
implements:
  - ATS-PFM-INT-006-05
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
isolation: >-
  Use the suite-owned database fixtures and its declared cleanup; prepare the test database before
  integration or lifecycle execution.
evidence:
  - >-
    services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js
test_cases:
  - source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#services/connections/verify-connection.ts
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
      step 1: the account losing ach is recorded as features_changed, with lost naming ach on each
      capability that declares it and gained empty
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
      step 1: the connection stays active and the feature list no longer holds ach
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
      step 2: the binding requiring ach becomes invalid with feature_lost, the one requiring
      manual_capture stays active
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
      step 3: the loss tells each administrator of the tenant once, two notices in all, each with the
      features-lost subject
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
      step 3: the invalidated binding is told to the administrators beside the loss, once per
      administrator
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
      step 4: the account then losing manual_capture too is a second features_changed row naming
      manual_capture
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
      step 4: both bindings are invalid with feature_lost once both features are gone
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
      step 5: the account reporting both features again restores both bindings to active
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
      step 5: the regained features are verified on the connection again
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
      step 5: a gain sends no notice to anybody
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
      step 5: a gain alone writes no features_changed row: the loss rows are the only two
      (verify-connection.ts records the change only when something was lost)
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
      step 6: the e-mail sender failing does not roll the loss back: the feature is gone, the binding
      invalid, the audit row written
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
      step 6: is never recorded in verified_features, whatever the adapter reports
    provenance: test
dependency_evidence:
  provenance: test
  source: >-
    services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js
  reviewed:
    - Suite introduction
    - Fixture setup
    - Client substitutions
    - Assertions and cleanup
---
# connection feature changes

## Verification Boundary

This database and service suite exercises connection feature changes. Its registration records the executable definition; no run result is asserted.

## What This Suite Proves

The bindings identify the detailed outcomes asserted by this suite. Test-level evidence retains the individual checks, including cases where several suites contribute to one scenario.

## What It Does Not Prove

In-process execution does not establish deployed infrastructure or a real provider response. Several bindings can supply different parts of a detailed scenario; no single-file completeness is implied.

## Real Dependencies and Test Doubles

The suite definition identifies its database fixtures and replaced clients, hooks, clocks or executors. Integration runs use the prepared database; lifecycle runs exercise the in-process route or adapter path.

## Must Not Be Doubled

The database constraints, transactions and service behavior claimed by an integration binding must execute. Replaced external seams cannot establish live provider or infrastructure behavior.
