diff options
Diffstat (limited to 'spec/frontend/blob')
-rw-r--r-- | spec/frontend/blob/file_template_selector_spec.js | 61 |
1 files changed, 61 insertions, 0 deletions
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(); + }); + }); +}); |