From 4529f637b50197cad3f856fb71175539693daf68 Mon Sep 17 00:00:00 2001 From: Tom Byers Date: Mon, 12 Aug 2019 17:00:39 +0100 Subject: [PATCH] Add tests for fileUpload module --- tests/javascripts/fileUpload.test.js | 83 ++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 tests/javascripts/fileUpload.test.js diff --git a/tests/javascripts/fileUpload.test.js b/tests/javascripts/fileUpload.test.js new file mode 100644 index 000000000..0d8727c7c --- /dev/null +++ b/tests/javascripts/fileUpload.test.js @@ -0,0 +1,83 @@ +const helpers = require('./support/helpers.js'); + +beforeAll(() => { + require('../../app/assets/javascripts/fileUpload.js'); +}); + +afterAll(() => { + require('./support/teardown.js'); +}); + +describe('File upload', () => { + + let form; + let fileUpload; + + beforeEach(() => { + + // set up DOM + document.body.innerHTML = ` +
+ + + + + +
`; + + form = document.querySelector('form'); + uploadControl = form.querySelector('input[type=file]'); + + }); + + afterEach(() => { + + document.body.innerHTML = ''; + + }); + + test("If the page loads, from a new or existing navigation, the form should reset", () => { + + form.reset = jest.fn(() => {}); + + // start module + window.GOVUK.modules.start(); + + helpers.triggerEvent(window, 'pageshow'); + + expect(form.reset).toHaveBeenCalled(); + + }); + + describe("If the state of the upload form control changes", () => { + + beforeEach(() => { + + form.submit = jest.fn(() => {}); + + // start module + window.GOVUK.modules.start(); + + helpers.triggerEvent(uploadControl, 'change', { eventInit: { bubbles: true } }); + + }); + + test("The form should submit", () => { + + expect(form.submit).toHaveBeenCalled(); + + }); + + test("It should add a link to cancel the upload by reloading the page", () => { + + expect(form.querySelector("a[href='']")).not.toBeNull(); + + }); + + }); + +});