Skip to content

Commit 0835816

Browse files
CCM-12858: lint fixes
1 parent afcddd2 commit 0835816

File tree

8 files changed

+50
-69
lines changed

8 files changed

+50
-69
lines changed

lambdas/core-notifier-lambda/src/__tests__/apis/sqs-handler.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { PDMResourceAvailable } from 'digital-letters-events';
55
import { NotifyMessageProcessor } from 'app/notify-message-processor';
66
import { SenderManagement } from 'sender-management';
77
import { EventPublisherFacade } from 'infra/event-publisher-facade';
8-
import { createHandler, SqsHandlerDependencies } from 'apis/sqs-handler';
8+
import { SqsHandlerDependencies, createHandler } from 'apis/sqs-handler';
99
import { parseSqsRecord } from 'app/parse-sqs-message';
1010
import { InvalidPdmResourceAvailableEvent } from 'domain/invalid-pdm-resource-available-event';
1111
import { RequestNotifyError } from 'domain/request-notify-error';
@@ -165,7 +165,7 @@ describe('createHandler', () => {
165165
it('marks the message as failed for retry', async () => {
166166
const sqsEvent = createSqsEvent(1);
167167
const handler = createHandler(dependencies);
168-
const messageId = sqsEvent.Records[0].messageId;
168+
const { messageId } = sqsEvent.Records[0];
169169

170170
mockParseSqsRecord.mockImplementationOnce(() => {
171171
throw new InvalidPdmResourceAvailableEvent(messageId);
@@ -191,7 +191,7 @@ describe('createHandler', () => {
191191
it('marks the message as failed for retry since error lacks messageReference', async () => {
192192
const sqsEvent = createSqsEvent(1);
193193
const handler = createHandler(dependencies);
194-
const messageId = sqsEvent.Records[0].messageId;
194+
const { messageId } = sqsEvent.Records[0];
195195
const errorCode = 'VALIDATION_ERROR';
196196
const correlationId = 'corr-123';
197197
const error = new RequestNotifyError(
@@ -224,7 +224,7 @@ describe('createHandler', () => {
224224
it('publishes rejected event when error has messageReference property', async () => {
225225
const sqsEvent = createSqsEvent(1);
226226
const handler = createHandler(dependencies);
227-
const messageId = sqsEvent.Records[0].messageId;
227+
const { messageId } = sqsEvent.Records[0];
228228
const errorCode = 'VALIDATION_ERROR';
229229
const correlationId = 'corr-123';
230230
const error = new RequestNotifyError(
@@ -269,7 +269,7 @@ describe('createHandler', () => {
269269
it('marks the message as failed for retry', async () => {
270270
const sqsEvent = createSqsEvent(1);
271271
const handler = createHandler(dependencies);
272-
const messageId = sqsEvent.Records[0].messageId;
272+
const { messageId } = sqsEvent.Records[0];
273273
const error = new Error('Unexpected error');
274274

275275
mockParseSqsRecord.mockReturnValueOnce(mockPdmEvent);
@@ -325,7 +325,7 @@ describe('createHandler', () => {
325325

326326
mockParseSqsRecord.mockReturnValueOnce(mockPdmEvent);
327327
mockSenderManagement.getSender.mockReturnValueOnce(mockSender);
328-
mockNotifyMessageProcessor.process.mockResolvedValueOnce(undefined);
328+
mockNotifyMessageProcessor.process.mockResolvedValueOnce();
329329

330330
const result = await handler(sqsEvent);
331331

lambdas/core-notifier-lambda/src/__tests__/app/notify-api-client.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import type { Logger } from 'utils';
1010
import { mockRequest1, mockResponse } from '__tests__/constants';
1111
import { IAccessTokenRepository, NotifyClient } from 'app/notify-api-client';
1212
import { RequestAlreadyReceivedError } from 'domain/request-already-received-error';
13-
import { RequestNotifyError } from 'domain/request-notify-error';
1413

1514
jest.mock('utils');
1615
jest.mock('node:crypto');

lambdas/core-notifier-lambda/src/__tests__/app/parse-sqs-message.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ import { parseSqsRecord } from 'app/parse-sqs-message';
55
import { InvalidPdmResourceAvailableEvent } from 'domain/invalid-pdm-resource-available-event';
66
import { PDMResourceAvailable } from 'digital-letters-events';
77

8+
// Import the mocked validator after the mock setup
9+
import { messageDownloadedValidator } from 'digital-letters-events/PDMResourceAvailable.js';
10+
811
jest.mock('digital-letters-events/PDMResourceAvailable.js', () => ({
912
messageDownloadedValidator: jest.fn(),
1013
}));
1114

1215
const mockLogger = mock<Logger>();
1316

14-
// Import the mocked validator after the mock setup
15-
const { messageDownloadedValidator } = require('digital-letters-events/PDMResourceAvailable.js');
16-
1717
describe('parseSqsRecord', () => {
1818
const messageId = 'test-message-id-123';
1919
const validPdmEvent: PDMResourceAvailable = {
@@ -89,7 +89,7 @@ describe('parseSqsRecord', () => {
8989
},
9090
];
9191
(messageDownloadedValidator as jest.Mock).mockReturnValueOnce(false);
92-
(messageDownloadedValidator as any).errors = validationErrors;
92+
messageDownloadedValidator.errors = validationErrors;
9393

9494
expect(() => parseSqsRecord(sqsRecord, mockLogger)).toThrow(
9595
InvalidPdmResourceAvailableEvent,

lambdas/core-notifier-lambda/src/__tests__/index.test.ts

Lines changed: 34 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -8,78 +8,63 @@ import { mock } from 'jest-mock-extended';
88
jest.mock('container');
99
jest.mock('apis/sqs-handler');
1010

11+
const createSqsEvent = (recordCount: number): SQSEvent => ({
12+
Records: Array.from(
13+
{ length: recordCount },
14+
(_, i): SQSRecord => ({
15+
messageId: `message-id-${i + 1}`,
16+
receiptHandle: `receipt-handle-${i + 1}`,
17+
body: JSON.stringify({
18+
detail: {
19+
id: `event-id-${i + 1}`,
20+
source: 'test',
21+
specversion: '1.0',
22+
type: 'test.event',
23+
time: '2025-12-16T10:00:00Z',
24+
datacontenttype: 'application/json',
25+
data: {},
26+
},
27+
}),
28+
attributes: {
29+
ApproximateReceiveCount: '1',
30+
SentTimestamp: '1234567890',
31+
SenderId: 'sender-id',
32+
ApproximateFirstReceiveTimestamp: '1234567890',
33+
},
34+
messageAttributes: {},
35+
md5OfBody: 'md5',
36+
eventSource: 'aws:sqs',
37+
eventSourceARN: 'arn:aws:sqs:region:account:queue',
38+
awsRegion: 'eu-west-2',
39+
}),
40+
),
41+
});
42+
1143
describe('Lambda handler', () => {
1244
const mockContainer = mock<SqsHandlerDependencies>();
1345
const mockSqsHandler = jest.fn();
1446
const mockCreateContainer = jest.mocked(createContainer);
1547
const mockCreateSqsHandler = jest.mocked(createSqsHandler);
1648

17-
const createSqsEvent = (recordCount: number): SQSEvent => ({
18-
Records: Array.from(
19-
{ length: recordCount },
20-
(_, i): SQSRecord => ({
21-
messageId: `message-id-${i + 1}`,
22-
receiptHandle: `receipt-handle-${i + 1}`,
23-
body: JSON.stringify({
24-
detail: {
25-
id: `event-id-${i + 1}`,
26-
source: 'test',
27-
specversion: '1.0',
28-
type: 'test.event',
29-
time: '2025-12-16T10:00:00Z',
30-
datacontenttype: 'application/json',
31-
data: {},
32-
},
33-
}),
34-
attributes: {
35-
ApproximateReceiveCount: '1',
36-
SentTimestamp: '1234567890',
37-
SenderId: 'sender-id',
38-
ApproximateFirstReceiveTimestamp: '1234567890',
39-
},
40-
messageAttributes: {},
41-
md5OfBody: 'md5',
42-
eventSource: 'aws:sqs',
43-
eventSourceARN: 'arn:aws:sqs:region:account:queue',
44-
awsRegion: 'eu-west-2',
45-
}),
46-
),
47-
});
48-
4949
beforeEach(() => {
5050
jest.clearAllMocks();
5151
mockCreateContainer.mockResolvedValue(mockContainer);
5252
mockCreateSqsHandler.mockReturnValue(mockSqsHandler);
5353
mockSqsHandler.mockResolvedValue({ batchItemFailures: [] });
5454
});
5555

56-
it('creates a container', async () => {
57-
const sqsEvent = createSqsEvent(1);
58-
59-
await handler(sqsEvent);
60-
61-
expect(mockCreateContainer).toHaveBeenCalledTimes(1);
62-
});
63-
64-
it('creates an SQS handler with the container dependencies', async () => {
56+
it('creates an SQS handler with the container dependencies and handler being invoked', async () => {
6557
const sqsEvent = createSqsEvent(1);
6658

6759
await handler(sqsEvent);
6860

6961
expect(mockCreateSqsHandler).toHaveBeenCalledTimes(1);
7062
expect(mockCreateSqsHandler).toHaveBeenCalledWith(mockContainer);
71-
});
72-
73-
it('invokes the SQS handler with the event', async () => {
74-
const sqsEvent = createSqsEvent(2);
75-
76-
await handler(sqsEvent);
77-
7863
expect(mockSqsHandler).toHaveBeenCalledTimes(1);
7964
expect(mockSqsHandler).toHaveBeenCalledWith(sqsEvent);
8065
});
8166

82-
it('returns the result from the SQS handler', async () => {
67+
it('when fails to process a message it returns the id of the failed message', async () => {
8368
const sqsEvent = createSqsEvent(1);
8469
const expectedResult = {
8570
batchItemFailures: [{ itemIdentifier: 'message-id-1' }],

lambdas/core-notifier-lambda/src/__tests__/infra/config.test.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { loadConfig, NotifySendMessageConfig } from 'infra/config';
1+
import { NotifySendMessageConfig, loadConfig } from 'infra/config';
22
import { defaultConfigReader } from 'utils';
33

44
jest.mock('utils', () => ({
@@ -40,10 +40,7 @@ describe('loadConfig', () => {
4040
1,
4141
'EVENT_PUBLISHER_EVENT_BUS_ARN',
4242
);
43-
expect(mockGetValue).toHaveBeenNthCalledWith(
44-
2,
45-
'EVENT_PUBLISHER_DLQ_URL',
46-
);
43+
expect(mockGetValue).toHaveBeenNthCalledWith(2, 'EVENT_PUBLISHER_DLQ_URL');
4744
expect(mockGetValue).toHaveBeenNthCalledWith(
4845
3,
4946
'APIM_ACCESS_TOKEN_SSM_PARAMETER_NAME',

lambdas/core-notifier-lambda/src/app/notify-api-client.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import axios, { Axios, AxiosInstance, isAxiosError } from 'axios';
1+
import axios, { AxiosInstance, isAxiosError } from 'axios';
22
import type { AxiosError } from 'axios';
33
import type { Readable } from 'node:stream';
44
import { constants as HTTP2_CONSTANTS } from 'node:http2';

lambdas/core-notifier-lambda/src/app/notify-message-processor.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import type { NotifyClient } from 'app/notify-api-client';
33
import type { SingleMessageRequest } from 'domain/request';
44
import { RequestAlreadyReceivedError } from 'domain/request-already-received-error';
55
import { EventPublisherFacade } from 'infra/event-publisher-facade';
6-
import { RequestNotifyError } from 'domain/request-notify-error';
76

87
type Dependencies = {
98
nhsNotifyClient: NotifyClient;
@@ -42,7 +41,7 @@ export class NotifyMessageProcessor {
4241
this.logger.info('Request has already been received by Notify', {
4342
messageReference,
4443
});
45-
return;
44+
return undefined;
4645
}
4746

4847
this.logger.error('Failed processing request', {

lambdas/core-notifier-lambda/src/domain/mapper.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ export function mapPdmEventToMessageRequestSubmitted(
5858
time: new Date().toISOString(),
5959
recordedtime: new Date().toISOString(),
6060
type: 'uk.nhs.notify.digital.letters.messages.request.submitted.v1',
61-
dataschema: 'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-message-request-submitted-data.schema.json',
61+
dataschema:
62+
'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-message-request-submitted-data.schema.json',
6263
source: pdmResourceAvailable.source.replace(/\/pdm$/, '/messages'),
6364
data: {
6465
messageReference,

0 commit comments

Comments
 (0)