Skip to content

ATS-CRM-ACT-008Configure activity types and the details they collect: Capability Test Specification

Markdown

ATS-CRM-ACT-008

Configure activity types and the details they collect: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaCRMModuleActivities, Follow-ups and Task WorkRevision3

Read atservices-crm a8d1364freact-console baf6dae3rhythm-v2-docs 18a49edf

Coverage

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

Test Scenarios

14 scenarios proving CAP-CRM-ACT-008; 9 bound to an existing test.

01 Reject type maintenance by readerspermissionapinegativetest
Proves
BR-CAP-CRM-ACT-008-01
Preconditions
The caller can read activity types only.
Steps
Create an activity type.
Expected
The API returns Forbidden.
Data
Each run creates and isolates the records it needs.
Bound to
services-crm:modules/activities/tests/e2e/activities.e2e.spec.js#refuses a type’s create to a caller who may only read types: 403
Source
services-crm:modules/activities/tests/e2e/activities.e2e.spec.js#refuses a type’s create to a caller who may only read types: 403
02 Derive valid type identifiers and reserve reordervalidationapinegativetest
Proves
BR-CAP-CRM-ACT-008-02
Preconditions
No conflicting custom type exists.
Steps
Create using only a name, explicitly use the reserved reorder identifier and derive it from a name.
Expected
The ordinary name yields an identifier; reserved-address cases fail without records.
Data
Each run creates and isolates the records it needs.
Bound to
services-crm:modules/activities/tests/e2e/activities.e2e.spec.js#refuses a type whose id is order, the path of the reorder: 400
Source
services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#derives the id from the name when the create names none
03 Reject invalid type names and descriptionsboundaryapinegativetest
Proves
BR-CAP-CRM-ACT-008-03
Preconditions
An activity type already reserves a name.
Steps
Submit duplicate, blank and 101-character names and a 1,001-character description.
Expected
Each request reports the invalid field.
Data
Each run creates and isolates the records it needs.
Bound to
Source
services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#refuses a name another type of the tenant has
04 Validate field-mode and default configuration limitsboundaryapinegativetest
Proves
BR-CAP-CRM-ACT-008-04 BR-CAP-CRM-ACT-008-05
Preconditions
Configuration fixtures support direct validation.
Steps
Send unknown modes, colours and icons, out-of-range durations and follow-up intervals.
Expected
Every invalid configuration fails without retaining a type.
Data
Each run creates and isolates the records it needs.
Bound to
services-crm:modules/activities/tests/integration/db/activities.table.integration.spec.js#refuses a field mode other than hidden, optional or required
Source
services-crm:modules/activities/tests/integration/db/activities.table.integration.spec.js#refuses a field mode other than hidden, optional or required
05 Apply outcome-list replacement semanticsruleapinegativetest
Proves
BR-CAP-CRM-ACT-008-06
Preconditions
A type holds three outcomes.
Steps
Supply a changed list, omit the list, exceed 50 entries and repeat an outcome name.
Expected
Changed lists replace, omissions preserve, and invalid lists fail.
Data
Each run creates and isolates the records it needs.
Bound to
services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#replaces the outcomes as a list: kept by id, created by name, removed when missing
Source
services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#replaces the outcomes as a list: kept by id, created by name, removed when missing
06 Retain types and outcomes referenced by activitiesinvariantapinegativetest
Proves
BR-CAP-CRM-ACT-008-07
Preconditions
An activity uses the type and one outcome.
Steps
Remove that outcome and delete the type.
Expected
Both actions fail with guidance to deactivate instead.
Data
Each run creates and isolates the records it needs.
Bound to
services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#refuses to remove an outcome an activity has, saying to deactivate it instead
Source
services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#refuses to remove an outcome an activity has, saying to deactivate it instead
07 Retire a type while preserving prior activitiestransitionbrowsertest
Proves
BR-CAP-CRM-ACT-008-08
Preconditions
A type already has logged interactions.
Steps
Deactivate it, create another activity and correct an earlier one.
Expected
New work is rejected and the earlier interaction remains correctable.
Data
Each run creates and isolates the records it needs.
Bound to
Source
react-console:acceptance/crm/playwright/journeys/cross-application/CRM-ACC-0700.spec.ts#CRM-ACC-0700
08 Reorder types atomicallyinvariantapinegativetest
Proves
BR-CAP-CRM-ACT-008-09
Preconditions
Several activity types are present.
Steps
Send complete, incomplete, repeated and foreign-record reorder lists.
Expected
Only the complete valid list moves the types.
Data
Each run creates and isolates the records it needs.
Bound to
services-crm:modules/activities/tests/e2e/activities.e2e.spec.js#creates a type with its outcomes, lists it and puts the list in a new order
Source
services-crm:modules/activities/tests/e2e/activities.e2e.spec.js#creates a type with its outcomes, lists it and puts the list in a new order
09 Reject stale type replacementconcurrencyapinegativetest
Proves
BR-CAP-CRM-ACT-008-11
Preconditions
A type has advanced beyond an older edit version; separate locked fixtures require additional proof.
Steps
Replace it using the earlier version.
Expected
The version conflict preserves the current configuration.
Data
Each run creates and isolates the records it needs.
Bound to
Source
services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#refuses a version the type has moved on from
10 Baseline identity survives customer configuration and retirementinteractionapiproposed
Proves
BR-CAP-CRM-ACT-008-08 BR-CAP-CRM-ACT-009-02 BR-CAP-CRM-ACT-001-03 BR-CAP-CRM-ACT-003-05
Preconditions
A built-in type has an existing interaction and customer-edited name.
Steps
Reapply its baseline, deactivate the type, attempt a new interaction and correct the existing one.
Expected
Baseline adoption retains customer configuration; new use is refused and the correction retains its retired classification.
Data
Run-owned records in an isolated workspace; fixed clock for calendar checks.
Source
services-crm:modules/activities/tests/integration/services/persistence/activities.integration.spec.js#keeps an inactive type on an activity that already has it; services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#adopts a type the tenant already has under that id, leaving it as the tenant made it; services-crm:modules/activities/tests/integration/services/persistence/activities.integration.spec.js#refuses an inactive type for a new activity
11 Persist activity classification from Active to Inactivetransitionapiproposed
Proves
INV-DOM-CRM-ACT-001-03 INV-DOM-CRM-ACT-001-12
Preconditions
Run-owned activity classification has Active standing. The parent type’s read version matches and updates are unlocked.
Steps
Save the type or its result list with availability disabled. Read the resulting record and affected projections after commit.
Expected
The resulting activity classification has Inactive standing. New selections are refused while existing interactions may retain the entry.
Data
Run-owned records in an isolated workspace; fixed clock for calendar checks.
Source
services-crm:modules/activities/tests/integration/services/persistence/activities.integration.spec.js#keeps an inactive type on an activity that already has it
12 Persist activity classification from Inactive to Activetransitionapiproposed
Proves
INV-DOM-CRM-ACT-001-03 INV-DOM-CRM-ACT-001-12
Preconditions
Run-owned activity classification has Inactive standing. The parent type’s read version matches and updates are unlocked.
Steps
Save the type or its result list with availability enabled. Read the resulting record and affected projections after commit.
Expected
The resulting activity classification has Active standing. The entry becomes available for new selections.
Data
Run-owned records in an isolated workspace; fixed clock for calendar checks.
Source
services-crm:modules/activities/services/persistence/activity-types.ts:updateActivityType
13 Persist activity classification from Inactive to Deletedtransitionapiproposed
Proves
INV-DOM-CRM-ACT-001-03 INV-DOM-CRM-ACT-001-12
Preconditions
Run-owned activity classification has Inactive standing. No interaction references the entry. Type deletion additionally requires a customer-defined type without either lock; result removal requires an update-unlocked parent and current read version. Unused results of baseline types may be removed.
Steps
Delete an unused type, or save its result list with an unused result omitted. Read the resulting record and affected projections after commit.
Expected
The resulting activity classification has Deleted standing. Removing a type also removes its owned results.
Data
Run-owned records in an isolated workspace; fixed clock for calendar checks.
Source
services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#refuses to remove an outcome an activity has, saying to deactivate it instead
14 Persist activity classification from Active to Deletedtransitionapiproposed
Proves
INV-DOM-CRM-ACT-001-03 INV-DOM-CRM-ACT-001-12
Preconditions
Run-owned activity classification has Active standing. No interaction references the entry. Type deletion additionally requires a customer-defined type without either lock; result removal requires an update-unlocked parent and current read version. Unused results of baseline types may be removed.
Steps
Delete an unused type, or save its result list with an unused result omitted. Read the resulting record and affected projections after commit.
Expected
The resulting activity classification has Deleted standing. Removing a type also removes its owned results.
Data
Run-owned records in an isolated workspace; fixed clock for calendar checks.
Source
services-crm:modules/activities/services/persistence/activity-types.ts:deleteActivityType

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.