summaryrefslogtreecommitdiff
path: root/spec/frontend/branches/ajax_loading_spinner_spec.js
blob: a6404faa445d058e3b189597dbbb3369595ac713 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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);
  });
});