ATS-PFM-QRY-011 Maintain a shared report library: Capability Test Specification
Markdown Design / Platform / Questions, record exploration and data delivery / Report presentation / Capability Test Specification Show evidence (sources, provenance, origins, pinned commits)Coverage Rule covered Transition not-applicable Validation covered Permission covered Edge gap: FND-PFM-QRY-061 Failure gap: FND-PFM-QRY-061 Boundary covered Concurrency covered Invariant gap: FND-PFM-QRY-061 Interaction covered Test Scenarios 17 scenarios proving CAP-PFM-QRY-011 ; 13 bound to an existing test.
01 Audience refusal conceals report existence permission api negative test
Proves BR-CAP-PFM-QRY-011-01 INV-DOM-PFM-QRY-003-01 Preconditions Private, selected-role and organization reports exist. Steps Read and list as an unrelated colleague and a report manager. Expected The colleague sees only allowed audiences; the manager reaches the reports and other lookups return 404. Data Use the existing binding’s controlled fixture data. Bound to Source services-platform:modules/queries/tests/e2e/reports.e2e.spec.js #answers a colleague’s read of a private report as 404, exactly as an id nobody holds 02 Read Only report access excludes write operations permission api negative test
Proves BR-CAP-PFM-QRY-011-02 Preconditions A Read Only user can see a shared report. Steps List and open it, then attempt creation, copying, replacement, removal and export. Expected Reads work without editing powers and attempted writes return 403. Data Use the existing binding’s controlled fixture data. Bound to Source services-platform:modules/queries/tests/e2e/read-tier.e2e.spec.js #lists the organization’s report 03 Base-dataset denial removes report discovery permission api negative test
Proves BR-CAP-PFM-QRY-011-03 Preconditions A shared report depends on a base dataset denied to the reader. Steps List and open the report as that reader. Expected The entry is omitted and direct opening returns 404. Data Use the existing binding’s controlled fixture data. Bound to Source services-platform:modules/queries/tests/e2e/read-tier.e2e.spec.js #is not shown the report in the catalog 04 Source audiences constrain report sharing interaction api negative test
Proves BR-CAP-PFM-QRY-011-04 INV-DOM-PFM-QRY-003-02 Preconditions A source question is private. Steps Create a wider report and widen an existing report over it. Expected Both attempts conflict and identify the narrower source. Data Use the existing binding’s controlled fixture data. Bound to Source services-platform:modules/queries/tests/e2e/reports.e2e.spec.js #refuses a report shared wider than its saved query as 409 ReportSharedWiderThanQuery, naming the query 05 Ownership and share authority govern report changes permission api negative test
Proves BR-CAP-PFM-QRY-011-05 Preconditions A report belongs to another user and its owner lacks share permission. Steps Edit as the colleague and widen sharing as the owner. Expected Both writes return 403. Data Use the existing binding’s controlled fixture data. Bound to Source services-platform:modules/queries/tests/e2e/reports.e2e.spec.js #refuses a colleague’s edit of an organization report as 403 06 Support staff receive report-management powers permission unit test
Proves BR-CAP-PFM-QRY-011-06 Preconditions A staff context holds a workspace grant for another owner’s private report. Steps Evaluate its read and maintenance powers. Expected The staff context can inspect and maintain the report. Data Use the existing binding’s controlled fixture data. Bound to Source services-platform:modules/queries/tests/unit/services/reports/report-access.spec.ts #shows a colleague’s private report to staff holding no report key but the route’s 08 Report creation requires a visible source validation api negative test
Proves BR-CAP-PFM-QRY-011-08 Preconditions A colleague owns a private saved question. Steps Create a report using that source. Expected The response returns 400 locating the unavailable source. Data Use the existing binding’s controlled fixture data. Bound to Source services-platform:modules/queries/tests/e2e/reports.e2e.spec.js #refuses a saved query the caller may not see as 400 naming saved_query_id 09 Report storage rejects excess names and layouts boundary api negative test
Proves BR-CAP-PFM-QRY-011-09 INV-DOM-PFM-QRY-003-04 Preconditions An owner has a report named Q3. Steps Try a duplicate name, an oversized name, an oversized layout and a case-only self-rename. Expected Invalid changes fail without echoing the excess layout; the self-rename succeeds. Data Use the existing binding’s controlled fixture data. Bound to Source services-platform:modules/queries/tests/integration/services/persistence/reports.integration.spec.js #refuses a second report of the owner whose name differs only in case, storing nothing 10 Report changes require current versions concurrency api negative test
Proves BR-CAP-PFM-QRY-011-10 INV-DOM-PFM-QRY-003-08 Preconditions A report is at version three. Steps Save and remove it with no version and with an older version. Expected Missing versions return 400 and stale versions return 409. Data Use the existing binding’s controlled fixture data. Bound to Source services-platform:modules/queries/tests/e2e/reports.e2e.spec.js #refuses a replacement that states no version as 400 MissingVersion 11 Saving a report acknowledges current source state interaction api test
Proves BR-CAP-PFM-QRY-011-11 Preconditions A report retains an earlier source definition. Steps Change the query, read the warning, resave the report and inspect it again. Expected The change warning appears before resaving and clears afterward. Data Use the existing binding’s controlled fixture data. Bound to Source services-platform:modules/queries/tests/e2e/reports.e2e.spec.js #answers saved_query_changed once the saved query has been edited since the report was saved 12 Report removal updates its dependencies transition api test
Proves BR-CAP-PFM-QRY-011-12 INV-DOM-PFM-QRY-003-06 Preconditions A scheduled report depends on one saved question. Steps Delete the report and subsequently remove its released source. Expected The schedule pauses for report deletion and the released query can be removed. Data Use the existing binding’s controlled fixture data. Bound to Source services-platform:modules/queries/tests/e2e/query-schedules.e2e.spec.js #deletes the report 14 A source audience cannot strand a wider report interaction api proposed
Proves BR-CAP-PFM-QRY-006-08 BR-CAP-PFM-QRY-011-04 Preconditions A role-shared report depends on an organization-shared query. Steps Attempt to make the query private, then narrow the report and repeat the query change. Expected The first change identifies the blocking report; compatible audience changes allow the query to become private. 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/saved-queries/saved-query-narrowing.integration.spec.js #refuses narrowing it to private with 409 saved_query_narrower_than_reports, naming the report,services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#refuses a report shared wider than its saved query as 409 ReportSharedWiderThanQuery, naming the query 15 A second dashboard source narrows the sharing choice interaction api proposed
Proves BR-CAP-PFM-QRY-011-04 BR-CAP-PFM-QRY-012-04 Preconditions An organization-shared question and a Finance-only question supply separate widgets. Steps Save a private dashboard, attempt organization sharing and then share only with Finance. Expected The wider attempt identifies the Finance source; the contained audience can be saved. 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 a report shared wider than its saved query as 409 ReportSharedWiderThanQuery, naming the query,services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#refuses a dashboard shared wider than one of its sources as 409, naming that source 16 Deleting a report separates pending and completed files interaction api negative proposed
Proves BR-CAP-PFM-QRY-011-12 BR-CAP-PFM-QRY-013-09 Preconditions A report has one completed file and a second queued rendering request. Steps Delete the report, follow the completed download and process the queued request. Expected The completed file remains available until expiry and the queued render fails for lost access. 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:docs/queries/report-rendering.md#2. The export row 17 Deleting a report pauses its recurring deliveries interaction api negative proposed
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) ← Previous Capability Test Specification ATS-PFM-QRY-010 · Review and select records from a list: Capability Test Specification Next Capability Test Specification → ATS-PFM-QRY-012 · Combine saved questions in a dashboard: Capability Test Specification