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
3 changes: 2 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@
}
],
"no-empty-function": "off",
"unicorn/prefer-module": "off"
"unicorn/prefer-module": "off",
"sonarjs/todo-tag": "off"
},
"overrides": [
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`CreateLetterTemplatePage should render CreateLetterTemplatePage 1`] = `
exports[`UploadLetterTemplatePage should render UploadLetterTemplatePage 1`] = `
<LetterTemplateForm
initialState={
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import ClientIdAndCampaignIdRequiredPage from '@app/create-letter-template/client-id-and-campaign-id-required/page';
import ClientIdAndCampaignIdRequiredPage from '@app/upload-letter-template/client-id-and-campaign-id-required/page';
import { render } from '@testing-library/react';

test('ClientIdAndCampaignIdRequiredPage', async () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,29 @@
/**
* @jest-environment node
*/
import CreateLetterTemplatePage from '@app/create-letter-template/page';
import UploadLetterTemplatePage, {
generateMetadata,
} from '@app/upload-letter-template/page';
import content from '@content/content';
import { getSessionServer } from '@utils/amplify-utils';
import { fetchClient } from '@utils/server-features';
import { redirect, RedirectType } from 'next/navigation';

const { pageTitle } = content.components.templateFormLetter;

jest.mock('next/navigation');
jest.mock('@utils/amplify-utils');
jest.mock('@utils/server-features');

const mockGetSessionServer = jest.mocked(getSessionServer);
const mockFetchClient = jest.mocked(fetchClient);

describe('CreateLetterTemplatePage', () => {
describe('UploadLetterTemplatePage', () => {
beforeEach(() => {
jest.resetAllMocks();
});

it('should render CreateLetterTemplatePage', async () => {
it('should render UploadLetterTemplatePage', async () => {
mockGetSessionServer.mockResolvedValueOnce({
accessToken: 'mocktoken',
clientId: 'client1',
Expand All @@ -30,8 +35,9 @@ describe('CreateLetterTemplatePage', () => {
},
});

const page = await CreateLetterTemplatePage();
const page = await UploadLetterTemplatePage();

expect(await generateMetadata()).toEqual({ title: pageTitle });
expect(page).toMatchSnapshot();
});

Expand All @@ -47,7 +53,7 @@ describe('CreateLetterTemplatePage', () => {
},
});

await CreateLetterTemplatePage();
await UploadLetterTemplatePage();

expect(mockGetSessionServer).toHaveBeenCalled();
expect(mockFetchClient).toHaveBeenCalled();
Expand All @@ -67,10 +73,10 @@ describe('CreateLetterTemplatePage', () => {
},
});

await CreateLetterTemplatePage();
await UploadLetterTemplatePage();

expect(mockRedirect).toHaveBeenCalledWith(
'/create-letter-template/client-id-and-campaign-id-required',
'/upload-letter-template/client-id-and-campaign-id-required',
RedirectType.replace
);
});
Expand All @@ -89,10 +95,10 @@ describe('CreateLetterTemplatePage', () => {
},
});

await CreateLetterTemplatePage();
await UploadLetterTemplatePage();

expect(mockRedirect).toHaveBeenCalledWith(
'/create-letter-template/client-id-and-campaign-id-required',
'/upload-letter-template/client-id-and-campaign-id-required',
RedirectType.replace
);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,23 @@ test('submit form - validation error', async () => {
});
});

test('submit form - no validation error', async () => {
const mockRedirect = jest.mocked(redirect);
test.each([
['NHS_APP', '/create-nhs-app-template'],
['SMS', '/create-text-message-template'],
['EMAIL', '/create-email-template'],
['LETTER', '/upload-letter-template'],
])(
'submit form - $templateType redirects to $url',
async (templateType, url) => {
const mockRedirect = jest.mocked(redirect);

await chooseTemplateAction(
{},
getMockFormData({
templateType: 'NHS_APP',
})
);
await chooseTemplateAction(
{},
getMockFormData({
templateType,
})
);

expect(mockRedirect).toHaveBeenCalledWith(
'/create-nhs-app-template',
RedirectType.push
);
});
expect(mockRedirect).toHaveBeenCalledWith(url, RedirectType.push);
}
);
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ exports[`Client-side validation triggers 1`] = `
name="form-id"
readonly=""
type="hidden"
value="create-letter-template"
value="upload-letter-template"
/>
<input
name="csrf_token"
Expand Down Expand Up @@ -464,7 +464,7 @@ exports[`Client-side validation triggers 1`] = `
aria-disabled="false"
class="nhsuk-button"
data-testid="submit-button"
id="create-letter-template-submit-button"
id="upload-letter-template-submit-button"
type="submit"
>
Save and upload
Expand Down Expand Up @@ -519,7 +519,7 @@ exports[`hides right-to-left language warning when language changes 1`] = `
name="form-id"
readonly=""
type="hidden"
value="create-letter-template"
value="upload-letter-template"
/>
<input
name="csrf_token"
Expand Down Expand Up @@ -889,7 +889,7 @@ exports[`hides right-to-left language warning when language changes 1`] = `
aria-disabled="false"
class="nhsuk-button"
data-testid="submit-button"
id="create-letter-template-submit-button"
id="upload-letter-template-submit-button"
type="submit"
>
Save and upload
Expand Down Expand Up @@ -989,7 +989,7 @@ exports[`renders page one error 1`] = `
name="form-id"
readonly=""
type="hidden"
value="create-letter-template"
value="upload-letter-template"
/>
<input
name="csrf_token"
Expand Down Expand Up @@ -1371,7 +1371,7 @@ exports[`renders page one error 1`] = `
aria-disabled="false"
class="nhsuk-button"
data-testid="submit-button"
id="create-letter-template-submit-button"
id="upload-letter-template-submit-button"
type="submit"
>
Save and upload
Expand Down Expand Up @@ -1489,7 +1489,7 @@ exports[`renders page with multiple errors 1`] = `
name="form-id"
readonly=""
type="hidden"
value="create-letter-template"
value="upload-letter-template"
/>
<input
name="csrf_token"
Expand Down Expand Up @@ -1889,7 +1889,7 @@ exports[`renders page with multiple errors 1`] = `
aria-disabled="false"
class="nhsuk-button"
data-testid="submit-button"
id="create-letter-template-submit-button"
id="upload-letter-template-submit-button"
type="submit"
>
Save and upload
Expand Down Expand Up @@ -1944,7 +1944,7 @@ exports[`renders page with preloaded field values 1`] = `
name="form-id"
readonly=""
type="hidden"
value="create-letter-template"
value="upload-letter-template"
/>
<input
name="csrf_token"
Expand Down Expand Up @@ -2340,7 +2340,7 @@ exports[`renders page with preloaded field values 1`] = `
aria-disabled="false"
class="nhsuk-button"
data-testid="submit-button"
id="create-letter-template-submit-button"
id="upload-letter-template-submit-button"
type="submit"
>
Save and upload
Expand Down Expand Up @@ -2395,7 +2395,7 @@ exports[`shows right-to-left language warning when language changes 1`] = `
name="form-id"
readonly=""
type="hidden"
value="create-letter-template"
value="upload-letter-template"
/>
<input
name="csrf_token"
Expand Down Expand Up @@ -2791,7 +2791,7 @@ exports[`shows right-to-left language warning when language changes 1`] = `
aria-disabled="false"
class="nhsuk-button"
data-testid="submit-button"
id="create-letter-template-submit-button"
id="upload-letter-template-submit-button"
type="submit"
>
Save and upload
Expand Down
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
import { getMockFormData } from '@testhelpers';
import { createLetterTemplate } from '@utils/form-actions';
import { uploadLetterTemplate } from '@utils/form-actions';
import { redirect } from 'next/navigation';
import { processFormActions } from '@forms/LetterTemplateForm/server-action';
import { CreateLetterTemplate } from 'nhs-notify-web-template-management-utils';
import { UploadLetterTemplate } from 'nhs-notify-web-template-management-utils';

jest.mock('@utils/amplify-utils');
jest.mock('@utils/form-actions');
jest.mock('next/navigation');

const createLetterTemplateMock = jest.mocked(createLetterTemplate);
const uploadLetterTemplateMock = jest.mocked(uploadLetterTemplate);
const redirectMock = jest.mocked(redirect);

const initialState: CreateLetterTemplate = {
const initialState: UploadLetterTemplate = {
templateType: 'LETTER',
name: 'name',
letterType: 'x0',
language: 'en',
};

describe('CreateLetterTemplate server actions', () => {
describe('UploadLetterTemplate server actions', () => {
beforeEach(jest.resetAllMocks);

it('create-letter-template - should return response when no template name, letter type, language or pdf file', async () => {
it('upload-letter-template - should return response when no template name, letter type, language or pdf file', async () => {
const response = await processFormActions(
initialState,
getMockFormData({ 'form-id': 'create-letter-template' })
getMockFormData({ 'form-id': 'upload-letter-template' })
);

expect(response).toEqual({
Expand All @@ -43,7 +43,7 @@ describe('CreateLetterTemplate server actions', () => {
});

test('should create the template and redirect', async () => {
createLetterTemplateMock.mockResolvedValue({
uploadLetterTemplateMock.mockResolvedValue({
...initialState,
id: 'new-template-id',
templateStatus: 'NOT_YET_SUBMITTED',
Expand Down Expand Up @@ -84,7 +84,7 @@ describe('CreateLetterTemplate server actions', () => {
})
);

expect(createLetterTemplateMock).toHaveBeenCalledWith(
expect(uploadLetterTemplateMock).toHaveBeenCalledWith(
{
...initialState,
name: 'template-name',
Expand All @@ -102,7 +102,7 @@ describe('CreateLetterTemplate server actions', () => {
});

test('should throw error on editing existing template', async () => {
createLetterTemplateMock.mockResolvedValue({
uploadLetterTemplateMock.mockResolvedValue({
...initialState,
id: 'new-template-id',
templateStatus: 'NOT_YET_SUBMITTED',
Expand Down
Loading