Skip to content

Commit c1f8eb4

Browse files
committed
tests pass
1 parent 7f51584 commit c1f8eb4

File tree

8 files changed

+167
-126
lines changed

8 files changed

+167
-126
lines changed

lambdas/backend-api/src/__tests__/templates/app/template-client.test.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1569,7 +1569,7 @@ describe('templateClient', () => {
15691569
const { templateClient, mocks, logMessages } = setup();
15701570

15711571
mocks.clientConfigRepository.get.mockResolvedValueOnce({
1572-
data: { features: { proofing: true } },
1572+
data: { features: { proofing: true }, campaignId: 'campaignId' },
15731573
});
15741574

15751575
const actualError = new Error('from db');
@@ -1773,8 +1773,11 @@ describe('templateClient', () => {
17731773
expect(mocks.queueMock.send).toHaveBeenCalledWith(
17741774
templateId,
17751775
templateName,
1776-
user.userId,
1776+
user,
1777+
'campaignId',
17771778
personalisationParameters,
1779+
'x1',
1780+
'en',
17781781
pdfVersionId,
17791782
undefined,
17801783
defaultLetterSupplier
@@ -1794,7 +1797,7 @@ describe('templateClient', () => {
17941797

17951798
const result = await templateClient.requestProof(templateId, {
17961799
userId: user.userId,
1797-
clientId: undefined,
1800+
clientId: undefined as unknown as string,
17981801
});
17991802

18001803
expect(mocks.clientConfigRepository.get).not.toHaveBeenCalled();
@@ -1864,8 +1867,11 @@ describe('templateClient', () => {
18641867
expect(mocks.queueMock.send).toHaveBeenCalledWith(
18651868
templateId,
18661869
templateName,
1867-
user.userId,
1870+
user,
1871+
'campaignId',
18681872
personalisationParameters,
1873+
'x1',
1874+
'en',
18691875
pdfVersionId,
18701876
undefined,
18711877
defaultLetterSupplier

lambdas/backend-api/src/templates/app/template-client.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,11 @@ export class TemplateClient {
397397
proofRequestUpdateResult.data
398398
);
399399

400-
if (!templateDTO || templateDTO.templateType !== 'LETTER') {
400+
if (
401+
!templateDTO ||
402+
templateDTO.templateType !== 'LETTER' ||
403+
!templateDTO.personalisationParameters?.length
404+
) {
401405
log.error({
402406
code: ErrorCase.INTERNAL,
403407
description: 'Malformed template',
@@ -408,8 +412,7 @@ export class TemplateClient {
408412

409413
const pdfVersionId = templateDTO.files.pdfTemplate.currentVersion;
410414
const testDataVersionId = templateDTO.files.testDataCsv?.currentVersion;
411-
const personalisationParameters =
412-
templateDTO.personalisationParameters ?? [];
415+
const personalisationParameters = templateDTO.personalisationParameters;
413416
const letterType = templateDTO.letterType;
414417
const language = templateDTO.language;
415418

lambdas/sftp-letters/src/__tests__/app/poll.test.ts

Lines changed: 68 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,28 @@ test('polls SFTP folder', async () => {
2323
exists: async (path: string) => {
2424
const existsMappings: Record<string, FileInfo['type']> = {
2525
'download-dir/sftp-environment/proofs': directoryType,
26-
'download-dir/sftp-environment/proofs/template-1-folder': directoryType,
26+
'download-dir/sftp-environment/proofs/client_campaign_template-1_en_x0':
27+
directoryType,
2728
};
2829

2930
return existsMappings[path] ?? false;
3031
},
3132
get: async (path: string) => {
3233
if (
3334
path ===
34-
'download-dir/sftp-environment/proofs/template-1-folder/download-error.pdf'
35+
'download-dir/sftp-environment/proofs/client_campaign_template-1_en_x0/download-error.pdf'
3536
) {
3637
throw downloadError;
3738
}
3839

3940
const buffer = {
40-
'download-dir/sftp-environment/proofs/template-3.pdf': mockPdfBuffer,
41-
'download-dir/sftp-environment/proofs/template-1-folder/template-1.pdf':
41+
'download-dir/sftp-environment/proofs/client2_campaign2_template-3_zh_x1':
4242
mockPdfBuffer,
43-
'download-dir/sftp-environment/proofs/template-1-folder/template-2.pdf':
43+
'download-dir/sftp-environment/proofs/client_campaign_template-1_en_x0/proof-1.pdf':
4444
mockPdfBuffer,
45-
'download-dir/sftp-environment/proofs/template-1-folder/invalid-file.pdf':
45+
'download-dir/sftp-environment/proofs/client_campaign_template-1_en_x0/proof-2.pdf':
46+
mockPdfBuffer,
47+
'download-dir/sftp-environment/proofs/client_campaign_template-1_en_x0/invalid-file.pdf':
4648
mockMalformedPdfBuffer,
4749
}[path];
4850

@@ -56,7 +58,7 @@ test('polls SFTP folder', async () => {
5658
({
5759
'download-dir/sftp-environment/proofs': [
5860
{
59-
name: 'template-1-folder',
61+
name: 'client_campaign_template-1_en_x0',
6062
type: directoryType,
6163
modifyTime: Date.now(),
6264
},
@@ -66,38 +68,39 @@ test('polls SFTP folder', async () => {
6668
modifyTime: Date.now(),
6769
},
6870
{
69-
name: 'folder-does-not-exist',
70-
type: directoryType,
71-
modifyTime: Date.now(),
72-
},
73-
],
74-
'download-dir/sftp-environment/proofs/template-1-folder': [
75-
{
76-
name: 'template-1.pdf',
77-
type: fileType,
78-
modifyTime: Date.now(),
79-
},
80-
{
81-
name: 'template-2.pdf',
82-
type: fileType,
83-
modifyTime: Date.now(),
84-
},
85-
{
86-
name: 'invalid-file.pdf',
87-
type: fileType,
88-
modifyTime: Date.now(),
89-
},
90-
{
91-
name: 'download-error.pdf',
92-
type: fileType,
93-
modifyTime: Date.now(),
94-
},
95-
{
96-
name: 'extra-folder-to-ignore',
71+
name: 'client3_campaign3_template-5_de_q1',
9772
type: directoryType,
9873
modifyTime: Date.now(),
9974
},
10075
],
76+
'download-dir/sftp-environment/proofs/client_campaign_template-1_en_x0':
77+
[
78+
{
79+
name: 'proof-1.pdf',
80+
type: fileType,
81+
modifyTime: Date.now(),
82+
},
83+
{
84+
name: 'proof-2.pdf',
85+
type: fileType,
86+
modifyTime: Date.now(),
87+
},
88+
{
89+
name: 'invalid-file.pdf',
90+
type: fileType,
91+
modifyTime: Date.now(),
92+
},
93+
{
94+
name: 'download-error.pdf',
95+
type: fileType,
96+
modifyTime: Date.now(),
97+
},
98+
{
99+
name: 'extra-folder-to-ignore',
100+
type: directoryType,
101+
modifyTime: Date.now(),
102+
},
103+
],
101104
})[path] ?? [],
102105
});
103106

@@ -125,33 +128,34 @@ test('polls SFTP folder', async () => {
125128
expect(s3Repository.putRawData).toHaveBeenCalledTimes(2);
126129
expect(s3Repository.putRawData).toHaveBeenCalledWith(
127130
mockPdfBuffer,
128-
'proofs/supplier/template-1-folder/template-1.pdf'
131+
'proofs/supplier/template-1/proof-1.pdf'
129132
);
130133
expect(s3Repository.putRawData).toHaveBeenCalledWith(
131134
mockPdfBuffer,
132-
'proofs/supplier/template-1-folder/template-2.pdf'
135+
'proofs/supplier/template-1/proof-2.pdf'
133136
);
134137

135-
expect(mockLogger.logMessages).toContainEqual({
136-
level: 'error',
137-
message: {
138-
description: 'PDF file failed validation',
138+
expect(mockLogger.logMessages).toContainEqual(
139+
expect.objectContaining({
140+
level: 'error',
141+
message: 'PDF file failed validation',
139142
sftpPath:
140-
'download-dir/sftp-environment/proofs/template-1-folder/invalid-file.pdf',
141-
s3Path: 'proofs/supplier/template-1-folder/invalid-file.pdf',
142-
},
143-
timestamp: new Date('2022-01-01 09:00').toISOString(),
144-
});
145-
expect(mockLogger.logMessages).toContainEqual({
146-
level: 'error',
147-
description: 'Failed to process file',
148-
sftpPath:
149-
'download-dir/sftp-environment/proofs/template-1-folder/download-error.pdf',
150-
s3Path: 'proofs/supplier/template-1-folder/download-error.pdf',
151-
timestamp: new Date('2022-01-01 09:00').toISOString(),
152-
stack: expect.stringContaining('Error: Download error'),
153-
message: 'Download error',
154-
});
143+
'download-dir/sftp-environment/proofs/client_campaign_template-1_en_x0/invalid-file.pdf',
144+
s3Path: 'proofs/supplier/template-1/invalid-file.pdf',
145+
timestamp: new Date('2022-01-01 09:00').toISOString(),
146+
})
147+
);
148+
expect(mockLogger.logMessages).toContainEqual(
149+
expect.objectContaining({
150+
level: 'error',
151+
sftpPath:
152+
'download-dir/sftp-environment/proofs/client_campaign_template-1_en_x0/download-error.pdf',
153+
s3Path: 'proofs/supplier/template-1/download-error.pdf',
154+
timestamp: new Date('2022-01-01 09:00').toISOString(),
155+
stack: expect.stringContaining('Error: Download error'),
156+
message: 'Failed to process file Download error',
157+
})
158+
);
155159

156160
expect(sftpClient.connect).toHaveBeenCalledTimes(1);
157161
expect(sftpClient.end).toHaveBeenCalledTimes(1);
@@ -187,11 +191,14 @@ test('attempts to poll folder that does not exist', async () => {
187191

188192
expect(sftpClient.list).not.toHaveBeenCalled();
189193

190-
expect(mockLogger.logMessages).toContainEqual({
191-
level: 'info',
192-
message: "Path 'download-dir/sftp-environment/proofs' does not exist",
193-
timestamp: new Date('2022-01-01 09:00').toISOString(),
194-
});
194+
expect(mockLogger.logMessages).toContainEqual(
195+
expect.objectContaining({
196+
level: 'info',
197+
baseSftpPath: 'download-dir/sftp-environment/proofs',
198+
message: 'Base SFTP path does not exist',
199+
timestamp: new Date('2022-01-01 09:00').toISOString(),
200+
})
201+
);
195202

196203
expect(sftpClient.connect).toHaveBeenCalledTimes(1);
197204
expect(sftpClient.end).toHaveBeenCalledTimes(1);

0 commit comments

Comments
 (0)