diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-18 13:34:06 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-18 13:34:06 +0300 |
commit | 859a6fb938bb9ee2a317c46dfa4fcc1af49608f0 (patch) | |
tree | d7f2700abe6b4ffcb2dcfc80631b2d87d0609239 /spec/frontend/pages/projects/merge_requests/edit/check_form_state_spec.js | |
parent | 446d496a6d000c73a304be52587cd9bbc7493136 (diff) |
Add latest changes from gitlab-org/gitlab@13-9-stable-eev13.9.0-rc42
Diffstat (limited to 'spec/frontend/pages/projects/merge_requests/edit/check_form_state_spec.js')
-rw-r--r-- | spec/frontend/pages/projects/merge_requests/edit/check_form_state_spec.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/spec/frontend/pages/projects/merge_requests/edit/check_form_state_spec.js b/spec/frontend/pages/projects/merge_requests/edit/check_form_state_spec.js new file mode 100644 index 00000000000..ea49111760b --- /dev/null +++ b/spec/frontend/pages/projects/merge_requests/edit/check_form_state_spec.js @@ -0,0 +1,41 @@ +import initCheckFormState from '~/pages/projects/merge_requests/edit/check_form_state'; + +describe('Check form state', () => { + const findInput = () => document.querySelector('#form-input'); + + let beforeUnloadEvent; + let setDialogContent; + + beforeEach(() => { + setFixtures(` + <form class="merge-request-form"> + <input type="text" name="test" id="form-input"/> + </form>`); + + beforeUnloadEvent = new Event('beforeunload'); + jest.spyOn(beforeUnloadEvent, 'preventDefault'); + setDialogContent = jest.spyOn(beforeUnloadEvent, 'returnValue', 'set'); + + initCheckFormState(); + }); + + afterEach(() => { + beforeUnloadEvent.preventDefault.mockRestore(); + setDialogContent.mockRestore(); + }); + + it('shows confirmation dialog when there are unsaved changes', () => { + findInput().value = 'value changed'; + window.dispatchEvent(beforeUnloadEvent); + + expect(beforeUnloadEvent.preventDefault).toHaveBeenCalled(); + expect(setDialogContent).toHaveBeenCalledWith(''); + }); + + it('does not show confirmation dialog when there are no unsaved changes', () => { + window.dispatchEvent(beforeUnloadEvent); + + expect(beforeUnloadEvent.preventDefault).not.toHaveBeenCalled(); + expect(setDialogContent).not.toHaveBeenCalled(); + }); +}); |