Skip to content

ATS-CRM-ENT-019Resolve the forms and layouts used for CRM records

Markdown

ATS-CRM-ENT-019

Resolve the forms and layouts used for CRM records

Markdown
  • DocumentProposed

Planning

Proves capability
CAP-CRM-ENT-019

Design

Executed by
TST-CRM-ENT-786, TST-CRM-ENT-787

KindAcceptance test setProduct areaCRMModuleEntitiesRevision1

Read atservices-crm a8d1364freact-console baf6dae3

Coverage

  • Rule covered
  • Transition gap: FND-CRM-ENT-067
  • Validation covered
  • Permission covered
  • Edge gap: FND-CRM-ENT-067
  • Failure covered
  • Boundary gap: FND-CRM-ENT-067
  • Concurrency covered
  • Invariant gap: FND-CRM-ENT-067
  • Interaction covered

Test Scenarios

11 scenarios proving CAP-CRM-ENT-019; 7 bound to an existing test.

01 Settings answer only readable sectionspermissionapinegativetest
Proves
BR-CAP-CRM-ENT-019-01
Preconditions
Prepare a caller who may read contact layouts only.
Steps
Read the settings.
Expected
The contacts section only; the organizations section and the default affiliation type absent.
Data
Use personas by key.
Bound to
Source
services-crm:modules/entities/tests/e2e/page-layouts.e2e.spec.js#is not answered the section it may not read: it is ABSENT, not null, so "forbidden" and "unset" never look alike
02 Saves need every named section's keypermissionapinegativetest
Proves
BR-CAP-CRM-ENT-019-02 INV-DOM-CRM-ENT-033-13
Preconditions
Prepare a caller who may update contact layouts only.
Steps
Save its own section; the other; both.
Expected
Saved; 403; 403 and neither written.
Data
Use personas by key.
Bound to
Source
services-crm:modules/entities/tests/e2e/page-layouts.e2e.spec.js#writes NEITHER section for that refused save: the decision is made before anything is written
03 Version and unknown propertiesconcurrencyapinegativetest
Proves
BR-CAP-CRM-ENT-019-03
Preconditions
Prepare saved settings at version 1.
Steps
Save one section; save from version 0; save an unknown property.
Expected
The other section preserved; 409; 400.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/e2e/page-layouts.e2e.spec.js#refuses a save from a stale version (409)
04 Only fitting definitions may be chosenvalidationapinegativetest
Proves
BR-CAP-CRM-ENT-019-04
Preconditions
Prepare definitions of both purposes and types, one of another workspace.
Steps
Choose an unknown id, another workspace’s, an organizations layout under contacts, a console form in the layout slot.
Expected
Each rejected naming the section and field.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/services/persistence/crm-settings.integration.spec.js#refuses a definition of the wrong kind: a console form in the console page layout slot
05 Type assignments survive an unaware replacementinteractionapitest
Proves
BR-CAP-CRM-ENT-019-05
Preconditions
Prepare a contact type with five assignments.
Steps
Replace it without them; patch one out; patch one to null.
Expected
All five preserved; that one cleared; that one cleared.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/e2e/page-layouts.e2e.spec.js#KEEPS all five through a PUT that does not mention them: an older client cannot wipe a tenant’s assignments
06 Resolution of the definitions in forceruleapinegativetest
Proves
BR-CAP-CRM-ENT-019-06
Preconditions
Prepare workspace defaults and a type with some assignments.
Steps
Resolve for the type; with no type; for console only; for an unknown type; with no record type.
Expected
Type then default then not configured; defaults; console types; 404; 400.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/e2e/page-layouts.e2e.spec.js#falls back to the tenant’s default for a kind the type leaves empty
07 Readers see the definitions in force but not the defaultspermissionapinegativetest
Proves
BR-CAP-CRM-ENT-019-07
Preconditions
Prepare a caller who may read contacts only.
Steps
Resolve contact definitions; organization ones; read the defaults.
Expected
Displayed; 403; 403.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/e2e/page-layouts.e2e.spec.js#is refused the tenant’s defaults (403): reading a record does not make one an administrator of layouts
08 Invalid layout assignment preserves the previous settingsfailureapinegativeproposed
Proves
BR-CAP-CRM-ENT-019-04 BR-CAP-CRM-ENT-019-03
Preconditions
A valid workspace default layout is already assigned.
Steps
Attempt to replace it with a form definition in the layout slot and reread settings.
Expected
The refusal names the invalid slot and leaves the previous assignment and settings version unchanged.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/integration/services/persistence/crm-settings.integration.spec.js#refuses a definition of the wrong kind: a console form in the console page layout slot
09 Settings do not expose the affiliation default through layout-only accessinteractionapiproposed
Proves
BR-CAP-CRM-ENT-017-06 BR-CAP-CRM-ENT-019-01
Preconditions
A caller may read contact layouts but cannot read affiliation types.
Steps
Read settings with that access, then with affiliation-type read added.
Expected
The layout-only response omits the default affiliation type; the additional catalogue authority exposes it.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/e2e/affiliation-types.e2e.spec.js#refuses a caller who may only read affiliation types the change of the default (403); services-crm:modules/entities/tests/e2e/page-layouts.e2e.spec.js#is not answered the section it may not read: it is ABSENT, not null, so "forbidden" and "unset" never look alike
10 Classification edits retain their presentation assignmentsinteractionapiproposed
Proves
BR-CAP-CRM-ENT-018-07 BR-CAP-CRM-ENT-019-05
Preconditions
A contact classification has all five form and layout slots assigned.
Steps
Replace its ordinary classification fields without the slots; then clear one slot with a patch and resolve definitions.
Expected
Replacement retains every assignment; clearing one slot changes only that slot’s effective inheritance.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/e2e/contact-types.e2e.spec.js#then, when the version is off, refuses the change (409); services-crm:modules/entities/tests/e2e/page-layouts.e2e.spec.js#KEEPS all five through a PUT that does not mention them: an older client cannot wipe a tenant’s assignments
11 Exercise every declared authority independentlypermissionapinegativeproposed
Proves
BR-CAP-CRM-ENT-019-01 BR-CAP-CRM-ENT-019-02 BR-CAP-CRM-ENT-019-07
Preconditions
An eligible record and configuration fixture exist for each operation; the caller can reach only the run’s workspace.
Steps
For each declared permission, execute its matching operation with that permission, then without it while retaining the other required grants. Read affected records after every refused mutation.
Expected
The authorized case reaches the operation; the missing-grant case is refused and preserves saved data. Record access alone does not authorize the other declared actions.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:aws/crm.service.ts:ApplicationPermissions; services-crm:modules/entities/aws/api/entities.routes.ts

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.