Skip to content

ATS-CRM-ENT-007Capture a person’s communication choices

Markdown

ATS-CRM-ENT-007

Capture a person’s communication choices

Markdown
  • DocumentProposed

Planning

Proves capability
CAP-CRM-ENT-007

Design

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

KindAcceptance test setProduct areaCRMModuleEntitiesRevision1

Read atservices-crm a8d1364freact-console baf6dae3

Coverage

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

Test Scenarios

9 scenarios proving CAP-CRM-ENT-007; 4 bound to an existing test.

01 One preference per communication typefailureapinegativetest
Proves
BR-CAP-CRM-ENT-007-02
Preconditions
No additional setup is required.
Steps
Save two preferences of one type.
Expected
Rejected naming the second; no record changes.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/services/persistence/contacts.integration.spec.js#refuses a communication type listed twice, naming the second entry
02 Subscription addresses canonical and validvalidationapinegativetest
Proves
BR-CAP-CRM-ENT-007-03
Preconditions
No additional setup is required.
Steps
Write an address in capitals, with whitespace and not shaped like an address.
Expected
Each rejected by the canonical and format checks.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/db/contact-communication-preferences.table.integration.spec.js#refuses a subscription value that is not shaped like an address by the domain’s email_address_format_check
03 Subscription status is a closed listvalidationapinegativetest
Proves
BR-CAP-CRM-ENT-007-04
Preconditions
No additional setup is required.
Steps
Write status "maybe"; omit enabled.
Expected
Rejected each time.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/db/contact-communication-preferences.table.integration.spec.js#refuses a subscription status outside the closed list by contact_communication_preferences_status_check
04 Restrictions are set from the console and displayedrulebrowsertest
Proves
BR-CAP-CRM-ENT-007-01
Preconditions
Prepare a contact.
Steps
Toggle the three restrictions on the communication tab and add preference rows.
Expected
The values land, default false, and the header displays them.
Data
No additional fixtures.
Bound to
Source
react-console:acceptance/crm/playwright/journeys/contacts/CRM-ACC-0025.spec.ts#CRM-ACC-0025
05 Retain an unrecognized communication identifieredgeapiproposed
Proves
BR-CAP-CRM-ENT-007-05
Preconditions
A valid person exists and a preference uses an identifier absent from the configured communication catalogue.
Steps
Save that preference and read the person.
Expected
The stored preference still names the submitted identifier.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/services/persistence/contacts.ts:communicationPreferenceProblems
06 Read communication choices after creationinteractionapiproposed
Proves
BR-CAP-CRM-ENT-001-01 BR-CAP-CRM-ENT-007-01
Preconditions
A person request supplies one communication restriction.
Steps
Create the person and read its communication choices.
Expected
The supplied restriction is visible and the unspecified restrictions use their creation defaults.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/e2e/contacts-names.e2e.spec.js#answers 400 for a contact with neither a first nor a last name, naming the rule; services-crm:modules/entities/db/contacts.table.ts:do_not_mail
07 Show a stored restriction to a record readerinteractionapiproposed
Proves
BR-CAP-CRM-ENT-003-06 BR-CAP-CRM-ENT-007-01
Preconditions
A person has a recorded mail restriction and a reader can open the record.
Steps
Open the person’s record after the restriction is saved.
Expected
The stored choice is visible to the reader without offering unauthorized edits.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/e2e/contacts.e2e.spec.js#answers only the fields `?fields=` named, with the id; services-crm:modules/entities/db/contacts.table.ts:do_not_mail
08 Keep storage proof separate from notice-recipient selectioninteractionapiproposed
Proves
BR-CAP-CRM-ENT-007-06 BR-CAP-CRM-ENT-012-08
Preconditions
A current notification-role holder has a primary address and recorded communication restrictions.
Steps
Read the stored choices and compose the compliance notice’s recipients.
Expected
The choices remain stored; this module’s recipient query is assessed by the notice rule and does not establish sender enforcement.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:docs/milestones/CRM-M1-contacts-and-organizations.plan.md#2. Scope; services-crm:modules/entities/tests/integration/services/organizations/compliance/compliance-reads.integration.spec.js#leaves out the contact whose addresses sit past the primary slot, no secondary address standing in
09 Exercise every declared authority independentlypermissionapinegativeproposed
Proves
BR-CAP-CRM-ENT-003-07 BR-CAP-CRM-ENT-003-09
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.