Skip to content

ATS-CRM-ENT-003Locate people and organizations

Markdown

ATS-CRM-ENT-003

Locate people and organizations

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaCRMModuleEntitiesRevision1

Read atservices-crm a8d1364freact-console baf6dae3

Coverage

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

Test Scenarios

17 scenarios proving CAP-CRM-ENT-003; 11 bound to an existing test.

01 Lists page by number with a cursor and refuse bad pagingboundaryapinegativetest
Proves
BR-CAP-CRM-ENT-003-01
Preconditions
Prepare five contacts.
Steps
Walk the list with limit=2; send limit 0, 101 and a made-up cursor.
Expected
Three pages, the last without a cursor; 400 for each bad value.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/e2e/contacts.e2e.spec.js#answers 400 for a cursor it did not answer
02 Name search contains, both orders, limitedboundaryapinegativetest
Proves
BR-CAP-CRM-ENT-003-02
Preconditions
Prepare contacts named Ada Lovelace and others.
Steps
Search "lovelace, ada", spaces only, and 101 characters.
Expected
Match; no filter; rejected.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/services/persistence/contacts.queries.integration.spec.js#matches "Lovelace, Ada" too: the name is searched in both of the orders a contact is written in
03 the organization filter is "a affiliation in effect today"interactionapitest
Proves
BR-CAP-CRM-ENT-003-03
Preconditions
Prepare four affiliations to one organization: two current, one ended, one upcoming.
Steps
List contacts filtered by that organization.
Expected
The two current ones, primary or not.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/services/persistence/contacts.queries.integration.spec.js#answers a contact whose affiliation to the organization is not its primary one
04 the people beneath an organization follow affiliations in effect today down the hierarchyinteractionbrowsertest
Proves
BR-CAP-CRM-ENT-003-04
Preconditions
Prepare a hierarchy with contacts tied primarily and non-primarily, ended and upcoming.
Steps
List the descendants of the top.
Expected
Every current affiliation at any depth once; ended and upcoming left out; [] for an unknown id.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/services/persistence/contacts.queries.integration.spec.js#includes a contact whose affiliation in effect to an organization of the walk is not its primary one (M2-D3)
05 Pickers leave out inactive and deceased contactsedgeapitest
Proves
BR-CAP-CRM-ENT-003-05
Preconditions
Prepare active, duplicate, inactive and deceased contacts.
Steps
List with selectable=true, false and a bad value.
Expected
Active and duplicate only; every contact; 400.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/e2e/contacts.e2e.spec.js#answers only the contacts a picker may offer: not the inactive, not the deceased
06 workspace isolation on every routeboundarybrowsernegativetest
Proves
BR-CAP-CRM-ENT-003-07
Preconditions
Prepare the same contact id in two tenants.
Steps
Read through each workspace; read with a context not covering the path.
Expected
Each workspace its own contact; 403.
Data
Use two tenants.
Bound to
Source
services-crm:modules/entities/tests/e2e/contacts.e2e.spec.js#answers the other tenant its own contact for that id, to a context that covers it
07 a merged-away id returns 410 with the survivoredgebrowsernegativetest
Proves
BR-CAP-CRM-ENT-003-08
Preconditions
Prepare two contacts merged.
Steps
Read, replace and delete the old id; read a random id.
Expected
410 with survivor_id on each; 404 for the random id; the console is saved on the survivor.
Data
Use a merge executed by an administrator.
Bound to
Source
react-console:acceptance/crm/playwright/journeys/contacts/CRM-ACC-0050.spec.ts#CRM-ACC-0050
08 Application access is enforced before record keyspermissionapinegativetest
Proves
BR-CAP-CRM-ENT-003-09
Preconditions
Prepare a caller holding every CRM key.
Steps
Call a CRM route with access denied, then with access never granted, then allowed.
Expected
403 twice; then served.
Data
Use enforce mode.
Bound to
Source
services-crm:modules/entities/tests/e2e/application-access-enforced.e2e.spec.js#is refused where the assignment DENIES crm.application.access, though the route itself is served
09 a staff slice over every workspace is rejected at the boundarypermissionapinegativetest
Proves
BR-CAP-CRM-ENT-003-10
Preconditions
Prepare a Rhythm staff slice.
Steps
Call a representative route of every module.
Expected
403 at the workspace boundary.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/e2e/platform-scope.e2e.spec.js#refuses every one of them to a staff slice reaching every tenant, 403 at the tenant boundary
10 Read-only staff can open and browse, and a contacts-only reader still sees the organization by namepermissionbrowsertest
Proves
BR-CAP-CRM-ENT-003-06 BR-CAP-CRM-ENT-003-12
Preconditions
Prepare a read-only user and a user who may read contacts but not organizations.
Steps
Open a contact 360 and its affiliations.
Expected
Every detail displayed with no write actions; the affiliation names its organization.
Data
Use personas acceptance-readonly and a contacts-only role.
Bound to
Source
react-console:acceptance/crm/playwright/journeys/contacts/CRM-ACC-0064.spec.ts#CRM-ACC-0064
11 the journey: the people beneath an organizationinteractionbrowsertest
Proves
AS-JNY-CRM-ENT-005-01 AS-JNY-CRM-ENT-005-02
Preconditions
Prepare a national body, a chapter and contacts tied primarily, non-primarily, ended and upcoming.
Steps
Run JNY-CRM-ENT-005.
Expected
The list filter and the descendant listing agree; ended and upcoming affiliations never count.
Data
No additional fixtures.
Bound to
Source
react-console:acceptance/crm/playwright/journeys/affiliations/CRM-ACC-0189.spec.ts#CRM-ACC-0189
12 Read a projected record with display linksruleapiproposed
Proves
BR-CAP-CRM-ENT-003-06 BR-CAP-CRM-ENT-003-13
Preconditions
A person has a photo and a document value visible to the reader.
Steps
Read the person’s identity, photo and document fields using a projection; inspect the returned links.
Expected
The response contains the requested fields and identity, a public photo link and an attachment download link with the specified lifetime.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/e2e/display-links.e2e.spec.js#answers a presigned GET that lasts 15 minutes and downloads as an attachment for a document custom field
13 Find the newly established personinteractionapiproposed
Proves
BR-CAP-CRM-ENT-001-02 BR-CAP-CRM-ENT-003-06
Preconditions
A person request uses a distinctive last name.
Steps
Create the person, search by that name and open the saved record.
Expected
Search identifies the saved person and the opened record carries the saved identity.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/e2e/contacts-names.e2e.spec.js#builds the full name from every part in order, trimmed and singly spaced; services-crm:modules/entities/tests/e2e/contacts.e2e.spec.js#answers only the fields `?fields=` named, with the id
14 Move a branch and rediscover its peopleinteractionapiproposed
Proves
BR-CAP-CRM-ENT-002-07 BR-CAP-CRM-ENT-003-04
Preconditions
Two roots, a child organization and a current affiliate under the child exist.
Steps
Move the child to the other root; read its ancestry and discover people below each root.
Expected
The child’s new ancestry and the two root populations agree with the moved structure.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/integration/services/persistence/organizations.integration.spec.js#answers the descendant, never saved again, its ancestry under the new parent; services-crm:modules/entities/tests/integration/services/persistence/contacts.queries.integration.spec.js#includes a contact whose affiliation in effect to an organization of the walk is not its primary one (M2-D3)
15 Find a person through a secondary tieinteractionapiproposed
Proves
BR-CAP-CRM-ENT-003-03 BR-CAP-CRM-ENT-009-04
Preconditions
A person has a primary tie to one organization and a current secondary tie to another.
Steps
Filter people by the secondary organization and open the matching person.
Expected
The person appears once through that current secondary tie while retaining the separate primary designation.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/integration/services/persistence/contacts.queries.integration.spec.js#answers a contact whose affiliation to the organization is not its primary one; services-crm:modules/entities/tests/unit/services/persistence/contact-affiliations.spec.js#refuses two affiliations newly marked primary at once
16 Archive changes discovery without losing direct readsinteractionapiproposed
Proves
BR-CAP-CRM-ENT-003-05 BR-CAP-CRM-ENT-013-06
Preconditions
A live person can be found in an ordinary list.
Steps
Archive the person; list ordinarily and with archive inclusion; open it by identity.
Expected
The ordinary list omits it, the explicit archived selection includes it and the direct read retains its saved information.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/e2e/contacts.e2e.spec.js#answers only the contacts a picker may offer: not the inactive, not the deceased; services-crm:modules/entities/tests/e2e/archive.e2e.spec.js#lists it for archived=only, and only it
17 Exercise every declared authority independentlypermissionapinegativeproposed
Proves
BR-CAP-CRM-ENT-003-07 BR-CAP-CRM-ENT-003-09 BR-CAP-CRM-ENT-003-10 BR-CAP-CRM-ENT-003-11
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.