import { minimum } from '../data/html';
import Splide from '../../src/js/splide';
import { COMPLETE } from '../../src/js/components';
describe( 'Event', () => {
let splide;
beforeEach( () => {
document.body.innerHTML = minimum;
splide = new Splide( '#splide', {}, COMPLETE );
} );
test( '"mounted" should be emitted after components are mounted.', () => {
const callback = jest.fn();
splide.on( 'mounted', callback );
splide.mount();
expect( callback ).toHaveBeenCalledTimes( 1 );
} );
test( '"updated" should be emitted after options are updated.', () => {
const callback = jest.fn();
splide.on( 'updated', callback );
splide.mount();
expect( callback ).not.toHaveBeenCalled();
splide.options = { perView: 2 };
expect( callback ).toHaveBeenCalledTimes( 1 );
} );
test( '"move"/"moved" should be emitted before/after a slider moves and should provide some indexes.', () => {
const moveCallback = jest.fn();
const movedCallback = jest.fn();
splide.mount();
splide.on( 'move', moveCallback );
splide.on( 'moved', movedCallback );
splide.go( '+1' );
expect( moveCallback ).toHaveBeenCalledWith( 1, 0, 1 );
expect( movedCallback ).toHaveBeenCalledWith( 1, 0, 1 );
} );
test( '"updated" should be emitted after options are updated.', () => {
const callback = jest.fn();
splide.on( 'updated', callback );
splide.mount();
expect( callback ).not.toHaveBeenCalled();
splide.options = { perView: 2 };
expect( callback ).toHaveBeenCalledTimes( 1 );
} );
} );