---
id: TST-PFM-DJE-133
title: Spreadsheet columns
kind: integration
product_area: platform
module: data-job-engine
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  macroservice-libraries: 54536a441935c6e09fdb7f96f0bec71c52ba4e03
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
repository: services-crm
files:
  - modules/data-jobs/tests/integration/services/operations/spreadsheet-columns.integration.spec.js
implements:
  - ATS-PFM-DJE-013-01
  - ATS-PFM-DJE-013-02
  - ATS-PFM-DJE-013-03
  - ATS-PFM-DJE-013-04
  - ATS-PFM-DJE-013-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: >-
  Suite-owned fixture records, job identifiers and workspace contexts; teardown removes the fixture
  data.
evidence:
  - >-
    services-crm:modules/data-jobs/tests/integration/services/operations/spreadsheet-columns.integration.spec.js
assertion_inventory:
  - 'a spreadsheet import of contacts: e-mail, phone and address columns (D-40)'
  - applies both rows
  - lands the person with a canonical e-mail address from the preferred column
  - >-
    gives the untyped preferred phone number the tenant’s default type, the first applying to
    contacts in its order, preferred
  - gives the untyped preferred address the tenant’s default type and every column it carried
  - >-
    makes the preferred e-mail value that repeats the personal one the first address, the personal
    one, ahead of the work one
  - >-
    maps the mobile and work phone columns to their own types, the first declared type preferred, an
    empty cell no value
  - gives an organization’s untyped phone number the tenant’s default type for organizations
  - >-
    lands an organization’s preferred address and its billing address as two typed addresses, the
    preferred one the default type
  - 'maps the home and work address columns to their own types, the first declared type preferred'
  - 'a spreadsheet import: the columns the fold cannot use, and a tenant without a default type'
  - 'refuses a column mapped to a slot the record does not declare, naming the column and no value'
  - refuses a row that carries a collection and columns of it
  - >-
    refuses the untyped phone number of a tenant with no default type, at the element’s path,
    writing nothing
  - >-
    offers the preferred phone target with no default type for that tenant, so the wizard can say
    the column cannot be imported
  - the targets a mapping wizard is offered for a spreadsheet (D-40)
  - >-
    offers every preferred target of a contact with the default type of phone numbers and addresses
    beside it
  - 'names a typed target as the tenant names the type, and offers only the types the tenant has'
  - leaves out a typed address target the tenant has no type for (it has no mailing type)
  - >-
    offers the work and personal e-mail targets, which order the addresses and carry no type of
    their own
  - 'offers an organization no e-mail target, and its own default phone and address types'
registration_note: Registration describes existing source; the suite is not executed by this documentation job.
---

# Spreadsheet columns

## Verification Boundary

The suite checks the production service or shared engine against its database fixture. The structured assertion inventory records the checks present at the pinned revision.

## What This Suite Proves

The existing checks exercise spreadsheet columns. The specification bindings identify the narrower outcomes supported by those assertions.

## What It Does Not Prove

Local execution does not establish deployed queue, storage or service behavior. Independent test cases do not establish a complete cross-feature process.

## Real Dependencies and Test Doubles

The owning service exercises production persistence and domain behavior against real Postgres. The fixture supplies caller contexts; queue delivery, storage and external calls are doubled where the file installs a test port.

## Must Not Be Doubled

The database effects, security context and production operation under examination remain real. Their outcomes cannot be replaced with canned success responses.
