Skip to content

ATS-PFM-NOT-019Inspect communication outcomes and provider feedback: Capability Test Specification

Markdown

ATS-PFM-NOT-019

Inspect communication outcomes and provider feedback: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaPlatformModuleStaff Notifications and Association CommunicationsRevision2

Read atservices-platform ad3f6a65react-console baf6dae3

Coverage

  • Rule gap: FND-PFM-NOT-080
  • Transition gap: FND-PFM-NOT-080
  • Validation covered
  • Permission covered
  • Edge covered
  • Failure gap: FND-PFM-NOT-080
  • Boundary covered
  • Concurrency covered
  • Invariant covered
  • Interaction covered

Test Scenarios

9 scenarios proving CAP-PFM-NOT-019; 8 bound to an existing test.

01 Correlate and deduplicate provider reportsinvariantapitest
Proves
BR-CAP-PFM-NOT-019-01
Preconditions
Prepare a sent compliance notice.
Steps
Process delivery, open and click feedback and replay one event.
Expected
Each report is associated with the tagged message once; replay is recognized without another event.
Data
Use only records created and owned by this suite.
Bound to
Source
services-platform:modules/communications/tests/integration/lifecycle/contact-role-compliance-communication.integration.spec.js#records each new event and recognizes the repeated delivery as a duplicate
02 Preserve delivery precedence across report orderconcurrencyapitest
Proves
BR-CAP-PFM-NOT-019-02 INV-DOM-PFM-NOT-005-08
Preconditions
Prepare a delivered message.
Steps
Apply deferral after delivery, replay an existing event and process a reverse-ordered event sequence.
Expected
A delivered message stays delivered, duplicate feedback does not increase counters and event listing follows occurrence time.
Data
Use only records created and owned by this suite.
Bound to
services-platform:modules/communications/tests/integration/lifecycle/contact-role-compliance-communication.integration.spec.js#lists the provider’s events in the order they happened, whatever order they arrived in
services-platform:modules/communications/tests/integration/services/persistence/messages.integration.spec.js#leaves the summary exactly where the first copy put it, so a redelivery counts nothing twice
Source
services-platform:modules/communications/tests/integration/lifecycle/contact-role-compliance-communication.integration.spec.js#keeps the message delivered when a deferral arrives after the delivery
03 Separate automated engagement from likely-human activityedgeapitest
Proves
BR-CAP-PFM-NOT-019-03
Preconditions
Prepare a delivered message.
Steps
Supply image-proxy open feedback and click feedback containing URL query parameters.
Expected
The automated open increments signal counts without human counts; the retained click URL excludes its query.
Data
Use only records created and owned by this suite.
Bound to
Source
services-platform:modules/communications/tests/integration/lifecycle/contact-role-compliance-communication.integration.spec.js#counts an open by an image proxy as an open, not as a likely human one
04 Filter and page communication historyboundaryapitest
Proves
BR-CAP-PFM-NOT-019-05
Preconditions
Prepare messages from multiple requests associated with two different source records.
Steps
Retrieve the list of by each filter; page through; ask for 500 per page; send a bad cursor and a type without an id.
Expected
Each view matches its filter in descending time order, pages contain at most two hundred and invalid inputs fail.
Data
Use only records created and owned by this suite.
Bound to
services-platform:modules/communications/tests/e2e/messages.e2e.spec.js#lists only the messages of the request asked about
services-platform:modules/communications/tests/e2e/messages.e2e.spec.js#lists only the messages about the source record asked about
services-platform:modules/communications/tests/e2e/messages.e2e.spec.js#answers the rest of the list after that cursor, repeating nothing
services-platform:modules/communications/tests/e2e/messages.e2e.spec.js#refuses a cursor this list never answered as 400
services-platform:modules/communications/tests/e2e/messages.e2e.spec.js#refuses a source type given without its id as 400
services-platform:modules/communications/tests/integration/services/persistence/messages.queries.integration.spec.js#considers at most the 500 newest of them, answering their messages newest first
Source
services-platform:modules/communications/tests/e2e/messages.e2e.spec.js#lists only the messages of the request asked about
05 Require sensitive permission for available body contentpermissionapinegativetest
Proves
BR-CAP-PFM-NOT-019-07
Preconditions
Prepare a sent message and one whose body object is gone.
Steps
Retrieve the content of each with the read-content permission; read it with only the read permission.
Expected
Authorized reads return subject, bodies and sender. Missing storage is reported as unavailable; callers without content permission are denied.
Data
Use only records created and owned by this suite.
Bound to
services-platform:modules/communications/tests/e2e/messages.e2e.spec.js#answers the HTML and text bodies rendered for this recipient
services-platform:modules/communications/tests/integration/services/storage/communication-objects.integration.spec.js#says the content is gone, rather than answering an empty e-mail, when the object is not there
Source
services-platform:modules/communications/tests/e2e/messages.e2e.spec.js#answers the HTML and text bodies rendered for this recipient
06 Read changes using the supplied service filtervalidationapinegativetest
Proves
BR-CAP-PFM-NOT-019-09
Preconditions
Messages of two services in two workspaces.
Steps
Retrieve changes as one service in pages of two; change a message a second time; read as a service that sent nothing; exceed the page ceiling.
Expected
Only matching service names return in ascending change order with a resume cursor. A later change reappears, unmatched results are empty and invalid cursors fail.
Data
Use only records created and owned by this suite.
Bound to
Source
services-platform:modules/communications/tests/integration/services/persistence/messages.changes.queries.integration.spec.js#answers the messages of the named service’s requests in the tenant
07 Enforce workspace isolation on all mail detailpermissionapinegativetest
Proves
BR-CAP-PFM-NOT-019-10 INV-DOM-PFM-NOT-005-10
Preconditions
Two workspaces with messages.
Steps
Retrieve the other's requests, messages and content by id.
Expected
Every foreign request, message, body and event lookup returns not found.
Data
Use only records created and owned by this suite.
Bound to
services-platform:modules/communications/tests/e2e/messages.e2e.spec.js#lists nothing of this tenant under the other tenant
services-platform:modules/communications/tests/e2e/requests.e2e.spec.js#lists nothing of this tenant under the other tenant
Source
services-platform:modules/communications/tests/integration/lifecycle/contact-role-compliance-communication.integration.spec.js#shows another tenant nothing of it
08 Keep copy feedback separate from primary deliveryinteractionapitest
Proves
BR-CAP-PFM-NOT-019-12
Preconditions
Prepare a message with a CC copy.
Steps
Report the copy's bounce, next the contact's delivery.
Expected
The bounced copy becomes suppressed, the primary contact does not, and primary-recipient delivery leaves the message delivered.
Data
Use only records created and owned by this suite.
Bound to
services-platform:modules/communications/tests/integration/services/dispatch/template-copies.integration.spec.js#records the copy's bounce on the message history without marking the contact's message bounced
Source
services-platform:modules/communications/tests/integration/services/dispatch/template-copies.integration.spec.js#suppresses the copy that bounced
09 Copy feedback protects the copy without rewriting primary deliveryinteractionapiproposed
Proves
BR-CAP-PFM-NOT-019-12
Preconditions
Use a request with a primary recipient and one eligible copy.
Steps
Send the message, report a permanent bounce for the copy and delivery for the primary recipient, then submit another request to each address.
Expected
History records both reports. The primary message remains delivered; subsequent copy mail is withheld while eligible primary mail continues.
Data
A suite-owned workspace, named staff accounts and unique occurrence keys; external adapters record attempts without shared writes.
Source
rhythm-v2-docs:specs/platform/notifications/planning/capabilities/CAP-PFM-NOT-019-record-what-became-of-each-e-mail.md#frontmatter,rhythm-v2-docs:specs/platform/notifications/planning/capabilities/CAP-PFM-NOT-020-protect-deliverability-and-the-associations-sending-address.md#frontmatter,rhythm-v2-docs:specs/platform/notifications/planning/capabilities/CAP-PFM-NOT-017-ask-platform-to-send-an-association-e-mail.md#frontmatter

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.