summaryrefslogtreecommitdiff
path: root/spec/frontend/blob/file_template_selector_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/blob/file_template_selector_spec.js')
-rw-r--r--spec/frontend/blob/file_template_selector_spec.js61
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();
+ });
+ });
+});