Skip to content

ATS-PFM-QRY-015Deliver recurring query and report files: Capability Test Specification

Markdown

ATS-PFM-QRY-015

Deliver recurring query and report files: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaPlatformModuleQuestions, record exploration and data deliveryRevision2

Read atservices-platform ad3f6a65react-console baf6dae3rhythm-v2-docs 99376625

Coverage

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

Test Scenarios

20 scenarios proving CAP-PFM-QRY-015; 16 bound to an existing test.

01 Schedule discovery follows owner or manager accesspermissionapinegativetest
Proves
BR-CAP-PFM-QRY-015-01
Preconditions
A schedule has owner, manager and unrelated use-holder contexts.
Steps
List and read as each, narrow a manager list to mine and request another workspace.
Expected
Permitted audiences succeed, unrelated contexts receive 404 or no entry, and mine narrows the manager list.
Data
Use the existing binding’s controlled fixture data.
Bound to
Source
services-platform:modules/queries/tests/integration/services/schedules/query-schedule-routes.integration.spec.js#answers the owner and a manager
02 Invalid scheduling inputs write nothingvalidationapinegativetest
Proves
BR-CAP-PFM-QRY-015-02
Preconditions
A source asks for a value and the caller can otherwise schedule.
Steps
Omit input, use an unpublished template, run too frequently, send invalid naming and deny dataset access.
Expected
Shape and scheduling errors return 400, data denial returns 403, and no schedule is created.
Data
Use the existing binding’s controlled fixture data.
Bound to
Source
services-platform:modules/queries/tests/integration/services/schedules/query-schedule-routes.integration.spec.js#refuses a query whose required value is missing (400, naming it)
03 Query schedules adopt changes only on refreshinteractionapitest
Proves
BR-CAP-PFM-QRY-015-03 INV-DOM-PFM-QRY-004-07
Preconditions
A schedule’s saved source is edited after scheduling.
Steps
Read its warning and comparison, then explicitly refresh its pinned source.
Expected
Both versions are visible before refresh and the updated copy clears the warning.
Data
Use the existing binding’s controlled fixture data.
Bound to
Source
services-platform:modules/queries/tests/integration/services/schedules/query-schedule-routes.integration.spec.js#flags the saved query as changed since the schedule was set up
04 Automatic delivery rebuilds owner authoritypermissionapinegativetest
Proves
BR-CAP-PFM-QRY-015-04
Preconditions
An owner loses data access and a staff owner’s workspace grant later ends.
Steps
Run deliveries before and after loss.
Expected
Allowed work can complete, but lost access fails without messages and pauses the schedule.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/schedules/scheduled-delivery.integration.spec.js#runs while the grant is active: the run succeeds, the export holds the rows and the e-mail is asked for
Source
services-platform:modules/queries/tests/integration/services/schedules/scheduled-delivery.integration.spec.js#fails the run with the sentence D4 gives, and sends nothing
05 Taking responsibility requires managementpermissionapinegativetest
Proves
BR-CAP-PFM-QRY-015-05
Preconditions
A schedule belongs to another user.
Steps
Take ownership as a use-holder and then a manager.
Expected
The use-holder receives 403 and the manager becomes owner.
Data
Use the existing binding’s controlled fixture data.
Bound to
Source
services-platform:modules/queries/tests/integration/services/schedules/query-schedule-routes.integration.spec.js#refuses take-ownership to a holder of .use alone (403)
06 Run Now uses the initiating personruleapitest
Proves
BR-CAP-PFM-QRY-015-06
Preconditions
A manager runs another owner’s schedule immediately.
Steps
Queue the run and inspect its execution and history.
Expected
The manager is the execution identity and existing recipients receive the run.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/schedules/query-schedule-routes.integration.spec.js#shows the run in the history: run-now, who ran it, the file and each delivery
Source
services-platform:modules/queries/tests/integration/services/schedules/query-schedule-routes.integration.spec.js#answers the run queued, run now by the caller rather than the owner
07 Recipients need valid users or outside authoritypermissionapinegativetest
Proves
BR-CAP-PFM-QRY-015-07 INV-DOM-PFM-QRY-004-06
Preconditions
A creator lacks outside-recipient permission and recipients include removed or suspended users.
Steps
Add outside and organizational addresses and execute delivery.
Expected
External admission fails without authority; organizational addresses work and unavailable users are skipped with reasons.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/schedules/query-schedule-routes.integration.spec.js#refuses an outside address without platform.query-schedules.external-recipients (403), and writes nothing
services-platform:modules/queries/tests/integration/services/schedules/scheduled-delivery.integration.spec.js#records every recipient’s delivery: two submitted, the removed and the suspended user skipped with why
Source
services-platform:modules/queries/tests/integration/services/schedules/query-schedule-routes.integration.spec.js#refuses an outside address without platform.query-schedules.external-recipients (403), and writes nothing
08 Delivery retry does not repeat messagesinvariantapinegativetest
Proves
BR-CAP-PFM-QRY-015-08 INV-DOM-PFM-QRY-004-05
Preconditions
A run has two eligible recipients.
Steps
Process it twice and redeliver its completed queue message.
Expected
Only the original two recipient-keyed communications requests exist, each with an expiring personal link.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/schedules/scheduled-delivery.integration.spec.js#asks for one e-mail per deliverable recipient, each under the key <run id>:<recipient id>
services-platform:modules/queries/tests/integration/services/schedules/scheduled-delivery.integration.spec.js#gives each recipient a personal link, signed for the export and that recipient, for seven days
Source
services-platform:modules/queries/tests/integration/services/schedules/scheduled-delivery.integration.spec.js#asks for one e-mail per deliverable recipient, each under the key <run id>:<recipient id>
09 Empty-result behaviour depends on schedule kindedgeapinegativetest
Proves
BR-CAP-PFM-QRY-015-09
Preconditions
A query result is empty and a report schedule is proposed.
Steps
Run the empty query schedule and enable skip-empty for the report.
Expected
The query run skips messaging and the report option is refused.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/schedules/scheduled-delivery.integration.spec.js#sends no e-mail for it, and does send one for the schedule that sends empty results
Source
services-platform:modules/queries/tests/integration/services/schedules/scheduled-delivery.integration.spec.js#ends a skip-when-empty run skipped, its export holding no rows
10 Scheduled dates resolve anewboundaryapitest
Proves
BR-CAP-PFM-QRY-015-10
Preconditions
A stored date input represents today.
Steps
Run on two different workspace days.
Expected
Each export records and uses its own execution day.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/schedules/query-schedule-routes.integration.spec.js#accepts a date parameter as today, the relative day each run reads as its own date
Source
services-platform:modules/queries/tests/integration/services/schedules/scheduled-delivery.integration.spec.js#runs the criterion on the day of each run, in the tenant’s zone
11 Retry and repeated-failure policies remain distinctfailureapinegativetest
Proves
BR-CAP-PFM-QRY-015-11
Preconditions
Controlled runs include transient and terminal errors followed by consecutive failures.
Steps
Process retries and the fifth failed run.
Expected
Transient work can recover, terminal errors are not retried and repeated failure pauses with a reason.
Data
Use the existing binding’s controlled fixture data.
Bound to
Source
services-platform:modules/queries/tests/integration/services/schedules/scheduled-delivery.integration.spec.js#succeeds on the redelivery, on its second attempt
12 Report schedules keep report-specific formats and kindvalidationapinegativetest
Proves
BR-CAP-PFM-QRY-015-12
Preconditions
A table report, dashboard and caller without report use are available.
Steps
Create schedules with supported and unsupported formats and attempt a kind change.
Expected
Eligible Excel succeeds; invalid formats, absent access and kind replacement are refused.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/query-schedules.e2e.spec.js#refuses Excel for a dashboard (400 at options.format)
services-platform:modules/queries/tests/e2e/query-schedules.e2e.spec.js#refuses a caller without platform.reports.use (403)
services-platform:modules/queries/tests/e2e/query-schedules.e2e.spec.js#refuses a replacement that would turn it into a query schedule (400)
Source
services-platform:modules/queries/tests/e2e/query-schedules.e2e.spec.js#accepts Excel for a table report
13 Deleted-report schedules preserve only their historytransitionapinegativetest
Proves
BR-CAP-PFM-QRY-015-13
Preconditions
A report has an associated schedule.
Steps
Remove the report and request resumption and immediate execution.
Expected
The schedule is paused for deletion, resumption returns 400 and immediate execution returns 404.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/query-schedules.e2e.spec.js#pauses the schedule report_deleted, its report gone
Source
services-platform:modules/queries/tests/e2e/query-schedules.e2e.spec.js#pauses the schedule report_deleted, its report gone
14 Imported schedules wait for legacy shutdowntransitionapinegativetest
Proves
BR-CAP-PFM-QRY-015-14
Preconditions
A migrated schedule is paused and marked imported.
Steps
Resume without and then with the shutdown confirmation.
Expected
The first attempt explains the refusal and the confirmed attempt resumes.
Data
Use the existing binding’s controlled fixture data.
Bound to
Source
services-platform:modules/queries/tests/integration/services/schedules/query-schedule-routes.integration.spec.js#arrives paused and flagged imported, owned by the person named
15 Schedule versions and copying preserve responsibilityconcurrencyapitest
Proves
BR-CAP-PFM-QRY-015-15
Preconditions
A schedule has a current version.
Steps
Replace at an older version, duplicate it and delete it.
Expected
The stale write conflicts, the copy is paused and caller-owned, and the removed schedule is then missing.
Data
Use the existing binding’s controlled fixture data.
Bound to
Source
services-platform:modules/queries/tests/integration/services/schedules/query-schedule-routes.integration.spec.js#refuses a replacement at a stale version (409)
16 Delivery responsibility can recover after lost accessinteractionbrowsertest
Proves
AS-JNY-PFM-QRY-004-01 AS-JNY-PFM-QRY-004-02 AS-JNY-PFM-QRY-004-03
Preconditions
A report schedule sends to two recipients.
Steps
Run the responsibility-transfer browser journey.
Expected
Initial delivery succeeds, source loss pauses without sending, and administrator takeover permits later delivery.
Data
Use the existing binding’s controlled fixture data.
Bound to
Source
react-console:acceptance/reporting/playwright/journeys/schedules/RPT-ACC-0425.spec.ts#RPT-ACC-0425
17 Scheduling protects the retained source until removedinteractionapiproposed
Proves
BR-CAP-PFM-QRY-006-14 BR-CAP-PFM-QRY-015-03
Preconditions
A saved contact question has an enabled query schedule.
Steps
Edit the question, compare the schedule, attempt query deletion, then delete the schedule and try again.
Expected
The schedule keeps its earlier copy and exposes the change; deletion succeeds only after the dependency is removed.
Data
Use an isolated workspace with the described source records, access grants and a surviving control workspace.
Source
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#refuses to delete a saved query a report presents as 409 saved_query_reported,services-platform:modules/queries/tests/integration/services/schedules/query-schedule-routes.integration.spec.js#flags the saved query as changed since the schedule was set up
18 Deleting a report pauses its recurring deliveriesinteractionapinegativeproposed
Proves
BR-CAP-PFM-QRY-011-12 BR-CAP-PFM-QRY-015-13
Preconditions
A report has both enabled and manually paused schedules plus a retained completed file.
Steps
Delete the report, inspect both schedules and try resuming or running them.
Expected
Both carry the report-deleted pause, retain their history and refuse new runs; the completed file remains.
Data
Use an isolated workspace with the described source records, access grants and a surviving control workspace.
Source
services-platform:modules/queries/tests/e2e/query-schedules.e2e.spec.js#pauses the schedule report_deleted, its report gone,services-platform:modules/queries/tests/e2e/query-schedules.e2e.spec.js#refuses to resume it (400)
19 A report schedule renders the current presentationinteractionapinegativeproposed
Proves
BR-CAP-PFM-QRY-013-04 BR-CAP-PFM-QRY-015-12
Preconditions
A table report has a PDF schedule and its layout changes after scheduling.
Steps
Run the schedule, inspect its export and remove the owner’s report-use grant before the next occurrence.
Expected
The first occurrence uses the updated presentation; the next fails without a new file or delivery and pauses the schedule.
Data
Use an isolated workspace with the described source records, access grants and a surviving control workspace.
Source
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#fails a requester who may not use reports access_lost, saying so plainly,services-platform:modules/queries/tests/e2e/query-schedules.e2e.spec.js#refuses Excel for a dashboard (400 at options.format)
20 Retry reuses each recipient’s file deliveryinteractionapiproposed
Proves
BR-CAP-PFM-QRY-014-09 BR-CAP-PFM-QRY-015-08
Preconditions
A query schedule has two active recipients and a completed export.
Steps
Process the occurrence, retry it and follow one recipient link after that recipient loses membership.
Expected
Two recipient-keyed communications requests remain; the departed recipient receives the invalid-link page.
Data
Use an isolated workspace with the described source records, access grants and a surviving control workspace.
Source
services-platform:modules/queries/tests/integration/services/exports/query-export-routes.integration.spec.js#answers the plain page for a recipient no longer on the schedule,services-platform:modules/queries/tests/integration/services/schedules/scheduled-delivery.integration.spec.js#submits nothing new when the same run is run again

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.