Skip to content

ATS-PFM-QRY-008Begin a question from an application recipe: Capability Test Specification

Markdown

ATS-PFM-QRY-008

Begin a question from an application recipe: Capability Test Specification

Markdown
  • DocumentProposed

Planning

Proves capability
CAP-PFM-QRY-008

Design

Executed by
TST-PFM-QRY-229, TST-PFM-QRY-270, TST-PFM-QRY-326

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-058
  • Validation covered
  • Permission covered
  • Edge covered
  • Failure gap: FND-PFM-QRY-058
  • Boundary gap: FND-PFM-QRY-058
  • Concurrency covered
  • Invariant covered
  • Interaction covered

Test Scenarios

12 scenarios proving CAP-PFM-QRY-008; 10 bound to an existing test.

01 Recipes advertise availability without hiding subjectsruleapitest
Proves
BR-CAP-PFM-QRY-008-01
Preconditions
Recipes cover different datasets and include a retired entry.
Steps
List with one dataset grant and with none.
Expected
The same ordered active entries carry input declarations and appropriate authorization flags.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#answers the recipes under the name of what it holds, by category then name
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#marks a recipe of a dataset this caller may query as authorized, and one it may not as not
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#answers the same recipes to a caller with no dataset at all, every one of them unauthorized
Source
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#answers the recipes under the name of what it holds, by category then name
02 Joined recipe use checks every datasetpermissionapinegativetest
Proves
BR-CAP-PFM-QRY-008-02
Preconditions
A recipe joins a subject unavailable to the caller.
Steps
Create its draft and run it before and after adding the missing grant.
Expected
Both initially return 403 and then succeed with access.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#refuses a draft of a dataset this caller may not query as 403
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#refuses the draft as 403 to a caller holding everything but crm.contact-types.read
Source
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#refuses a draft of a dataset this caller may not query as 403
03 Draft refusal follows the specified ordervalidationapinegativetest
Proves
BR-CAP-PFM-QRY-008-03
Preconditions
An unknown recipe and a recipe requiring input are requested.
Steps
Draft the unknown recipe and omit the known recipe’s required value.
Expected
Absence returns 404 and missing input returns a labeled 400 problem.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#tells a caller that a recipe nobody registered does not exist, as 404
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#refuses a missing required parameter as 400, naming it and the label its form shows
Source
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#tells a caller that a recipe nobody registered does not exist, as 404
04 Released recipes cannot rewrite saved derivativesinvariantapitest
Proves
BR-CAP-PFM-QRY-008-04 INV-DOM-PFM-QRY-002-08
Preconditions
A version-one recipe draft has been saved.
Steps
Register a later version and reopen the saved question.
Expected
Origin remains recorded and the saved definition stays unchanged.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#records which recipe and which version the draft came from
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#stores the definition the person sent, not the recipe’s template
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#leaves the saved query untouched when the recipe is registered again at version 2
Source
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#records which recipe and which version the draft came from
05 Origins may outlive retired recipesedgeapinegativetest
Proves
BR-CAP-PFM-QRY-008-05
Preconditions
One origin recipe never existed and another was retired.
Steps
Save definitions naming each origin.
Expected
The nonexistent origin is rejected; the retired registered origin remains acceptable.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#refuses a save naming a recipe nobody ever registered as 400
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#accepts a save naming a recipe that has since been retired, because provenance is not a link
Source
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#refuses a save naming a recipe nobody ever registered as 400
06 Recipe refinements keep recipe criteriaruleapinegativetest
Proves
BR-CAP-PFM-QRY-008-06
Preconditions
A recipe selects active contacts.
Steps
Refine to a surname and try an unsupported refinement component.
Expected
The result remains active contacts of that surname and the unsupported input is refused.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#ANDs the refinement’s criteria with the recipe’s: exactly the active contacts who are Smiths
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#keeps the recipe’s own criteria under a refinement, so a run never widens it
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#refuses a refinement naming what a run may not change as 400
Source
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#ANDs the refinement’s criteria with the recipe’s: exactly the active contacts who are Smiths
07 Recipe validation prevents partial registrationvalidationunitnegativetest
Proves
BR-CAP-PFM-QRY-008-07
Preconditions
Declarations contain the documented invalid model cases.
Steps
Register each declaration set.
Expected
Each response identifies a problem and no partial library is written.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/recipe-registration/register-query-recipes.integration.spec.js#refuses a recipe naming the field a tenant’s configuration row defines, saying only that tenant has it
Source
services-platform:modules/queries/tests/integration/services/recipe-registration/register-query-recipes.integration.spec.js#refuses a recipe whose dataset nobody registered for queries
08 Content revisions advance recipe versionsconcurrencyunitnegativetest
Proves
BR-CAP-PFM-QRY-008-08
Preconditions
A recipe is already registered.
Steps
Resubmit changed content with its existing version.
Expected
Registration rejects the unchanged version.
Data
Use the existing binding’s controlled fixture data.
Bound to
Source
services-platform:modules/queries/tests/integration/services/recipe-registration/register-query-recipes.integration.spec.js#refuses a recipe whose content changed but whose version did not
09 Recipe retirement follows release contenttransitionunittest
Proves
BR-CAP-PFM-QRY-008-09
Preconditions
An application library has existing entries.
Steps
Register unchanged content, omit an entry and later reintroduce it.
Expected
Unchanged content writes nothing; removal retires and reintroduction restores the entry.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/recipe-registration/register-query-recipes.integration.spec.js#writes nothing for a manifest that declares exactly what is stored, and answers them as unchanged
Source
services-platform:modules/queries/tests/integration/services/recipe-registration/register-query-recipes.integration.spec.js#writes nothing for a manifest that declares exactly what is stored, and answers them as unchanged
10 Personal recipe values require a user fieldvalidationunitnegativetest
Proves
BR-CAP-PFM-QRY-008-11
Preconditions
A recipe uses the current-person token on a non-user field.
Steps
Register the recipe.
Expected
The refusal identifies that field’s incompatible meaning.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/execute/current-user-criterion.integration.spec.js#refuses at registration the same recipe written on a field that holds no user, naming the field
Source
services-platform:modules/queries/tests/integration/services/execute/current-user-criterion.integration.spec.js#refuses at registration the same recipe written on a field that holds no user, naming the field
11 A retained recipe derivative survives a later releaseinteractionapiproposed
Proves
BR-CAP-PFM-QRY-006-10 BR-CAP-PFM-QRY-008-04
Preconditions
A staff member saves a concrete contact recipe draft as a private question.
Steps
Register a later recipe release changing its criteria and rerun the saved question.
Expected
The retained definition and origin version remain unchanged; a new draft uses the newer release.
Data
Use an isolated workspace with the described source records, access grants and a surviving control workspace.
Source
services-platform:modules/queries/tests/e2e/saved-queries.e2e.spec.js#refuses a body whose definition cannot be run as written as 400,services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#leaves the saved query untouched when the recipe is registered again at version 2
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

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.