---
id: TST-PFM-NOT-105
title: channel resolution
kind: unit
product_area: platform
module: notifications
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - modules/notifications/tests/unit/channel-resolution.spec.js
implements:
  - ATS-PFM-NOT-007-01
  - ATS-PFM-NOT-007-02
  - ATS-PFM-NOT-007-03
  - ATS-PFM-NOT-007-08
  - ATS-PFM-NOT-010-04
environment: mock
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 1
isolation: Per-process test inputs and installed doubles.
assertion_bindings:
  - scenario: ATS-PFM-NOT-007-01
    suite: TST-PFM-NOT-105
    assertions:
      - >-
        services-platform:modules/notifications/tests/unit/channel-resolution.spec.js#chooses
        the console for everyone, by the definition
  - scenario: ATS-PFM-NOT-007-02
    suite: TST-PFM-NOT-105
    assertions:
      - >-
        services-platform:modules/notifications/tests/unit/channel-resolution.spec.js#records
        a supported channel with no adapter yet as not available until its
        milestone
      - >-
        services-platform:modules/notifications/tests/unit/channel-resolution.spec.js#names
        the milestone of each channel that is not available
      - >-
        services-platform:modules/notifications/tests/unit/channel-resolution.spec.js#records
        a channel the definition does not support as unsupported, without a
        milestone
  - scenario: ATS-PFM-NOT-007-03
    suite: TST-PFM-NOT-105
    assertions:
      - >-
        services-platform:modules/notifications/tests/unit/channel-resolution.spec.js#delivers
        chat and SMS as queued work, and the console and e-mail not
  - scenario: ATS-PFM-NOT-007-08
    suite: TST-PFM-NOT-105
    assertions:
      - >-
        services-platform:modules/notifications/tests/unit/channel-resolution.spec.js#chooses
        a supported channel that has an adapter and a reachable person
      - >-
        services-platform:modules/notifications/tests/unit/channel-resolution.spec.js#skips
        a channel whose adapter says the person cannot be reached, with the
        adapter’s reason
      - >-
        services-platform:modules/notifications/tests/unit/channel-resolution.spec.js#words
        a skipped channel with the adapter’s own sentence when it has one
  - scenario: ATS-PFM-NOT-010-04
    suite: TST-PFM-NOT-105
    assertions:
      - >-
        services-platform:modules/notifications/tests/unit/channel-resolution.spec.js#words
        a skipped channel with the adapter’s own sentence when it has one
evidence:
  - >-
    services-platform:modules/notifications/tests/unit/channel-resolution.spec.js
  - The file and referenced assertion titles exist at the pinned commit.
dependency_evidence:
  - 'Real: the pure resolution. Doubled: nothing. Never doubled: the resolution.'
---

# channel resolution

## Verification Boundary

This suite checks isolated calculations, validation or presentation with process-local inputs. It does not establish a deployed workflow.

## What This Suite Proves

Its cases exercise deliver personal notices in the console; explain unavailable and unsupported routes; queue only eligible delivery-work channels; select only reachable adapter destinations; explain skipped channels consistently.

The registered scenario bindings identify the assertions this executable file contributes. They retain individual test references so that a composite scenario does not become a claim of complete execution by one file.

## What It Does Not Prove

Local outcomes do not prove deployed queues, external provider acceptance, production credentials or complete browser behavior. No fresh execution or conformance result is claimed.

## Real Dependencies and Test Doubles

The test file identifies its pure inputs or presentation doubles. Console component suites use recorded request handlers; pure validation suites require no external provider.

## Must Not Be Doubled

The calculation, validator or component under test must execute its real implementation. Doubles supply inputs and external responses without replacing the behavior being proved.
