diff options
Diffstat (limited to 'spec/frontend/vue_shared/components')
5 files changed, 60 insertions, 6 deletions
diff --git a/spec/frontend/vue_shared/components/changed_file_icon_spec.js b/spec/frontend/vue_shared/components/changed_file_icon_spec.js index d0586f9e63f..d5861b18318 100644 --- a/spec/frontend/vue_shared/components/changed_file_icon_spec.js +++ b/spec/frontend/vue_shared/components/changed_file_icon_spec.js @@ -28,10 +28,7 @@ describe('Changed file icon', () => { const findIcon = () => wrapper.find(Icon); const findIconName = () => findIcon().props('name'); - const findIconClasses = () => - findIcon() - .props('cssClasses') - .split(' '); + const findIconClasses = () => findIcon().classes(); const findTooltipText = () => wrapper.attributes('data-original-title'); it('with isCentered true, adds center class', () => { diff --git a/spec/frontend/vue_shared/components/file_icon_spec.js b/spec/frontend/vue_shared/components/file_icon_spec.js index 328eec0a80a..f8f68a6a77a 100644 --- a/spec/frontend/vue_shared/components/file_icon_spec.js +++ b/spec/frontend/vue_shared/components/file_icon_spec.js @@ -49,7 +49,7 @@ describe('File Icon component', () => { }); expect(findIcon().exists()).toBe(false); - expect(wrapper.find(Icon).props('cssClasses')).toContain('folder-icon'); + expect(wrapper.find(Icon).classes()).toContain('folder-icon'); }); it('should render a loading icon', () => { diff --git a/spec/frontend/vue_shared/components/modal_copy_button_spec.js b/spec/frontend/vue_shared/components/modal_copy_button_spec.js index f1943861523..d8c55bee8e0 100644 --- a/spec/frontend/vue_shared/components/modal_copy_button_spec.js +++ b/spec/frontend/vue_shared/components/modal_copy_button_spec.js @@ -14,7 +14,7 @@ describe('modal copy button', () => { wrapper = shallowMount(Component, { propsData: { text: 'copy me', - title: 'Copy this value into Clipboard!', + title: 'Copy this value', }, }); }); diff --git a/spec/frontend/vue_shared/components/recaptcha_eventhub_spec.js b/spec/frontend/vue_shared/components/recaptcha_eventhub_spec.js new file mode 100644 index 00000000000..d86d627886f --- /dev/null +++ b/spec/frontend/vue_shared/components/recaptcha_eventhub_spec.js @@ -0,0 +1,21 @@ +import { eventHub, callbackName } from '~/vue_shared/components/recaptcha_eventhub'; + +describe('reCAPTCHA event hub', () => { + // the following test case currently crashes + // see https://gitlab.com/gitlab-org/gitlab/issues/29192#note_217840035 + // eslint-disable-next-line jest/no-disabled-tests + it.skip('throws an error for overriding the callback', () => { + expect(() => { + window[callbackName] = 'something'; + }).toThrow(); + }); + + it('triggering callback emits a submit event', () => { + const eventHandler = jest.fn(); + eventHub.$once('submit', eventHandler); + + window[callbackName](); + + expect(eventHandler).toHaveBeenCalled(); + }); +}); diff --git a/spec/frontend/vue_shared/components/recaptcha_modal_spec.js b/spec/frontend/vue_shared/components/recaptcha_modal_spec.js new file mode 100644 index 00000000000..e509fe09d94 --- /dev/null +++ b/spec/frontend/vue_shared/components/recaptcha_modal_spec.js @@ -0,0 +1,36 @@ +import { shallowMount } from '@vue/test-utils'; + +import { eventHub } from '~/vue_shared/components/recaptcha_eventhub'; + +import RecaptchaModal from '~/vue_shared/components/recaptcha_modal'; + +describe('RecaptchaModal', () => { + const recaptchaFormId = 'recaptcha-form'; + const recaptchaHtml = `<form id="${recaptchaFormId}"></form>`; + + let wrapper; + + const findRecaptchaForm = () => wrapper.find(`#${recaptchaFormId}`).element; + + beforeEach(() => { + wrapper = shallowMount(RecaptchaModal, { + sync: false, + propsData: { + html: recaptchaHtml, + }, + }); + }); + + afterEach(() => { + wrapper.destroy(); + }); + + it('submits the form if event hub emits submit event', () => { + const form = findRecaptchaForm(); + jest.spyOn(form, 'submit').mockImplementation(); + + eventHub.$emit('submit'); + + expect(form.submit).toHaveBeenCalled(); + }); +}); |