94255217e9
after user click delete branch, there is no processing indication, and user can click many times till. It seems flaw in UX. this will fix it fix bug in branch deletion link
58 lines
1.9 KiB
JavaScript
58 lines
1.9 KiB
JavaScript
require('~/extensions/array');
|
|
require('jquery');
|
|
require('jquery-ujs');
|
|
require('~/ajax_loading_spinner');
|
|
|
|
describe('Ajax Loading Spinner', () => {
|
|
const fixtureTemplate = 'static/ajax_loading_spinner.html.raw';
|
|
preloadFixtures(fixtureTemplate);
|
|
|
|
beforeEach(() => {
|
|
loadFixtures(fixtureTemplate);
|
|
gl.AjaxLoadingSpinner.init();
|
|
});
|
|
|
|
it('change current icon with spinner icon and disable link while waiting ajax response', (done) => {
|
|
spyOn(jQuery, 'ajax').and.callFake((req) => {
|
|
const xhr = new XMLHttpRequest();
|
|
const ajaxLoadingSpinner = document.querySelector('.js-ajax-loading-spinner');
|
|
const icon = ajaxLoadingSpinner.querySelector('i');
|
|
|
|
req.beforeSend(xhr, { dataType: 'text/html' });
|
|
|
|
expect(icon).not.toHaveClass('fa-trash-o');
|
|
expect(icon).toHaveClass('fa-spinner');
|
|
expect(icon).toHaveClass('fa-spin');
|
|
expect(icon.dataset.icon).toEqual('fa-trash-o');
|
|
expect(ajaxLoadingSpinner.getAttribute('disabled')).toEqual('');
|
|
|
|
req.complete({});
|
|
|
|
done();
|
|
const deferred = $.Deferred();
|
|
return deferred.promise();
|
|
});
|
|
document.querySelector('.js-ajax-loading-spinner').click();
|
|
});
|
|
|
|
it('use original icon again and enabled the link after complete the ajax request', (done) => {
|
|
spyOn(jQuery, 'ajax').and.callFake((req) => {
|
|
const xhr = new XMLHttpRequest();
|
|
const ajaxLoadingSpinner = document.querySelector('.js-ajax-loading-spinner');
|
|
|
|
req.beforeSend(xhr, { dataType: 'text/html' });
|
|
req.complete({});
|
|
|
|
const icon = ajaxLoadingSpinner.querySelector('i');
|
|
expect(icon).toHaveClass('fa-trash-o');
|
|
expect(icon).not.toHaveClass('fa-spinner');
|
|
expect(icon).not.toHaveClass('fa-spin');
|
|
expect(ajaxLoadingSpinner.getAttribute('disabled')).toEqual(null);
|
|
|
|
done();
|
|
const deferred = $.Deferred();
|
|
return deferred.promise();
|
|
});
|
|
document.querySelector('.js-ajax-loading-spinner').click();
|
|
});
|
|
});
|