Skip to content

ATS-CRM-ENT-018Organize the workspace’s record classifications

Markdown

ATS-CRM-ENT-018

Organize the workspace’s record classifications

Markdown
  • DocumentProposed

Planning

Proves capability
CAP-CRM-ENT-018

Design

Executed by
TST-CRM-ENT-774, 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-066
  • Validation covered
  • Permission covered
  • Edge covered
  • Failure gap: FND-CRM-ENT-066
  • Boundary covered
  • Concurrency covered
  • Invariant covered
  • Interaction covered

Test Scenarios

16 scenarios proving CAP-CRM-ENT-018; 8 bound to an existing test.

01 Names required and trimmedvalidationapinegativetest
Proves
BR-CAP-CRM-ENT-018-01
Preconditions
No additional setup is required.
Steps
Create each type of type with an empty name, spaces and a padded name.
Expected
400 naming the field, no record changes; trimmed.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/e2e/contact-types.e2e.spec.js#answers 400 naming the field for a create whose name is nothing but spaces
02 Ids derived, valid, unreserved, unique, fixedboundaryapinegativetest
Proves
BR-CAP-CRM-ENT-018-02
Preconditions
No additional setup is required.
Steps
Create without an id; with a bad id; a reserved id; a used id; replace with another id than the path.
Expected
Derived; 400 each; 400.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/e2e/contact-types.e2e.spec.js#answers 400 for an id that is not a configuration id, saying what an id may hold
03 Types in use cannot be deletedinteractionapinegativetest
Proves
BR-CAP-CRM-ENT-018-03
Preconditions
Prepare a contact type, an organization type, an address type and a phone type each in use.
Steps
Delete each.
Expected
409 each, naming the records that keep it for address and phone types.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/e2e/address-types.e2e.spec.js#says which records keep the type when it refuses the delete
04 Reorders are complete, rejected cleanly, unblocked by locksinvariantapinegativetest
Proves
BR-CAP-CRM-ENT-018-04
Preconditions
Prepare each list with several types, one locked.
Steps
Reorder all; leave one out; name one twice; name an unknown one; create a new address type.
Expected
1..n persisted with versions advanced; 400 each with the order unmodified; the new type at the end.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/e2e/contact-types.e2e.spec.js#answers 400 for a reorder that leaves a type of the tenant out
05 Address and phone type applicabilityruleapitest
Proves
BR-CAP-CRM-ENT-018-05
Preconditions
Prepare types for contacts, organizations and both.
Steps
Create without applicability; list by type; mark a used type for organizations.
Expected
Contacts; each type's list with both-types in each; accepted and the contact still returned.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/e2e/phone-number-types.e2e.spec.js#answers only the types usable on organizations when the query asks for them
06 Who may change typespermissionapinegativetest
Proves
BR-CAP-CRM-ENT-018-06
Preconditions
Prepare read-only callers.
Steps
Write and reorder each type of type.
Expected
403 for writes and reorders; retrieves allowed.
Data
Use personas by key.
Bound to
Source
services-crm:modules/entities/tests/e2e/address-types.e2e.spec.js#answers 403 to a read-only caller’s reorder
07 Version, patch and lock on typesconcurrencyapinegativetest
Proves
BR-CAP-CRM-ENT-018-07
Preconditions
Prepare a type, one locked against updates, one against deletes.
Steps
Replace at a stale version; patch one field; change the update-locked one; delete the delete-locked one.
Expected
409; only that field changed; rejected; rejected.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/e2e/contact-types.e2e.spec.js#then, when the version is off, refuses the change (409)
08 A held inactive classification remains readableedgeapitest
Proves
BR-CAP-CRM-ENT-018-08
Preconditions
A person holds a classification that was active when selected.
Steps
Deactivate that classification; open the person and the new-person type chooser.
Expected
The held classification remains visible on the person; the chooser excludes it from new selection.
Data
Run-owned records and configuration in an isolated workspace.
Bound to
Source
react-console:acceptance/crm/playwright/journeys/contacts/CRM-ACC-0033.spec.ts#CRM-ACC-0033
09 Keep the classification chosen before deactivationinteractionapiproposed
Proves
BR-CAP-CRM-ENT-001-09 BR-CAP-CRM-ENT-018-08
Preconditions
A coordinator has selected an active person classification.
Steps
Deactivate the classification before creation completes; save the person and reopen the chooser.
Expected
The saved person retains that classification while a new selection excludes the inactive choice.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/e2e/contacts.e2e.spec.js#answers 409 for a type the tenant does not have, and saves no contact; react-console:acceptance/crm/playwright/journeys/contacts/CRM-ACC-0033.spec.ts#CRM-ACC-0033
10 Prevent deletion of a classification held by a bodyinteractionapiproposed
Proves
BR-CAP-CRM-ENT-002-04 BR-CAP-CRM-ENT-018-03
Preconditions
An organization uses a workspace classification.
Steps
Try to delete the classification, then read the organization and classification.
Expected
The referenced classification remains and the organization keeps its classification identity.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/e2e/organization-types.e2e.spec.js#refuses an organization of a type the tenant does not have (409), and the delete of a type an organization has (409); services-crm:modules/entities/tests/e2e/address-types.e2e.spec.js#says which records keep the type when it refuses the delete
11 Retain a held purpose after its applicability changesinteractionapiproposed
Proves
BR-CAP-CRM-ENT-005-07 BR-CAP-CRM-ENT-018-05
Preconditions
A person holds an address purpose that currently applies to people.
Steps
Change the purpose to organizations only; save the person with its existing address; try assigning that purpose to another person.
Expected
The held address remains saveable; the new person assignment is refused.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/integration/services/persistence/contacts.field-rules.integration.spec.js#leaves a contact saveable after the type of an address it holds became organizations-only; services-crm:modules/entities/tests/e2e/phone-number-types.e2e.spec.js#answers only the types usable on organizations when the query asks for them
12 Policy editing takes effect when reprocessing reaches the bodyinteractionapiproposed
Proves
BR-CAP-CRM-ENT-012-06 BR-CAP-CRM-ENT-018-07
Preconditions
An existing organization is compliant under its classification’s old policy.
Steps
Increase the minimum in the classification; read the body, request reprocessing and read it after settlement.
Expected
The first read retains stored coverage; settled reprocessing records the new deficient coverage.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/e2e/organization-compliance.e2e.spec.js#keep them against a PUT that sends others back; services-crm:modules/entities/tests/e2e/contact-types.e2e.spec.js#then, when the version is off, refuses the change (409)
13 A locked classification blocks its ordinary mutationinteractionapiproposed
Proves
BR-CAP-CRM-ENT-015-09 BR-CAP-CRM-ENT-018-07
Preconditions
A classification is already locked against updates.
Steps
Attempt a classification correction and deletion through its ordinary routes.
Expected
Both operations are refused and the classification remains; this catalogue has no dedicated release action.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:docs/record-locks.md#Not covered yet; services-crm:modules/entities/tests/e2e/contact-types.e2e.spec.js#then, when the version is off, refuses the change (409)
14 Default mappings retain their contact-point purposesinteractionapiproposed
Proves
BR-CAP-CRM-ENT-017-07 BR-CAP-CRM-ENT-018-03
Preconditions
An affiliation type references address and phone purposes in its default mappings.
Steps
Attempt deletion of a referenced purpose; remove the mapping and retry when no record holds the purpose.
Expected
The reference blocks the first delete; the unused purpose is deletable after the mapping is removed.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/integration/services/persistence/affiliation-types.integration.spec.js#keeps the mappings, as an omitted collection means unchanged; services-crm:modules/entities/tests/e2e/address-types.e2e.spec.js#says which records keep the type when it refuses the delete
15 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
16 Exercise every declared authority independentlypermissionapinegativeproposed
Proves
BR-CAP-CRM-ENT-018-06
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/affiliation-types.routes.ts; services-crm:modules/entities/aws/api/contact-roles.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.