From 40e1ce8c81a64b93cb4e6f33d59f3b8af444e2a0 Mon Sep 17 00:00:00 2001 From: Anthony Bushara Date: Fri, 20 Sep 2024 16:30:15 -0400 Subject: [PATCH] test: add test in application form --- .../components/Form/ApplicationForm.test.tsx | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/app/tests/components/Form/ApplicationForm.test.tsx b/app/tests/components/Form/ApplicationForm.test.tsx index c09acb6f45..ed68f6444e 100644 --- a/app/tests/components/Form/ApplicationForm.test.tsx +++ b/app/tests/components/Form/ApplicationForm.test.tsx @@ -663,4 +663,68 @@ describe('The application form', () => { expect(removeButton).toBeInTheDocument(); }); + + it('upload of template file', async () => { + componentTestingHelper.loadQuery(); + componentTestingHelper.renderComponent((data) => ({ + application: data.application, + pageNumber: 11, + query: data.query, + })); + + const file = new File([new ArrayBuffer(1)], 'file.xls', { + type: 'application/vnd.ms-excel', + }); + + global.fetch = jest.fn((url) => { + console.log(url, url.includes('templateNumber')); + if (url.includes('templateNumber')) { + return Promise.resolve({ + status: 300, + ok: false, + json: () => Promise.resolve({}), + }); + } + return Promise.resolve({ + status: 200, + ok: true, + json: () => Promise.resolve({}), + }); + }); + + const addTemplateOneFileInput = screen.getAllByTestId('file-test')[0]; + + const addTemplateTwoFileInput = screen.getAllByTestId('file-test')[1]; + + await act(async () => { + fireEvent.change(addTemplateOneFileInput, { target: { files: [file] } }); + }); + + await act(async () => { + fireEvent.change(addTemplateTwoFileInput, { target: { files: [file] } }); + }); + + await act(async () => { + fireEvent.click( + screen.getByRole('button', { name: 'Save and continue' }) + ); + }); + + expect(global.fetch).toHaveBeenCalledWith( + '/api/email/notifyFailedReadOfTemplateData', + { + body: JSON.stringify({ + applicationId: 42, + host: 'http://localhost', + params: { + templateNumber: 2, + }, + }), + headers: { + 'Content-Type': 'application/json', + }, + method: 'POST', + } + ); + }); });