61 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
import LinkedTabs from '~/lib/utils/bootstrap_linked_tabs';
 | 
						|
 | 
						|
(() => {
 | 
						|
  describe('Linked Tabs', () => {
 | 
						|
    preloadFixtures('static/linked_tabs.html.raw');
 | 
						|
 | 
						|
    beforeEach(() => {
 | 
						|
      loadFixtures('static/linked_tabs.html.raw');
 | 
						|
    });
 | 
						|
 | 
						|
    describe('when is initialized', () => {
 | 
						|
      beforeEach(() => {
 | 
						|
        spyOn(window.history, 'replaceState').and.callFake(function () {});
 | 
						|
      });
 | 
						|
 | 
						|
      it('should activate the tab correspondent to the given action', () => {
 | 
						|
        const linkedTabs = new LinkedTabs({ // eslint-disable-line
 | 
						|
          action: 'tab1',
 | 
						|
          defaultAction: 'tab1',
 | 
						|
          parentEl: '.linked-tabs',
 | 
						|
        });
 | 
						|
 | 
						|
        expect(document.querySelector('#tab1').classList).toContain('active');
 | 
						|
      });
 | 
						|
 | 
						|
      it('should active the default tab action when the action is show', () => {
 | 
						|
        const linkedTabs = new LinkedTabs({ // eslint-disable-line
 | 
						|
          action: 'show',
 | 
						|
          defaultAction: 'tab1',
 | 
						|
          parentEl: '.linked-tabs',
 | 
						|
        });
 | 
						|
 | 
						|
        expect(document.querySelector('#tab1').classList).toContain('active');
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    describe('on click', () => {
 | 
						|
      it('should change the url according to the clicked tab', () => {
 | 
						|
        const historySpy = spyOn(history, 'replaceState').and.callFake(() => {});
 | 
						|
 | 
						|
        const linkedTabs = new LinkedTabs({
 | 
						|
          action: 'show',
 | 
						|
          defaultAction: 'tab1',
 | 
						|
          parentEl: '.linked-tabs',
 | 
						|
        });
 | 
						|
 | 
						|
        const secondTab = document.querySelector('.linked-tabs li:nth-child(2) a');
 | 
						|
        const newState = secondTab.getAttribute('href') + linkedTabs.currentLocation.search + linkedTabs.currentLocation.hash;
 | 
						|
 | 
						|
        secondTab.click();
 | 
						|
 | 
						|
        if (historySpy) {
 | 
						|
          expect(historySpy).toHaveBeenCalledWith({
 | 
						|
            url: newState,
 | 
						|
          }, document.title, newState);
 | 
						|
        }
 | 
						|
      });
 | 
						|
    });
 | 
						|
  });
 | 
						|
})();
 |