Skip to content

ATS-PFM-QRY-012Combine saved questions in a dashboard: Capability Test Specification

Markdown

ATS-PFM-QRY-012

Combine saved questions in a dashboard: 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 not-applicable
  • Validation covered
  • Permission covered
  • Edge covered
  • Failure gap: FND-PFM-QRY-062
  • Boundary gap: FND-PFM-QRY-062
  • Concurrency gap: FND-PFM-QRY-062
  • Invariant covered
  • Interaction covered

Test Scenarios

12 scenarios proving CAP-PFM-QRY-012; 9 bound to an existing test.

01 Dashboards reject a direct single sourcevalidationapinegativetest
Proves
BR-CAP-PFM-QRY-012-01 INV-DOM-PFM-QRY-003-03
Preconditions
A dashboard creation request is available.
Steps
Create without a direct saved-query reference and then with one.
Expected
The source-free dashboard shape works and the direct reference returns 400.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#answers 200 to a dashboard naming no saved query of its own
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#refuses a dashboard naming a saved_query_id of its own as 400
Source
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#answers 200 to a dashboard naming no saved query of its own
02 Dashboard sources follow first widget useruleapitest
Proves
BR-CAP-PFM-QRY-012-02 INV-DOM-PFM-QRY-003-05
Preconditions
Widgets name two questions and repeat one of them.
Steps
Read the dashboard, change its widgets and read it again.
Expected
Sources are distinct, ordered by first use and replaced with the revised layout’s dependencies.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#answers its sources once each, in widget order, with their names and applications
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#replaces its sources with the queries its widgets name in a PUT
Source
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#answers its sources once each, in widget order, with their names and applications
03 Hidden widget sources fail the savevalidationapinegativetest
Proves
BR-CAP-PFM-QRY-012-03
Preconditions
Another person owns a private question.
Steps
Save a dashboard containing a widget for it.
Expected
The refusal locates the unavailable widget source with 400.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#refuses a widget over a saved query the caller may not see as 400 naming the widget at definition
services-platform:modules/queries/tests/integration/services/reports/report-library.integration.spec.js#refuses a dashboard with a widget over a colleague’s private saved query as if it did not exist, naming the widget
Source
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#refuses a widget over a saved query the caller may not see as 400 naming the widget at definition
04 The narrowest source limits dashboard sharinginteractionapinegativetest
Proves
BR-CAP-PFM-QRY-012-04
Preconditions
A dashboard combines organization and selected-role questions.
Steps
Attempt organization sharing.
Expected
The conflict identifies the selected-role source.
Data
Use the existing binding’s controlled fixture data.
Bound to
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
Source
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
05 Widget dependencies block source removalinteractionapinegativetest
Proves
BR-CAP-PFM-QRY-012-05
Preconditions
One query is used by a dashboard widget.
Steps
Delete it, remove that dependency and try again.
Expected
The initial deletion conflicts and the released source can then be deleted.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#refuses to delete a saved query one of its widgets draws on as 409 saved_query_reported
Source
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#refuses to delete a saved query one of its widgets draws on as 409 saved_query_reported
06 Definition changes differ from renamed sourcesedgeapitest
Proves
BR-CAP-PFM-QRY-012-06
Preconditions
A dashboard uses two saved questions.
Steps
Change one definition and rename the other.
Expected
Only the definition change produces a changed-source warning.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#answers saved_query_changed once one of its sources has been edited, naming which
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#does not answer saved_query_changed after a source is only renamed, because its data did not change (DEF-RPT-0640)
Source
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#answers saved_query_changed once one of its sources has been edited, naming which
07 Invisible sources withhold their namespermissionapinegativetest
Proves
BR-CAP-PFM-QRY-012-07 INV-DOM-PFM-QRY-003-07
Preconditions
A source becomes private after an existing dashboard share.
Steps
Read source metadata as someone no longer in that audience.
Expected
Only its identity and change state are returned, without its name.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/reports/report-library.integration.spec.js#answers a reader only the id and the change of a source narrowed since the dashboard was shared
Source
services-platform:modules/queries/tests/integration/services/reports/report-library.integration.spec.js#answers a reader only the id and the change of a source narrowed since the dashboard was shared
08 Catalog visibility needs any accessible sourceruleapinegativeproposed
Proves
BR-CAP-PFM-QRY-012-08
Preconditions
A dashboard has two sources with readers able to access one or neither.
Steps
List dashboards as each reader and inspect an empty dashboard.
Expected
One accessible source is sufficient, none removes the populated entry, and an empty dashboard passes.
Data
Prepare isolated fixtures for the states described here.
Source
services-platform:docs/queries/reports.md#2. Who may do what
09 Dashboard sharing does not confer data accesspermissionbrowsertest
Proves
BR-CAP-PFM-QRY-012-09
Preconditions
A shared dashboard has viewers with different ledger authority.
Steps
Open the dashboard under each viewer.
Expected
Figures reflect each viewer’s access and an unavailable widget fails independently.
Data
Use the existing binding’s controlled fixture data.
Bound to
Source
react-console:acceptance/reporting/playwright/journeys/dashboards-designer/RPT-ACC-0241.spec.ts#RPT-ACC-0241
10 Layout content round-tripsinvariantapitest
Proves
BR-CAP-PFM-QRY-012-10
Preconditions
A dashboard document includes filters and positioning content.
Steps
Save and reopen the document.
Expected
Its retained content matches the submitted layout.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#answers the definition exactly as it was sent, widgets, filters and layouts untouched
Source
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#answers the definition exactly as it was sent, widgets, filters and layouts untouched
11 A second dashboard source narrows the sharing choiceinteractionapiproposed
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
12 A dashboard render stops after source access is revokedinteractionapinegativeproposed
Proves
BR-CAP-PFM-QRY-012-09 BR-CAP-PFM-QRY-013-06
Preconditions
A dashboard has two widgets and its requester loses one source permission between print-page requests.
Steps
Start rendering, complete a permitted source read, revoke access and let the next source request proceed.
Expected
The later refusal ends the export without a file containing partial data or a refusal message.
Data
Use an isolated workspace with the described source records, access grants and a surviving control workspace.
Source
services-platform:docs/queries/reports.md#6. Dashboards,services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#fails the export access_lost rather than printing a page of refusals

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.