Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .tool-versions
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ terraform-docs 0.19.0
vale 3.6.0
tfsec 1.28.10
nodejs 20.18.2
jq 1.6

# ==============================================================================
# The section below is reserved for Docker image versions.
Expand Down
32 changes: 12 additions & 20 deletions frontend/src/__tests__/app/copy-template/page.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,10 @@
*/
import CopyTemplatePage from '@app/copy-template/[templateId]/page';
import { CopyTemplate } from '@forms/CopyTemplate/CopyTemplate';
import {
TemplateType,
TemplateStatus,
} from 'nhs-notify-web-template-management-utils';
import { redirect } from 'next/navigation';
import { getTemplate } from '@utils/form-actions';
import {
Language,
LetterType,
TemplateDTO,
VirusScanStatus,
} from 'nhs-notify-backend-client';
import { TemplateDto } from 'nhs-notify-backend-client';
import { LetterTemplate } from 'nhs-notify-web-template-management-utils';

jest.mock('@utils/form-actions');
jest.mock('next/navigation');
Expand All @@ -28,34 +20,34 @@ describe('CopyTemplatePage', () => {

const template = {
id: 'template-id',
templateType: TemplateType.EMAIL,
templateStatus: TemplateStatus.NOT_YET_SUBMITTED,
templateType: 'EMAIL',
templateStatus: 'NOT_YET_SUBMITTED',
name: 'template-name',
subject: 'template-subject-line',
message: 'template-message',
createdAt: '2025-01-13T10:19:25.579Z',
updatedAt: '2025-01-13T10:19:25.579Z',
} satisfies TemplateDTO;
} satisfies TemplateDto;

const letterTemplate: TemplateDTO = {
const letterTemplate: LetterTemplate = {
id: 'template-id',
templateType: TemplateType.LETTER,
templateStatus: TemplateStatus.NOT_YET_SUBMITTED,
templateType: 'LETTER',
templateStatus: 'NOT_YET_SUBMITTED',
name: 'template-name',
createdAt: '2025-01-13T10:19:25.579Z',
updatedAt: '2025-01-13T10:19:25.579Z',
letterType: LetterType.Q4,
language: Language.FR,
letterType: 'q4',
language: 'fr',
files: {
pdfTemplate: {
fileName: 'file.pdf',
currentVersion: '61C1267A-0F37-4E1D-831E-494DE2BECC8C',
virusScanStatus: VirusScanStatus.PASSED,
virusScanStatus: 'PASSED',
},
testDataCsv: {
fileName: 'file.csv',
currentVersion: 'A8A76934-70F4-4735-8314-51CE097130DB',
virusScanStatus: VirusScanStatus.PASSED,
virusScanStatus: 'PASSED',
},
},
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ exports[`CreateEmailTemplatePage should render CreateEmailTemplatePage 1`] = `
"message": "",
"name": "",
"subject": "",
"templateStatus": "NOT_YET_SUBMITTED",
"templateType": "EMAIL",
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ exports[`CreateNHSAppTemplatePage should render CreateNHSAppTemplatePage 1`] = `
{
"message": "",
"name": "",
"templateStatus": "NOT_YET_SUBMITTED",
"templateType": "NHS_APP",
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ exports[`CreateSMSTemplatePage should render CreateSMSTemplatePage 1`] = `
{
"message": "",
"name": "",
"templateStatus": "NOT_YET_SUBMITTED",
"templateType": "SMS",
}
}
Expand Down
27 changes: 11 additions & 16 deletions frontend/src/__tests__/app/delete-template/page.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,9 @@
*/
import DeleteTemplatePage from '@app/delete-template/[templateId]/page';
import { DeleteTemplate } from '@forms/DeleteTemplate/DeleteTemplate';
import {
EmailTemplate,
TemplateType,
TemplateStatus,
} from 'nhs-notify-web-template-management-utils';
import { redirect } from 'next/navigation';
import { getTemplate } from '@utils/form-actions';
import { TemplateDTO } from 'nhs-notify-backend-client';
import { TemplateDto } from 'nhs-notify-backend-client';

jest.mock('@utils/form-actions');
jest.mock('next/navigation');
Expand All @@ -25,20 +20,20 @@ describe('PreviewEmailTemplatePage', () => {
it('should load page', async () => {
const templateDTO = {
id: 'template-id',
templateType: TemplateType.EMAIL,
templateStatus: TemplateStatus.NOT_YET_SUBMITTED,
templateType: 'EMAIL',
templateStatus: 'NOT_YET_SUBMITTED',
name: 'template-name',
subject: 'template-subject-line',
message: 'template-message',
createdAt: '2025-01-13T10:19:25.579Z',
updatedAt: '2025-01-13T10:19:25.579Z',
} satisfies TemplateDTO;
} satisfies TemplateDto;

const emailTemplate: EmailTemplate = {
const emailTemplate: TemplateDto = {
...templateDTO,
subject: 'template-subject-line',
templateType: TemplateType.EMAIL,
templateStatus: TemplateStatus.NOT_YET_SUBMITTED,
templateType: 'EMAIL',
templateStatus: 'NOT_YET_SUBMITTED',
};

getTemplateMock.mockResolvedValueOnce(templateDTO);
Expand All @@ -65,8 +60,8 @@ describe('PreviewEmailTemplatePage', () => {
test('should redirect to invalid-template when template is already submitted', async () => {
getTemplateMock.mockResolvedValueOnce({
id: 'template-id',
templateStatus: TemplateStatus.SUBMITTED,
templateType: TemplateType.NHS_APP,
templateStatus: 'SUBMITTED',
templateType: 'NHS_APP',
name: 'template-name',
message: 'template-message',
createdAt: 'today',
Expand All @@ -85,8 +80,8 @@ describe('PreviewEmailTemplatePage', () => {
test('should redirect to manage-templates when template is already deleted', async () => {
getTemplateMock.mockResolvedValueOnce({
id: 'template-id',
templateStatus: TemplateStatus.DELETED,
templateType: TemplateType.NHS_APP,
templateStatus: 'DELETED',
templateType: 'NHS_APP',
name: 'template-name',
message: 'template-message',
createdAt: 'today',
Expand Down
29 changes: 12 additions & 17 deletions frontend/src/__tests__/app/edit-email-template/page.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,9 @@
*/
import EditEmailTemplatePage from '@app/edit-email-template/[templateId]/page';
import { getTemplate } from '@utils/form-actions';
import {
EmailTemplate,
TemplateStatus,
TemplateType,
} from 'nhs-notify-web-template-management-utils';
import { redirect } from 'next/navigation';
import { EmailTemplateForm } from '@forms/EmailTemplateForm/EmailTemplateForm';
import { TemplateDTO } from 'nhs-notify-backend-client';
import { EmailTemplate } from 'nhs-notify-web-template-management-utils';

jest.mock('@utils/form-actions');
jest.mock('next/navigation');
Expand All @@ -19,16 +14,16 @@ jest.mock('@forms/EmailTemplateForm/EmailTemplateForm');
const getTemplateMock = jest.mocked(getTemplate);
const redirectMock = jest.mocked(redirect);

const templateDTO = {
const template: EmailTemplate = {
id: 'template-id',
templateType: TemplateType.EMAIL,
templateStatus: TemplateStatus.NOT_YET_SUBMITTED,
templateType: 'EMAIL',
templateStatus: 'NOT_YET_SUBMITTED',
name: 'name',
subject: 'subject',
message: 'message',
createdAt: '2025-01-13T10:19:25.579Z',
updatedAt: '2025-01-13T10:19:25.579Z',
} satisfies TemplateDTO;
};

describe('EditEmailTemplatePage', () => {
beforeEach(jest.resetAllMocks);
Expand All @@ -49,8 +44,8 @@ describe('EditEmailTemplatePage', () => {

it('should redirect to invalid-template when template type is not EMAIL', async () => {
getTemplateMock.mockResolvedValueOnce({
...templateDTO,
templateType: TemplateType.NHS_APP,
...template,
templateType: 'NHS_APP',
});

await EditEmailTemplatePage({
Expand All @@ -65,13 +60,13 @@ describe('EditEmailTemplatePage', () => {
});

it('should render CreateEmailTemplatePage component when template is found', async () => {
getTemplateMock.mockResolvedValueOnce(templateDTO);
getTemplateMock.mockResolvedValueOnce(template);

const emailTemplate: EmailTemplate = {
...templateDTO,
const emailTemplate = {
...template,
subject: 'subject',
templateType: TemplateType.EMAIL,
templateStatus: TemplateStatus.NOT_YET_SUBMITTED,
templateType: 'EMAIL' as const,
templateStatus: 'NOT_YET_SUBMITTED',
};

const page = await EditEmailTemplatePage({
Expand Down
46 changes: 15 additions & 31 deletions frontend/src/__tests__/app/edit-nhs-app-template/page.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,12 @@
* @jest-environment node
*/
import { redirect } from 'next/navigation';
import {
TemplateType,
TemplateStatus,
NHSAppTemplate,
} from 'nhs-notify-web-template-management-utils';
import { NHSAppTemplate } from 'nhs-notify-web-template-management-utils';
import { getTemplate } from '@utils/form-actions';
import { NhsAppTemplateForm } from '@forms/NhsAppTemplateForm/NhsAppTemplateForm';
import EditNhsAppTemplatePage from '@app/edit-nhs-app-template/[templateId]/page';
import { TemplateDTO } from 'nhs-notify-backend-client';
import { TemplateDto } from 'nhs-notify-backend-client';
import { EMAIL_TEMPLATE, LETTER_TEMPLATE, SMS_TEMPLATE } from '../../helpers';

jest.mock('@forms/NhsAppTemplateForm/NhsAppTemplateForm');
jest.mock('@utils/form-actions');
Expand All @@ -23,23 +20,23 @@ describe('EditNhsAppTemplatePage', () => {
beforeEach(jest.resetAllMocks);

test('page loads', async () => {
const templateDTO = {
const template = {
id: 'template-id',
templateType: TemplateType.NHS_APP,
templateStatus: TemplateStatus.NOT_YET_SUBMITTED,
templateType: 'NHS_APP',
templateStatus: 'NOT_YET_SUBMITTED',
name: 'name',
message: 'message',
createdAt: '2025-01-13T10:19:25.579Z',
updatedAt: '2025-01-13T10:19:25.579Z',
} satisfies TemplateDTO;
} satisfies TemplateDto;

const nhsAppTemplate: NHSAppTemplate = {
...templateDTO,
templateType: TemplateType.NHS_APP,
templateStatus: TemplateStatus.NOT_YET_SUBMITTED,
...template,
templateType: 'NHS_APP',
templateStatus: 'NOT_YET_SUBMITTED',
};

getTemplateMock.mockResolvedValueOnce(templateDTO);
getTemplateMock.mockResolvedValueOnce(template);

const page = await EditNhsAppTemplatePage({
params: Promise.resolve({
Expand All @@ -62,23 +59,10 @@ describe('EditNhsAppTemplatePage', () => {
expect(redirectMock).toHaveBeenCalledWith('/invalid-template', 'replace');
});

const invalidTemplateTypes: TemplateType[] = [
TemplateType.EMAIL,
TemplateType.SMS,
];

test.each(invalidTemplateTypes)(
'should render invalid template, when template type is %p',
async (templateType) => {
getTemplateMock.mockResolvedValueOnce({
id: 'template-id',
templateType,
templateStatus: TemplateStatus.NOT_YET_SUBMITTED,
name: 'name',
message: 'message',
createdAt: 'today',
updatedAt: 'today',
});
test.each([EMAIL_TEMPLATE, SMS_TEMPLATE, LETTER_TEMPLATE])(
'should render invalid template, when template type is $templateType',
async (template) => {
getTemplateMock.mockResolvedValueOnce(template);

await EditNhsAppTemplatePage({
params: Promise.resolve({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,10 @@
*/
import EditSmsTemplatePage from '@app/edit-text-message-template/[templateId]/page';
import { getTemplate } from '@utils/form-actions';
import {
SMSTemplate,
TemplateType,
TemplateStatus,
} from 'nhs-notify-web-template-management-utils';
import { redirect } from 'next/navigation';
import { SmsTemplateForm } from '@forms/SmsTemplateForm/SmsTemplateForm';
import { TemplateDTO } from 'nhs-notify-backend-client';
import { TemplateDto } from 'nhs-notify-backend-client';
import { SMSTemplate } from 'nhs-notify-web-template-management-utils';

jest.mock('@utils/form-actions');
jest.mock('next/navigation');
Expand All @@ -21,13 +17,13 @@ const redirectMock = jest.mocked(redirect);

const templateDTO = {
id: 'template-id',
templateType: TemplateType.SMS,
templateStatus: TemplateStatus.NOT_YET_SUBMITTED,
templateType: 'SMS',
templateStatus: 'NOT_YET_SUBMITTED',
name: 'name',
message: 'message',
createdAt: '2025-01-13T10:19:25.579Z',
updatedAt: '2025-01-13T10:19:25.579Z',
} satisfies TemplateDTO;
} satisfies TemplateDto;

describe('EditSmsTemplatePage', () => {
beforeEach(jest.resetAllMocks);
Expand All @@ -49,7 +45,7 @@ describe('EditSmsTemplatePage', () => {
it('should redirect to invalid-template when template type is not SMS', async () => {
getTemplateMock.mockResolvedValueOnce({
...templateDTO,
templateType: TemplateType.NHS_APP,
templateType: 'NHS_APP',
});

await EditSmsTemplatePage({
Expand All @@ -68,8 +64,8 @@ describe('EditSmsTemplatePage', () => {

const smsTemplate: SMSTemplate = {
...templateDTO,
templateType: TemplateType.SMS,
templateStatus: TemplateStatus.NOT_YET_SUBMITTED,
templateType: 'SMS',
templateStatus: 'NOT_YET_SUBMITTED',
};

const page = await EditSmsTemplatePage({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,10 @@
* @jest-environment node
*/
import EmailTemplateSubmittedPage from '@app/email-template-submitted/[templateId]/page';
import {
TemplateType,
TemplateStatus,
} from 'nhs-notify-web-template-management-utils';
import { TemplateSubmitted } from '@molecules/TemplateSubmitted/TemplateSubmitted';
import { getTemplate } from '@utils/form-actions';
import { redirect } from 'next/navigation';
import { TemplateDto } from 'nhs-notify-backend-client';

jest.mock('@molecules/TemplateSubmitted/TemplateSubmitted');
jest.mock('@utils/form-actions');
Expand All @@ -23,14 +20,14 @@ describe('EmailTemplateSubmittedPage', () => {
test('should load page', async () => {
const template = {
id: 'template-id',
templateType: TemplateType.EMAIL,
templateStatus: TemplateStatus.SUBMITTED,
templateType: 'EMAIL',
templateStatus: 'SUBMITTED',
name: 'template-name',
message: 'example',
subject: 'subject',
createdAt: 'today',
updatedAt: 'today',
};
} satisfies TemplateDto;

getTemplateMock.mockResolvedValueOnce(template);

Expand Down
Loading
Loading