Skip to content

Commit bbffe19

Browse files
committed
CCM-12614: fix unavailable to available bug
1 parent cd5fb9b commit bbffe19

File tree

4 files changed

+58
-15
lines changed

4 files changed

+58
-15
lines changed

infrastructure/terraform/components/dl/README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,12 @@ No requirements.
4646
| <a name="module_pdm_mock"></a> [pdm\_mock](#module\_pdm\_mock) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.29/terraform-lambda.zip | n/a |
4747
| <a name="module_pdm_poll"></a> [pdm\_poll](#module\_pdm\_poll) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-lambda.zip | n/a |
4848
| <a name="module_pdm_uploader"></a> [pdm\_uploader](#module\_pdm\_uploader) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.29/terraform-lambda.zip | n/a |
49-
| <a name="module_print_status_handler"></a> [print\_status\_handler](#module\_print\_status\_handler) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-lambda.zip | n/a |
5049
| <a name="module_s3bucket_cf_logs"></a> [s3bucket\_cf\_logs](#module\_s3bucket\_cf\_logs) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-s3bucket.zip | n/a |
5150
| <a name="module_s3bucket_letters"></a> [s3bucket\_letters](#module\_s3bucket\_letters) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-s3bucket.zip | n/a |
5251
| <a name="module_s3bucket_static_assets"></a> [s3bucket\_static\_assets](#module\_s3bucket\_static\_assets) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-s3bucket.zip | n/a |
5352
| <a name="module_sqs_event_publisher_errors"></a> [sqs\_event\_publisher\_errors](#module\_sqs\_event\_publisher\_errors) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-sqs.zip | n/a |
5453
| <a name="module_sqs_pdm_poll"></a> [sqs\_pdm\_poll](#module\_sqs\_pdm\_poll) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-sqs.zip | n/a |
5554
| <a name="module_sqs_pdm_uploader"></a> [sqs\_pdm\_uploader](#module\_sqs\_pdm\_uploader) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-sqs.zip | n/a |
56-
| <a name="module_sqs_print_status_handler"></a> [sqs\_print\_status\_handler](#module\_sqs\_print\_status\_handler) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-sqs.zip | n/a |
5755
| <a name="module_sqs_ttl"></a> [sqs\_ttl](#module\_sqs\_ttl) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-sqs.zip | n/a |
5856
| <a name="module_sqs_ttl_handle_expiry_errors"></a> [sqs\_ttl\_handle\_expiry\_errors](#module\_sqs\_ttl\_handle\_expiry\_errors) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-sqs.zip | n/a |
5957
| <a name="module_ttl_create"></a> [ttl\_create](#module\_ttl\_create) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.29/terraform-lambda.zip | n/a |

lambdas/pdm-poll-lambda/src/__tests__/apis/sqs-handler.test.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ describe('SQS Handler', () => {
5555
'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-pdm-resource-available-data.schema.json',
5656
type: 'uk.nhs.notify.digital.letters.pdm.resource.available.v1',
5757
data: {
58-
...pdmResourceSubmittedEvent.data,
58+
messageReference: pdmResourceSubmittedEvent.data.messageReference,
59+
senderId: pdmResourceSubmittedEvent.data.senderId,
60+
resourceId: pdmResourceSubmittedEvent.data.resourceId,
5961
nhsNumber: '9999999999',
6062
odsCode: 'AB1234',
6163
},
@@ -132,7 +134,10 @@ describe('SQS Handler', () => {
132134
'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-pdm-resource-available-data.schema.json',
133135
type: 'uk.nhs.notify.digital.letters.pdm.resource.available.v1',
134136
data: {
135-
...pdmResourceUnavailableEvent.data,
137+
messageReference:
138+
pdmResourceUnavailableEvent.data.messageReference,
139+
senderId: pdmResourceUnavailableEvent.data.senderId,
140+
resourceId: pdmResourceUnavailableEvent.data.resourceId,
136141
nhsNumber: '9999999999',
137142
odsCode: 'AB1234',
138143
},

lambdas/pdm-poll-lambda/src/apis/sqs-handler.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,9 @@ function generateAvailableEvent(
9292
'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-pdm-resource-available-data.schema.json',
9393
type: 'uk.nhs.notify.digital.letters.pdm.resource.available.v1',
9494
data: {
95-
...event.data,
95+
messageReference: event.data.messageReference,
96+
senderId: event.data.senderId,
97+
resourceId: event.data.resourceId,
9698
nhsNumber,
9799
odsCode,
98100
},

tests/playwright/digital-letters-component-tests/pdm-poll.component.spec.ts

Lines changed: 48 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ test.describe('PDM Poll', () => {
4848
test.describe('pdm.resource.submitted', () => {
4949
test('should send a pdm.resource.available event when available in PDM', async () => {
5050
const eventId = uuidv4();
51-
const documentResourceId = '9ae75410-c067-35ae-9410-153fa849a4dd';
51+
const resourceId = '9ae75410-c067-35ae-9410-153fa849a4dd';
5252
const messageReference = uuidv4();
5353
const senderId = uuidv4();
5454

@@ -58,7 +58,7 @@ test.describe('PDM Poll', () => {
5858
...submittedEvent,
5959
id: eventId,
6060
data: {
61-
resourceId: documentResourceId,
61+
resourceId,
6262
messageReference,
6363
senderId,
6464
},
@@ -85,7 +85,7 @@ test.describe('PDM Poll', () => {
8585

8686
test('should send a pdm.resource.unavailable event when unavailable in PDM', async () => {
8787
const eventId = uuidv4();
88-
const documentResourceId = 'unavailable-response';
88+
const resourceId = 'unavailable-response';
8989
const messageReference = uuidv4();
9090
const senderId = uuidv4();
9191

@@ -95,7 +95,7 @@ test.describe('PDM Poll', () => {
9595
...submittedEvent,
9696
id: eventId,
9797
data: {
98-
resourceId: documentResourceId,
98+
resourceId,
9999
messageReference,
100100
senderId,
101101
},
@@ -121,9 +121,47 @@ test.describe('PDM Poll', () => {
121121
});
122122

123123
test.describe('pdm.resource.unavailable', () => {
124+
test('should send a pdm.resource.available event when an unavailable resource becomes available in PDM', async () => {
125+
const eventId = uuidv4();
126+
const resourceId = uuidv4();
127+
const messageReference = uuidv4();
128+
const senderId = uuidv4();
129+
130+
await eventPublisher.sendEvents(
131+
[
132+
{
133+
...unavailableEvent,
134+
id: eventId,
135+
data: {
136+
resourceId,
137+
messageReference,
138+
senderId,
139+
retryCount: 0,
140+
},
141+
},
142+
],
143+
pdmResourceUnavailableValidator,
144+
);
145+
146+
await expectToPassEventually(async () => {
147+
const eventLogEntry = await getLogsFromCloudwatch(
148+
EVENT_BUS_LOG_GROUP_NAME,
149+
[
150+
'$.message_type = "EVENT_RECEIPT"',
151+
'$.details.detail_type = "uk.nhs.notify.digital.letters.pdm.resource.available.v1"',
152+
`$.details.event_detail = "*\\"messageReference\\":\\"${messageReference}\\"*"`,
153+
`$.details.event_detail = "*\\"odsCode\\":\\"Y05868\\"*"`,
154+
`$.details.event_detail = "*\\"nhsNumber\\":\\"9912003071\\"*"`,
155+
],
156+
);
157+
158+
expect(eventLogEntry.length).toEqual(1);
159+
}, 120);
160+
});
161+
124162
test('should send a pdm.resource.unavailable event when still unavailable in PDM', async () => {
125163
const eventId = uuidv4();
126-
const documentResourceId = 'unavailable-response';
164+
const resourceId = 'unavailable-response';
127165
const messageReference = uuidv4();
128166
const senderId = uuidv4();
129167

@@ -133,7 +171,7 @@ test.describe('PDM Poll', () => {
133171
...unavailableEvent,
134172
id: eventId,
135173
data: {
136-
resourceId: documentResourceId,
174+
resourceId,
137175
messageReference,
138176
senderId,
139177
retryCount: 0,
@@ -160,7 +198,7 @@ test.describe('PDM Poll', () => {
160198

161199
test('should send a pdm.resource.retries.exceeded event when unavailable in PDM after 10 retries', async () => {
162200
const eventId = uuidv4();
163-
const documentResourceId = 'unavailable-response';
201+
const resourceId = 'unavailable-response';
164202
const messageReference = uuidv4();
165203
const senderId = uuidv4();
166204

@@ -170,7 +208,7 @@ test.describe('PDM Poll', () => {
170208
...unavailableEvent,
171209
id: eventId,
172210
data: {
173-
resourceId: documentResourceId,
211+
resourceId,
174212
messageReference,
175213
senderId,
176214
retryCount: 9,
@@ -201,7 +239,7 @@ test.describe('PDM Poll', () => {
201239
test.setTimeout(550_000);
202240

203241
const eventId = uuidv4();
204-
const documentResourceId = 'b8f2b194-31e1-3719-aaf9-a9195e35e692';
242+
const resourceId = 'b8f2b194-31e1-3719-aaf9-a9195e35e692';
205243
const messageReference = uuidv4();
206244
const senderId = uuidv4();
207245

@@ -215,7 +253,7 @@ test.describe('PDM Poll', () => {
215253
'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-pdm-resource-unavailable-data.schema.json',
216254
type: 'uk.nhs.notify.digital.letters.pdm.resource.unavailable.v1',
217255
data: {
218-
resourceId: documentResourceId,
256+
resourceId,
219257
messageReference,
220258
senderId,
221259
},

0 commit comments

Comments
 (0)