---
id: TST-PFM-DJE-183
title: Data job refusals
kind: unit
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-platform
files:
  - modules/data-jobs/tests/unit/data-job-refusals.spec.ts
implements: []
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 1
isolation: In-memory fixtures and restored dependency doubles.
evidence:
  - 'services-platform:modules/data-jobs/tests/unit/data-job-refusals.spec.ts'
assertion_inventory:
  - 'data jobs: what a systemic failure’s summary says'
  - names the database error’s class and its SQLSTATE for a statement the ORM reports
  - quotes neither the statement nor a value it bound
  - names only the ORM’s class for a failed statement with no SQLSTATE beneath it
  - is the summary an unclassified database error is given when it stops a job
  - keeps the class and message of an error that is not the database’s
  - 'data jobs: a refusal raised while a line is applied'
  - 'names the line, without the error’s class name, keeping the refusal’s classification'
  - names the item’s position when the line came in a request rather than a file
  - 'passes a database error through as it was thrown, for the engine to split the unit on'
  - 'data jobs: what a submission’s refusals say it sent'
  - says how many lines a dataset carried and the most one job holds
  - says how many records a request carried and the most one job holds
  - 'refuses an operation the object type is not loaded by, naming the request’s operation'
  - 'refuses an object type Platform loads nothing of, naming the request’s object type'
  - 'refuses a contract version the operation does not accept, naming the request’s contract version'
  - accepts a contract version the operation does accept (the positive control)
  - 'data jobs: the page a results or rejections query reads'
  - 'reads after the cursor, in the property the engine’s page takes'
  - reads from the first item when no cursor is given
  - 'data jobs: who sees every job of a surface'
  - is a holder of the every-job key across the tenant
  - is not a holder of the every-job key at one custom object only
  - is not a caller without the every-job key
registration_note: Registration describes existing source; the suite is not executed by this documentation job.
---

# Data job refusals

## Verification Boundary

The suite checks an isolated production calculation, declaration or adapter. The structured assertion inventory records the checks present at the pinned revision.

## What This Suite Proves

The existing checks exercise data job refusals. The specification bindings identify the narrower outcomes supported by those assertions.

## What It Does Not Prove

An isolated check does not establish a deployed workflow, database enforcement or complete feature acceptance.

## Real Dependencies and Test Doubles

The production function or declaration is exercised with in-memory inputs and dependency doubles. This boundary does not require a live database.

## Must Not Be Doubled

The production function under examination and its returned decisions remain real; replacing their answers defeats the check.
