From 9dc93a4519d9d5d7be48ff274127136236a3adb3 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 20 Apr 2021 23:50:22 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-11-stable-ee --- spec/frontend/blob/file_template_selector_spec.js | 61 +++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 spec/frontend/blob/file_template_selector_spec.js (limited to 'spec/frontend/blob') diff --git a/spec/frontend/blob/file_template_selector_spec.js b/spec/frontend/blob/file_template_selector_spec.js new file mode 100644 index 00000000000..2ab3b3ebc82 --- /dev/null +++ b/spec/frontend/blob/file_template_selector_spec.js @@ -0,0 +1,61 @@ +import $ from 'jquery'; +import FileTemplateSelector from '~/blob/file_template_selector'; + +describe('FileTemplateSelector', () => { + let subject; + let dropdown; + let wrapper; + + const createSubject = () => { + subject = new FileTemplateSelector({}); + subject.config = { + dropdown, + wrapper, + }; + subject.initDropdown = jest.fn(); + }; + + afterEach(() => { + subject = null; + }); + + describe('show method', () => { + beforeEach(() => { + dropdown = document.createElement('div'); + wrapper = document.createElement('div'); + wrapper.classList.add('hidden'); + createSubject(); + }); + + it('calls init on first call', () => { + jest.spyOn(subject, 'init'); + subject.show(); + + expect(subject.init).toHaveBeenCalledTimes(1); + }); + + it('does not call init on subsequent calls', () => { + jest.spyOn(subject, 'init'); + subject.show(); + subject.show(); + + expect(subject.init).toHaveBeenCalledTimes(1); + }); + + it('removes hidden class from $wrapper', () => { + expect($(wrapper).hasClass('hidden')).toBe(true); + + subject.show(); + + expect($(wrapper).hasClass('hidden')).toBe(false); + }); + + it('sets the focus on the dropdown', async () => { + subject.show(); + jest.spyOn(subject.$dropdown, 'focus'); + jest.runAllTimers(); + + expect(subject.$dropdown.focus).toHaveBeenCalled(); + }); + }); +}); -- cgit v1.2.3