Skip to content

ATS-PFM-DJE-005Inspect job progress and account for its changes: Capability Test Specification

Markdown

ATS-PFM-DJE-005

Inspect job progress and account for its changes: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaPlatformModuleData Job EngineRevision2

Read atmacroservice-libraries 54536a44services-crm a8d1364fservices-platform ad3f6a65react-console baf6dae3

Coverage

  • Rule covered
  • Transition gap: FND-PFM-DJE-065
  • Validation covered
  • Permission covered
  • Edge gap: FND-PFM-DJE-065
  • Failure gap: FND-PFM-DJE-065
  • Boundary covered
  • Concurrency gap: FND-PFM-DJE-065
  • Invariant covered
  • Interaction covered

Test Scenarios

10 scenarios proving CAP-PFM-DJE-005; 5 bound to an existing test.

01 Job visibility follows the caller’s authoritypermissionapinegativetest
Proves
BR-CAP-PFM-DJE-005-01
Preconditions
Create jobs from two submitters, only one with workspace-wide visibility.
Steps
[ { "do": "List jobs and attempt to read the other submitter’s job.", "expect": "The privileged caller sees both; the other sees only their own and receives not found for the other job.", "provenance": "test", "source": "services-crm:modules/data-jobs/tests/integration/services/jobs/list-contact-data-jobs.integration.spec.js#answers a holder of the bulk key both jobs, whoever submitted them (premise)" } ]
Expected
The privileged caller sees both; the other sees only their own and receives not found for the other job.
Data
Distinct caller personas.
Bound to
Source
services-crm:modules/data-jobs/tests/integration/services/jobs/list-contact-data-jobs.integration.spec.js#answers a holder of the bulk key both jobs, whoever submitted them (premise)
02 List filters reject unsupported inputvalidationapinegativetest
Proves
BR-CAP-PFM-DJE-005-02
Preconditions
Prepare jobs in different states.
Steps
[ { "do": "Filter by a valid state, an impossible state and an unknown parameter.", "expect": "The valid filter narrows results; invalid filter input receives 400.", "provenance": "test", "source": "services-crm:modules/data-jobs/tests/e2e/data-jobs.e2e.spec.js#refuses a state no job can be in with 400, rather than a filter it quietly ignores" } ]
Expected
The valid filter narrows results; invalid filter input receives 400.
Data
No additional fixture is needed.
Bound to
Source
services-crm:modules/data-jobs/tests/e2e/data-jobs.e2e.spec.js#refuses a state no job can be in with 400, rather than a filter it quietly ignores
03 Outcome paging preserves input sequenceboundaryapitest
Proves
BR-CAP-PFM-DJE-005-03
Preconditions
Complete a job containing 100 input records.
Steps
[ { "do": "Read successive result and refusal pages and apply an outcome filter.", "expect": "Rows remain in sequence without repetition and match the requested outcome.", "provenance": "test", "source": "services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#answers a page of results in item order, each with its outcome" } ]
Expected
Rows remain in sequence without repetition and match the requested outcome.
Data
No additional fixture is needed.
Bound to
Source
services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#answers a page of results in item order, each with its outcome
04 History attributes a job’s changesinvariantbrowsertest
Proves
BR-CAP-PFM-DJE-005-05
Preconditions
Complete a contact-changing job.
Steps
[ { "do": "Inspect the changed contacts’ history.", "expect": "Revisions identify job source, submitter and batch.", "provenance": "test", "source": "services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#records a job as the source of that revision, not a console" } ]
Expected
Revisions identify job source, submitter and batch.
Data
No additional fixture is needed.
Bound to
Source
services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#records a job as the source of that revision, not a console
05 Proposed retention removes aged outcome evidenceruleapiproposed
Proves
BR-CAP-PFM-DJE-005-07
Preconditions
Prepare a job completed 91 days earlier.
Steps
[ { "do": "Run the planned retention task, inspect the job and request rollback.", "expect": "Expired evidence is removed and rollback is refused outside its window.", "provenance": "proposed", "source": "services-platform:docs/milestones/PLAT-M19-data-job-engine-foundations.md#D6" } ]
Expected
Expired evidence is removed and rollback is refused outside its window.
Data
A fixture-controlled clock.
Source
services-platform:docs/milestones/PLAT-M19-data-job-engine-foundations.md#D6
06 Daily purge respects age and workspaceboundaryapitest
Proves
BR-CAP-PFM-DJE-005-08
Preconditions
Prepare idempotency entries of different ages in two workspaces.
Steps
[ { "do": "Purge one workspace twice.", "expect": "Only its entries older than 30 days disappear; the second purge removes nothing.", "provenance": "test", "source": "macroservice-libraries:packages/data-jobs/src/tests/integration/submission-purge.integration.spec.ts#deletes the tenant's rows older than 30 days and keeps the rest, the row exactly 30 days old included" } ]
Expected
Only its entries older than 30 days disappear; the second purge removes nothing.
Data
No additional fixture is needed.
Bound to
Source
macroservice-libraries:packages/data-jobs/src/tests/integration/submission-purge.integration.spec.ts#deletes the tenant's rows older than 30 days and keeps the rest, the row exactly 30 days old included
07 Planned large-result tools support investigationrulebrowserproposed
Proves
BR-CAP-PFM-DJE-005-09
Preconditions
Complete a 5,000-record job.
Steps
[ { "do": "Search for a producer key, inspect refusal-code counts and request refusal export.", "expect": "The matching results, grouped totals and generated data export are available.", "provenance": "proposed", "source": "services-platform:docs/milestones/plans/PLAT-M21-plan.md#Added 2026-10-22 (from PLAT-M19 review R3): results at scale, server side" } ]
Expected
The matching results, grouped totals and generated data export are available.
Data
An input file with 5,000 rows.
Source
services-platform:docs/milestones/plans/PLAT-M21-plan.md#Added 2026-10-22 (from PLAT-M19 review R3): results at scale, server side
08 Keyed submission remains identifiable in inspectioninteractionapiproposed
Proves
BR-CAP-PFM-DJE-001-05 BR-CAP-PFM-DJE-005-03
Preconditions
Create an authorized caller and two selected contacts.
Steps
[ { "do": "Submit a keyed update, repeat it, process it, and read its job and result pages.", "expect": "Both submissions identify the same job and inspection contains each input position once.", "provenance": "proposed", "source": "services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#answers the second submission with the first job, having written nothing; services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#answers the next page from the cursor the last one gave, so no item is read twice" } ]
Expected
Both submissions identify the same job and inspection contains each input position once.
Data
Create an authorized caller and two selected contacts.
Source
services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#answers the second submission with the first job, having written nothing; services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#answers the next page from the cursor the last one gave, so no item is read twice
09 Inspection reconciles partial processinginteractionapinegativeproposed
Proves
BR-CAP-PFM-DJE-003-02 BR-CAP-PFM-DJE-003-04 BR-CAP-PFM-DJE-005-03 BR-CAP-PFM-DJE-005-05
Preconditions
Prepare valid, invalid and inaccessible contacts in one job.
Steps
[ { "do": "Process the job and read all result and refusal pages alongside the changed records' history.", "expect": "The pages account for each position; eligible changes have attribution and refusals disclose no record values.", "provenance": "proposed", "source": "services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#refuses the other five, counting each as what refused it; services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#names the rule a refused value broke, and quotes no value of the record; services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#answers the next page from the cursor the last one gave, so no item is read twice; services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#stamps the job on the revision, so every record one job changed can be listed" } ]
Expected
The pages account for each position; eligible changes have attribution and refusals disclose no record values.
Data
Prepare valid, invalid and inaccessible contacts in one job.
Source
services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#refuses the other five, counting each as what refused it; services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#names the rule a refused value broke, and quotes no value of the record; services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#answers the next page from the cursor the last one gave, so no item is read twice; services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#stamps the job on the revision, so every record one job changed can be listed
10 Restoration retains an inspectable link and exclusionsinteractionapiproposed
Proves
BR-CAP-PFM-DJE-005-05 BR-CAP-PFM-DJE-008-01 BR-CAP-PFM-DJE-008-02
Preconditions
Complete a contact title update and edit one affected title afterward.
Steps
[ { "do": "Plan and apply restoration, then inspect both jobs and the excluded contact.", "expect": "The restoration is linked to the original; reversible contacts are restored and the later edit remains with an exclusion.", "provenance": "proposed", "source": "services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#stamps the job on the revision, so every record one job changed can be listed; services-crm:modules/data-jobs/tests/integration/services/jobs/contact-update-rollback.integration.spec.js#plans it already validated, because planning a rollback IS validating it; services-crm:modules/data-jobs/tests/integration/services/jobs/contact-update-rollback.integration.spec.js#says which field changed since the job and when, without saying what it was changed to" } ]
Expected
The restoration is linked to the original; reversible contacts are restored and the later edit remains with an exclusion.
Data
Complete a contact title update and edit one affected title afterward.
Source
services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#stamps the job on the revision, so every record one job changed can be listed; services-crm:modules/data-jobs/tests/integration/services/jobs/contact-update-rollback.integration.spec.js#plans it already validated, because planning a rollback IS validating it; services-crm:modules/data-jobs/tests/integration/services/jobs/contact-update-rollback.integration.spec.js#says which field changed since the job and when, without saying what it was changed to

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.