general.test.ts 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import {
  2. CLASS_ACTIVE,
  3. CLASS_ARROW_NEXT,
  4. CLASS_ARROW_PREV,
  5. CLASS_LIST,
  6. CLASS_PROGRESS_BAR,
  7. CLASS_ROOT,
  8. CLASS_TOGGLE,
  9. CLASS_TRACK,
  10. } from '../../../constants/classes';
  11. import { RTL } from '../../../constants/directions';
  12. import { init } from '../../../test';
  13. describe('Elements', () => {
  14. test('can collect essential elements.', () => {
  15. const splide = init({}, { autoplay: true, arrows: true, progress: true });
  16. const { Elements } = splide.Components;
  17. expect(Elements.root.classList.contains(CLASS_ROOT)).toBe(true);
  18. expect(Elements.track.classList.contains(CLASS_TRACK)).toBe(true);
  19. expect(Elements.list.classList.contains(CLASS_LIST)).toBe(true);
  20. expect(Elements.slides.length).toBe(splide.length);
  21. expect(Elements.prev.classList.contains(CLASS_ARROW_PREV)).toBe(true);
  22. expect(Elements.next.classList.contains(CLASS_ARROW_NEXT)).toBe(true);
  23. expect(Elements.bar.classList.contains(CLASS_PROGRESS_BAR)).toBe(true);
  24. expect(Elements.toggle.classList.contains(CLASS_TOGGLE)).toBe(true);
  25. });
  26. test('can assign unique IDs to root, track and list elements.', () => {
  27. const splide = init({}, { autoplay: true, arrows: true, progress: true });
  28. const { Elements } = splide.Components;
  29. const { id } = Elements.root;
  30. expect(id).not.toBe('');
  31. expect(Elements.track.id).toBe(`${ id }-track`);
  32. expect(Elements.list.id).toBe(`${ id }-list`);
  33. });
  34. test('can add classes to root element.', () => {
  35. const splide = init({ type: 'loop', direction: RTL, isNavigation: true });
  36. const { classList } = splide.root;
  37. const contains = classList.contains.bind(classList);
  38. expect(contains(`${ CLASS_ROOT }--loop`)).toBe(true);
  39. expect(contains(`${ CLASS_ROOT }--slide`)).toBe(false);
  40. expect(contains(`${ CLASS_ROOT }--fade`)).toBe(false);
  41. expect(contains(`${ CLASS_ROOT }--rtl`)).toBe(true);
  42. expect(contains(`${ CLASS_ROOT }--ltr`)).toBe(false);
  43. expect(contains(`${ CLASS_ROOT }--ttb`)).toBe(false);
  44. expect(contains(`${ CLASS_ROOT }--draggable`)).toBe(true);
  45. expect(contains(`${ CLASS_ROOT }--nav`)).toBe(true);
  46. expect(contains(CLASS_ACTIVE)).toBe(true);
  47. });
  48. test('should not collect nested slider elements.', () => {
  49. const html = `
  50. <div class="splide">
  51. <div class="splide__track">
  52. <ul class="splide__list">
  53. <div class="splide__slide">
  54. <div id="nested-splide" class="splide">
  55. <div id="nested-splide-track" class="splide__track">
  56. <ul id="nested-splide-list" class="splide__list">
  57. <div id="nested-splide-slide" class="splide__slide">
  58. </div>
  59. </ul>
  60. </div>
  61. </div>
  62. </div>
  63. </ul>
  64. </div>
  65. </div>
  66. `;
  67. const splide = init({}, { html });
  68. const { Elements } = splide.Components;
  69. expect(Elements.track.id).not.toBe('nested-splide-track');
  70. expect(Elements.list.id).not.toBe('nested-splide-list');
  71. expect(Elements.slides.length).toBe(1);
  72. });
  73. });