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