slide.test.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { minimum } from '../data/html';
  2. import Splide from '../../src/js/splide';
  3. import { STATUS_CLASSES } from "../../src/js/constants/classes";
  4. import { COMPLETE } from '../../src/js/components';
  5. describe( 'The "slide" type Splide', () => {
  6. let splide;
  7. beforeEach( () => {
  8. document.body.innerHTML = minimum;
  9. splide = new Splide( '#splide', {}, COMPLETE ).mount();
  10. } );
  11. test( 'should init index and slide attributes correctly.', () => {
  12. expect( splide.index ).toBe( 0 );
  13. const Slide = splide.Components.Slides.getSlide( splide.index );
  14. const classList = Slide.slide.classList;
  15. expect( classList.contains( STATUS_CLASSES.active ) ).toBe( true );
  16. expect( classList.contains( STATUS_CLASSES.visible ) ).toBe( true );
  17. } );
  18. test( 'should move slides and update attributes correctly.', done => {
  19. const { Track, Elements: { track, list } } = splide.Components;
  20. Object.defineProperty( track, 'clientWidth', { value: 800 } );
  21. expect( parseInt( Track.position ) ).toBe( 0 );
  22. splide.on( 'moved', ( newIndex, prevIndex ) => {
  23. expect( Track.position ).toBe( -800 );
  24. const prevSlide = splide.Components.Slides.getSlide( prevIndex );
  25. const newSlide = splide.Components.Slides.getSlide( newIndex );
  26. const prevClasses = prevSlide.slide.classList;
  27. const newClasses = newSlide.slide.classList;
  28. expect( prevSlide.index ).toBe( 0 );
  29. expect( newSlide.index ).toBe( 1 );
  30. expect( prevClasses.contains( STATUS_CLASSES.active ) ).toBe( false );
  31. expect( prevClasses.contains( STATUS_CLASSES.visible ) ).toBe( false );
  32. expect( newClasses.contains( STATUS_CLASSES.active ) ).toBe( true );
  33. expect( newClasses.contains( STATUS_CLASSES.visible ) ).toBe( true );
  34. done();
  35. } );
  36. splide.go( '+' );
  37. list.dispatchEvent( new Event( 'transitionend' ) );
  38. } );
  39. test( 'should not rewind index.', () => {
  40. expect( splide.index ).toBe( 0 );
  41. splide.go( '-' );
  42. expect( splide.index ).toBe( 0 );
  43. } );
  44. } );