Skip to content

ATS-PFM-QRY-009Organize reusable views of record lists: Capability Test Specification

Markdown

ATS-PFM-QRY-009

Organize reusable views of record lists: 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-059
  • Boundary covered
  • Concurrency covered
  • Invariant gap: FND-PFM-QRY-059
  • Interaction covered

Test Scenarios

13 scenarios proving CAP-PFM-QRY-009; 11 bound to an existing test.

01 Views require a valid recipe anchorvalidationapinegativetest
Proves
BR-CAP-PFM-QRY-009-01
Preconditions
A live contact recipe is registered.
Steps
Save with no recipe, an unknown recipe, a conflicting dataset and an omitted dataset.
Expected
Invalid anchors return 400; omission resolves to the recipe’s dataset.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a body whose dataset is not the recipe’s as 400
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#saves a body naming no dataset, because the recipe decides it
Source
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a body naming no recipe as 400
02 Repeating joins cannot anchor record listsvalidationapinegativetest
Proves
BR-CAP-PFM-QRY-009-02 INV-DOM-PFM-QRY-002-09
Preconditions
A recipe includes a one-to-many join that repeats records.
Steps
Use it as an Explorer view anchor.
Expected
The rejection identifies the incompatible join.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/explorer/tests/integration/services/definitions/recipe-anchors.integration.spec.js#says which join breaks the grain, so the recipe’s owner can repair it
Source
services-platform:modules/explorer/tests/integration/services/definitions/recipe-anchors.integration.spec.js#refuses a recipe whose joins answer a base record once per child
03 View definitions use the anchored modelvalidationapinegativetest
Proves
BR-CAP-PFM-QRY-009-03
Preconditions
Plain and joined recipes are available.
Steps
Save unknown fields, absent joined instances and an invalid patch field.
Expected
Every unsupported selection is rejected at its location.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a definition naming a field the dataset has not got as 400
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a joined column of an instance the recipe does not join as 400
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a patch that names a field the dataset has not got as 400
Source
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a definition naming a field the dataset has not got as 400
04 Retired anchors remain repairableedgeapitest
Proves
BR-CAP-PFM-QRY-009-04
Preconditions
A retained view’s recipe has retired.
Steps
Read the view.
Expected
It returns the recipe-missing problem rather than refusing the entire read.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/explorer/tests/integration/services/definitions/recipe-anchors.integration.spec.js#answers recipe_missing for a recipe that has gone, rather than an error
services-platform:modules/explorer/tests/integration/services/definitions/recipe-anchors.integration.spec.js#answers recipe_missing for a recipe that no longer answers one row per record
Source
services-platform:modules/explorer/tests/integration/services/definitions/recipe-anchors.integration.spec.js#answers recipe_missing for a recipe that has gone, rather than an error
05 Colleagues see shared views without owner powerspermissionapinegativetest
Proves
BR-CAP-PFM-QRY-009-05
Preconditions
Both private and shared views belong to another person.
Steps
Read and list them as a colleague.
Expected
The private entry is missing; the shared entry is visible without edit power.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#answers 404, not 403, for another person’s private view
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#answers a colleague a view shared with the tenant
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#tells a colleague they may not edit a shared view that is not theirs
Source
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#answers 404, not 403, for another person’s private view
06 View sharing and administration remain distinctpermissionapinegativetest
Proves
BR-CAP-PFM-QRY-009-06
Preconditions
Callers differ in share and manage grants.
Steps
Share without authority, edit another shared view as a colleague and manager, and replace its dataset.
Expected
Unauthorized writes fail, manager maintenance works and dataset change is refused.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses sharing a view without the share permission as 403
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a colleague replacing a shared view as 403
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#allows an administrator to replace a shared view they do not own
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a replacement that changes the dataset as 400
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#is granted the power to share, because that is a user-tier key
Source
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses sharing a view without the share permission as 403
07 Joined-dataset access applies to every view operationpermissionapinegativetest
Proves
BR-CAP-PFM-QRY-009-07
Preconditions
The caller lacks access to a recipe’s joined dataset.
Steps
Create, list and read views using the recipe.
Expected
Each request returns 403.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a joined recipe to a caller who may not query a dataset it joins to, as 403
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a caller who may not query the dataset as 403
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a caller who may not query the recipe’s dataset a view they can otherwise see, as 403
Source
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a joined recipe to a caller who may not query a dataset it joins to, as 403
08 View counts and names respect their boundsboundaryapinegativetest
Proves
BR-CAP-PFM-QRY-009-08
Preconditions
One workspace already has two hundred views for a dataset.
Steps
Create another, reuse the idea elsewhere and try blank or oversized names.
Expected
The cap and invalid names are refused while another workspace remains independent.
Data
Use the existing binding’s controlled fixture data.
Bound to
Source
services-platform:modules/explorer/tests/integration/services/persistence/explorer-views.integration.spec.js#refuses the next view of that dataset
09 Team references remain unsupportedvalidationapinegativetest
Proves
BR-CAP-PFM-QRY-009-09
Preconditions
A proposed view includes a team reference.
Steps
Save the proposed view.
Expected
The response returns 400.
Data
Use the existing binding’s controlled fixture data.
Bound to
Source
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a team id, which is reserved, as 400
10 View replacement protects concurrent editsconcurrencyapinegativetest
Proves
BR-CAP-PFM-QRY-009-10
Preconditions
A view is currently at version two.
Steps
Replace using its earlier version and without any version.
Expected
Requests return 409 and 400 without changing the stored view.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a replacement that states no version as 400 MissingVersion, never as a server fault
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#leaves the view unchanged after refusing a replacement with no version
Source
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a stale version as 409
11 Personal preferences retain their version and referencesruleapinegativetest
Proves
BR-CAP-PFM-QRY-009-11
Preconditions
Two people use the same Explorer without prior preferences.
Steps
Read defaults, save at zero, omit a later version, exceed twenty pins and retain a deleted reference.
Expected
Defaults and valid saves work; stale and oversized saves fail; the unvalidated reference remains stored.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/explorer/tests/e2e/explorer-preferences-api.e2e.spec.js#answers the whole default arrangement: whose it is, which Explorer, nothing pinned and version zero
services-platform:modules/explorer/tests/e2e/explorer-preferences-api.e2e.spec.js#saves a first arrangement at If-Match 0, the version the defaults were answered at (DEF-CRM-0391)
services-platform:modules/explorer/tests/e2e/explorer-preferences-api.e2e.spec.js#refuses a later save that states no version as 409, so nothing is overwritten unread
services-platform:modules/explorer/tests/e2e/explorer-preferences-api.e2e.spec.js#refuses more pinned views than an Explorer may hold as 400
services-platform:modules/explorer/tests/e2e/explorer-preferences-api.e2e.spec.js#answers such an id back on the read that follows, rather than refusing the whole arrangement
services-platform:modules/explorer/tests/e2e/explorer-preferences-api.e2e.spec.js#answers each person their own arrangement of the same Explorer
Source
services-platform:modules/explorer/tests/e2e/explorer-preferences-api.e2e.spec.js#answers the whole default arrangement: whose it is, which Explorer, nothing pinned and version zero
12 A retired recipe leaves a view repairableinteractionapinegativeproposed
Proves
BR-CAP-PFM-QRY-008-09 BR-CAP-PFM-QRY-009-04
Preconditions
A person retains a contact view anchored to an active recipe.
Steps
Release a manifest without the recipe, read the retained view and try saving it again.
Expected
The read identifies the missing anchor; a new save is refused until the recipe becomes valid again.
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/recipe-registration/register-query-recipes.integration.spec.js#retires a recipe the manifest no longer declares, and leaves the rest alone,services-platform:modules/explorer/tests/integration/services/definitions/recipe-anchors.integration.spec.js#answers recipe_missing for a recipe that has gone, rather than an error
13 Renewing navigation checks the view’s data access againinteractionapinegativeproposed
Proves
BR-CAP-PFM-QRY-009-07 BR-CAP-PFM-QRY-010-05
Preconditions
A recipe-anchored list has a navigation session and the owner loses base-dataset access.
Steps
Read a retained identity, then move beyond the retained window and request whole-result selection.
Expected
Retained return state remains available; renewal and selection fail the current dataset access check.
Data
Use an isolated workspace with the described source records, access grants and a surviving control workspace.
Source
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a joined recipe to a caller who may not query a dataset it joins to, as 403,services-platform:modules/explorer/services/navigation/navigation-sessions.ts:extendForward

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.