import { CLASS_ACTIVE, CLASS_ARROW_NEXT, CLASS_ARROW_PREV, CLASS_LIST, CLASS_PROGRESS_BAR, CLASS_ROOT, CLASS_TOGGLE, CLASS_TRACK, } from '../../../constants/classes'; import { RTL } from '../../../constants/directions'; import { init } from '../../../test'; describe( 'Elements', () => { test( 'can collect essential elements.', () => { const splide = init( {}, { autoplay: true, arrows: true, progress: true } ); const { Elements } = splide.Components; expect( Elements.root.classList.contains( CLASS_ROOT ) ).toBe( true ); expect( Elements.track.classList.contains( CLASS_TRACK ) ).toBe( true ); expect( Elements.list.classList.contains( CLASS_LIST ) ).toBe( true ); expect( Elements.slides.length ).toBe( splide.length ); expect( Elements.prev.classList.contains( CLASS_ARROW_PREV ) ).toBe( true ); expect( Elements.next.classList.contains( CLASS_ARROW_NEXT ) ).toBe( true ); expect( Elements.bar.classList.contains( CLASS_PROGRESS_BAR ) ).toBe( true ); expect( Elements.toggle.classList.contains( CLASS_TOGGLE ) ).toBe( true ); } ); test( 'can assign unique IDs to root, track and list elements.', () => { const splide = init( {}, { autoplay: true, arrows: true, progress: true } ); const { Elements } = splide.Components; const { id } = Elements.root; expect( id ).not.toBe( '' ); expect( Elements.track.id ).toBe( `${ id }-track` ); expect( Elements.list.id ).toBe( `${ id }-list` ); } ); test( 'can add classes to root element.', () => { const splide = init( { type: 'loop', direction: RTL, isNavigation: true } ); const { classList } = splide.root; const contains = classList.contains.bind( classList ); expect( contains( `${ CLASS_ROOT }--loop` ) ).toBe( true ); expect( contains( `${ CLASS_ROOT }--slide` ) ).toBe( false ); expect( contains( `${ CLASS_ROOT }--fade` ) ).toBe( false ); expect( contains( `${ CLASS_ROOT }--rtl` ) ).toBe( true ); expect( contains( `${ CLASS_ROOT }--ltr` ) ).toBe( false ); expect( contains( `${ CLASS_ROOT }--ttb` ) ).toBe( false ); expect( contains( `${ CLASS_ROOT }--draggable` ) ).toBe( true ); expect( contains( `${ CLASS_ROOT }--nav` ) ).toBe( true ); expect( contains( CLASS_ACTIVE ) ).toBe( true ); } ); test( 'should not collect nested slider elements.', () => { const html = `
`; const splide = init( {}, { html } ); const { Elements } = splide.Components; expect( Elements.track.id ).not.toBe( 'nested-splide-track' ); expect( Elements.list.id ).not.toBe( 'nested-splide-list' ); expect( Elements.slides.length ).toBe( 1 ); } ); } );