diff options
Diffstat (limited to 'spec/frontend/branches/ajax_loading_spinner_spec.js')
-rw-r--r-- | spec/frontend/branches/ajax_loading_spinner_spec.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/spec/frontend/branches/ajax_loading_spinner_spec.js b/spec/frontend/branches/ajax_loading_spinner_spec.js new file mode 100644 index 00000000000..a6404faa445 --- /dev/null +++ b/spec/frontend/branches/ajax_loading_spinner_spec.js @@ -0,0 +1,32 @@ +import AjaxLoadingSpinner from '~/branches/ajax_loading_spinner'; + +describe('Ajax Loading Spinner', () => { + let ajaxLoadingSpinnerElement; + let fauxEvent; + beforeEach(() => { + document.body.innerHTML = ` + <div> + <a class="js-ajax-loading-spinner" + data-remote + href="http://goesnowhere.nothing/whereami"> + <i class="fa fa-trash-o"></i> + </a></div>`; + AjaxLoadingSpinner.init(); + ajaxLoadingSpinnerElement = document.querySelector('.js-ajax-loading-spinner'); + fauxEvent = { target: ajaxLoadingSpinnerElement }; + }); + + afterEach(() => { + document.body.innerHTML = ''; + }); + + it('`ajaxBeforeSend` event handler sets current icon to spinner and disables link', () => { + expect(ajaxLoadingSpinnerElement.parentNode.querySelector('.gl-spinner')).toBeNull(); + expect(ajaxLoadingSpinnerElement.classList.contains('hidden')).toBe(false); + + AjaxLoadingSpinner.ajaxBeforeSend(fauxEvent); + + expect(ajaxLoadingSpinnerElement.parentNode.querySelector('.gl-spinner')).not.toBeNull(); + expect(ajaxLoadingSpinnerElement.classList.contains('hidden')).toBe(true); + }); +}); |