---
id: TST-COM-FUL-004
title: Data jobs
kind: integration
product_area: commerce
module: fulfillment
revision: 1
status: draft
source_sha:
  services-commerce: c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
repository: services-commerce
files:
  - modules/data-operations/tests/integration/services/jobs/data-jobs.integration.spec.js
implements:
  - ATS-COM-FUL-020-02
  - ATS-COM-FUL-020-03
  - ATS-COM-FUL-020-04
  - FAS-COM-FUL-05-01
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 3
isolation: >-
  Run-created workspace identifiers and fixture records in the prepared test database; concurrency
  cases own their extra connections.
evidence:
  - repository: services-commerce
    path: modules/data-operations/tests/integration/services/jobs/data-jobs.integration.spec.js
    test_titles:
      - >-
        validates without writing: the submission validating, its one batch run, the job validated
        with its impact one create
      - 'refuses an apply that echoes no impact digest, impact_digest_required'
      - >-
        refuses an apply that echoes a digest other than the validation recorded,
        impact_digest_mismatch
      - >-
        applies the validated job echoing its digest: queued, one batch on the queue table for the
        dispatcher
      - 'runs to completion, every item applied and read back, with no rejection'
      - 'answers the same job the second time, reused, with one row in the idempotency ledger'
      - >-
        lists every job of the collection for a caller holding its bulk key, and no job of another
        collection
      - lists only the jobs a caller submitted themselves when they lack the collection’s bulk key
      - answers a job of another collection as not found through this collection’s scope
      - refuses a submission naming another collection’s object type
      - is refused for a tenant that is live
      - is accepted for a tenant in implementation that is being loaded
    scenario_anchors:
      - >-
        services-commerce:modules/data-operations/tests/integration/services/jobs/data-jobs.integration.spec.js#answers
        the same job the second time, reused, with one row in the idempotency ledger
      - >-
        services-commerce:modules/data-operations/tests/integration/services/jobs/data-jobs.integration.spec.js#refuses
        an apply that echoes no impact digest, impact_digest_required
      - >-
        services-commerce:modules/data-operations/tests/integration/services/jobs/data-jobs.integration.spec.js#refuses
        an apply that echoes a digest other than the validation recorded, impact_digest_mismatch
      - >-
        services-commerce:modules/data-operations/tests/integration/services/jobs/data-jobs.integration.spec.js#applies
        the validated job echoing its digest: queued, one batch on the queue table for the
        dispatcher
      - >-
        services-commerce:modules/data-operations/tests/integration/services/jobs/data-jobs.integration.spec.js#validates
        without writing: the submission validating, its one batch run, the job validated with its
        impact one create
      - >-
        services-commerce:modules/data-operations/tests/integration/services/jobs/data-jobs.integration.spec.js#lists
        every job of the collection for a caller holding its bulk key, and no job of another
        collection
      - >-
        services-commerce:modules/data-operations/tests/integration/services/jobs/data-jobs.integration.spec.js#lists
        only the jobs a caller submitted themselves when they lack the collection’s bulk key
      - >-
        services-commerce:modules/data-operations/tests/integration/services/jobs/data-jobs.integration.spec.js#answers
        a job of another collection as not found through this collection’s scope
      - >-
        services-commerce:modules/data-operations/tests/integration/services/jobs/data-jobs.integration.spec.js#refuses
        a submission naming another collection’s object type
      - >-
        services-commerce:modules/data-operations/tests/integration/services/jobs/data-jobs.integration.spec.js#is
        refused for a tenant that is live
      - >-
        services-commerce:modules/data-operations/tests/integration/services/jobs/data-jobs.integration.spec.js#is
        accepted for a tenant in implementation that is being loaded
      - >-
        services-commerce:modules/data-operations/tests/integration/services/jobs/data-jobs.integration.spec.js
---

# Data jobs

## Verification Boundary

This suite checks data jobs against the prepared PostgreSQL database. Its entry points are the persistence and service functions used by the tests.

## What This Suite Proves

The bound scenarios identify the assertions this suite contributes. Source anchors retain the exact test cases; where a capability scenario has several contributing suites, a single binding does not imply that every branch runs here.

## What It Does Not Prove

Direct service and persistence calls do not establish the full HTTP permission contract, deployed scheduling or browser behavior. No execution result is claimed by this register.

## Real Dependencies and Test Doubles

The database and imported Commerce persistence services are real. Fixtures create the records owned by this run.

## Must Not Be Doubled

Keep the database constraints, row visibility and persistence writes real when claiming this integration coverage. A canned repository response cannot replace the boundary being checked.
