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 );
	} );
} );