---
id: TST-PFM-MTD-101
title: portal forms queries
kind: integration
product_area: platform
module: metadata
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js
implements: []
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
isolation: >-
  Prepared integration database and the suite fixture records; fixture teardown restores or removes its own
  rows.
evidence:
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    every element of the record, field by field
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    the two instants as ISO 8601 UTC timestamps, never a Moment
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    the tenant the definition belongs to, as the wire derived from the table carries every column
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#omits
    the properties whose columns are null rather than answering them as null
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    nothing for an id the tenant does not hold
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    nothing for a definition of another tenant, which the policy and the predicate both hide
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    the tenant’s definitions of every readable purpose, in name then id order
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    each record mapped exactly as a read of it answers
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    no cursor when the page is the whole list
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#leaves
    another tenant’s definitions out of the list
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    only the purpose the caller asked for
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    only the purposes the caller may read, so a list never discloses another
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    an empty page for a purpose the caller may not read, rather than refusing and confirming it exists
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    an empty page for a purpose no build registers
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    an empty page to a caller who may read no purpose at all
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    one page and the cursor of the next when more remain
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#continues
    after the cursor, never repeating a record
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#walks
    the whole list through its cursors, in one order, with every record once
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    no cursor on a last page that is exactly the page size, so a client stops
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#orders
    two definitions of the same name by id, so a cursor never loses one
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#refuses
    a page size outside the bounds it states
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#refuses
    a page size that is not a whole number
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#refuses
    a cursor it did not answer
  - >-
    services-platform:modules/layouts/tests/integration/services/persistence/portal-forms.queries.integration.spec.js#answers
    an arbitrary nested layout through the list exactly as it was stored
fixture_imports:
  - ../../../../services/persistence/portal-forms
  - ../../support
  - '@rhythmsoftware/macroservice-testing/refusals'
  - '@rhythmsoftware/macroservice-testing/stage'
  - '@rhythmsoftware/macroservice-errors/errors'
test_doubles: []
limitations: []
unmatched_specification: FND-PFM-MTD-083
binding_assertions: []
---

# Portal forms queries

## Verification Boundary

This integration suite checks reusable record presentations within the local test harness. The registered file and pinned revision define its boundary.

## What This Suite Proves

The suite contains executable checks for this module, but no matching detailed scenario is established in this back-fill. The executable coverage finding records that mapping gap. Assertions are evidence of implemented checks; no execution result is claimed.

## What It Does Not Prove

The register does not establish a current passing run or full specification conformance. Behavior outside the suite’s fixtures and assertions remains unverified.

## Real Dependencies and Test Doubles

The fixture uses PostgreSQL and the imported persistence or API code. The fixture imports identify the setup seams; this register makes no broader claim that dependencies are undoubled.

## Must Not Be Doubled

The operation under examination and its asserted stored outcomes must remain real within the declared harness. A fixture cannot replace the write, refusal or transactional effect that the bound scenario checks.
