Skip to content

Commit f793aab

Browse files
committed
CCM-8585: api client tests
1 parent d5bfd27 commit f793aab

File tree

6 files changed

+92
-14
lines changed

6 files changed

+92
-14
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -953,7 +953,7 @@ describe('templateClient', () => {
953953
false,
954954
mocks.templateRepository,
955955
mocks.letterUploadRepository,
956-
mocks.generateId
956+
mocks.generateVersionId
957957
);
958958

959959
mocks.templateRepository.get.mockResolvedValueOnce({
@@ -1047,7 +1047,7 @@ describe('templateClient', () => {
10471047
false,
10481048
mocks.templateRepository,
10491049
mocks.letterUploadRepository,
1050-
mocks.generateId
1050+
mocks.generateVersionId
10511051
);
10521052

10531053
const template: TemplateDto = {

lambdas/backend-api/src/__tests__/templates/infra/letter-upload-repository.test.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
11
import { PutObjectCommand, S3Client } from '@aws-sdk/client-s3';
22
import { LetterUploadRepository } from '@backend-api/templates/infra/letter-upload-repository';
3-
import type { Logger } from '@backend-api/utils/logger';
43
import 'aws-sdk-client-mock-jest';
54
import { mockClient } from 'aws-sdk-client-mock';
6-
import { mock } from 'jest-mock-extended';
75

86
const quarantineBucketName = 'q_bucket';
97

108
const setup = () => {
119
const s3Client = mockClient(S3Client);
1210

13-
const logger = mock<Logger>();
14-
1511
const letterUploadRepository = new LetterUploadRepository(
1612
s3Client as unknown as S3Client,
17-
quarantineBucketName,
18-
logger
13+
quarantineBucketName
1914
);
2015

2116
return { letterUploadRepository, mocks: { s3Client } };

lambdas/backend-api/src/templates/container.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
55
import { S3Client } from '@aws-sdk/client-s3';
66
import { LetterUploadRepository } from './infra/letter-upload-repository';
77
import { randomUUID } from 'node:crypto';
8-
import { logger } from '../logger';
98

109
export function createContainer() {
1110
const enableLetters = process.env.ENABLE_LETTERS_BACKEND === 'true';
@@ -50,5 +49,5 @@ export function createContainer() {
5049
generateId
5150
);
5251

53-
return { templateClient, logger };
52+
return { templateClient };
5453
}

lambdas/backend-api/src/templates/infra/letter-upload-repository.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import { ErrorCase } from 'nhs-notify-backend-client';
22
import { ApplicationResult, failure, success } from '../../utils';
33
import { PutObjectCommand, S3Client } from '@aws-sdk/client-s3';
4-
import type { Logger } from '@backend-api/utils/logger';
54

65
export class LetterUploadRepository {
76
constructor(
87
private readonly client: S3Client,
9-
private readonly bucketName: string,
10-
private readonly logger: Logger
8+
private readonly bucketName: string
119
) {}
1210

1311
async upload(

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

Lines changed: 86 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import axios from 'axios';
22
import MockAdapter from 'axios-mock-adapter';
3-
import { TemplateApiClient, templateClient } from '../template-api-client';
3+
import { TemplateApiClient } from '../template-api-client';
44

55
const axiosMock = new MockAdapter(axios);
66

@@ -76,6 +76,91 @@ describe('TemplateAPIClient', () => {
7676
expect(result.error).toBeUndefined();
7777
});
7878

79+
test('createLetterTemplate - should return error', async () => {
80+
axiosMock.onPost('/v1/letter-template').reply(400, {
81+
statusCode: 400,
82+
technicalMessage: 'Bad request',
83+
details: {
84+
message: 'Invalid request',
85+
},
86+
});
87+
88+
const client = new TemplateApiClient();
89+
90+
const result = await client.createLetterTemplate(
91+
{
92+
name: 'test',
93+
templateType: 'LETTER',
94+
language: 'de',
95+
letterType: 'q1',
96+
files: { pdfTemplate: { fileName: 'template.pdf' } },
97+
},
98+
testToken,
99+
new File(['pdf'], 'template.pdf', { type: 'application/pdf' })
100+
);
101+
102+
expect(result.error).toEqual({
103+
code: 400,
104+
message: 'Bad request',
105+
details: {
106+
message: 'Invalid request',
107+
},
108+
});
109+
110+
expect(result.data).toBeUndefined();
111+
112+
expect(axiosMock.history.post.length).toBe(1);
113+
});
114+
115+
test('createLetterTemplate - should return template', async () => {
116+
axiosMock.onPost('/v1/letter-template').reply(201, {
117+
statusCode: 201,
118+
template: {
119+
id: 'id',
120+
name: 'test',
121+
templateType: 'LETTER',
122+
language: 'de',
123+
letterType: 'q1',
124+
files: {
125+
pdfTemplate: { fileName: 'template.pdf' },
126+
testDataCsv: { fileName: 'test-data.csv' },
127+
},
128+
},
129+
});
130+
131+
const client = new TemplateApiClient();
132+
133+
const result = await client.createLetterTemplate(
134+
{
135+
name: 'test',
136+
templateType: 'LETTER',
137+
language: 'de',
138+
letterType: 'q1',
139+
files: {
140+
pdfTemplate: { fileName: 'template.pdf' },
141+
testDataCsv: { fileName: 'test-data.csv' },
142+
},
143+
},
144+
testToken,
145+
new File(['pdf'], 'template.pdf', { type: 'application/pdf' }),
146+
new File(['pdf'], 'test-data.csv', { type: 'test/csv' })
147+
);
148+
149+
expect(result.data).toEqual({
150+
id: 'id',
151+
name: 'test',
152+
templateType: 'LETTER',
153+
language: 'de',
154+
letterType: 'q1',
155+
files: {
156+
pdfTemplate: { fileName: 'template.pdf' },
157+
testDataCsv: { fileName: 'test-data.csv' },
158+
},
159+
});
160+
161+
expect(result.error).toBeUndefined();
162+
});
163+
79164
test('updateTemplate - should return error', async () => {
80165
axiosMock.onPost('/v1/template/real-id').reply(400, {
81166
statusCode: 400,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ export class TemplateApiClient implements ITemplateClient {
7070
error: response.error,
7171
};
7272
}
73+
7374
return {
7475
data: response.data.template,
7576
};

0 commit comments

Comments
 (0)