import { sync } from '../data/html'; import Splide from '../../src/js/splide'; import { COMPLETE } from '../../src/js/components'; describe( 'Sub Splide synchronized to a main one', () => { let main, sub; beforeEach( () => { document.body.innerHTML = sync; sub = new Splide( '#sub', { isNavigation: true }, COMPLETE ).mount(); main = new Splide( '#splide', {}, COMPLETE ).sync( sub ).mount(); } ); test( 'should update index of a main slider when changing its active index, and vise versa.', () => { sub.go( 1 ); expect( main.index ).toBe( 1 ); expect( sub.index ).toBe( 1 ); main.go( 2 ); expect( main.index ).toBe( 2 ); expect( sub.index ).toBe( 2 ); } ); test( 'should update index of a main slider when a slide of a sub with isNavigation option is clicked.', () => { const slides = sub.Components.Elements.slides; const secondSlide = slides[ 1 ]; const thirdSlide = slides[ 2 ]; // Simulate a mouseup event with a left click. secondSlide.dispatchEvent( new Event( 'mouseup', { button: 0 } ) ); expect( main.index ).toBe( 1 ); expect( sub.index ).toBe( 1 ); // Simulate a touchend event. thirdSlide.dispatchEvent( new Event( 'touchend' ) ); expect( main.index ).toBe( 2 ); expect( sub.index ).toBe( 2 ); } ); } );