@exadel/esl
Version:
Exadel Smart Library (ESL) is the lightweight custom elements library that provide a set of super-flexible components
159 lines (158 loc) • 7.73 kB
JavaScript
import { ESLCarousel } from '../../core';
describe('ESLCarousel: Slides Collection methods', () => {
class CarouselMock extends ESLCarousel {
constructor() {
super(...arguments);
this.mockSlides = [];
}
get $slides() { return this.mockSlides; }
setMockActiveSlides(slides) {
this.mockSlides = slides.map((active, index) => {
const slide = document.createElement('div');
slide.setAttribute('esl-carousel-slide', '');
slide.toggleAttribute('active', active);
return slide;
});
}
}
CarouselMock.is = 'esl-carousel-dummy';
CarouselMock.register();
describe('ESlCarousel#activeIndex and ESlCarousel#$activeSlide resolves start active slide form carousel collection', () => {
const mock = new CarouselMock();
mock.count = '3';
test('No slides', () => {
mock.setMockActiveSlides([]);
expect(mock.activeIndex).toBe(-1);
expect(mock.$activeSlide).toBe(undefined);
});
test('No active slides', () => {
mock.setMockActiveSlides([false, false, false]);
expect(mock.activeIndex).toBe(-1);
expect(mock.$activeSlide).toBe(undefined);
});
test('One active slide', () => {
mock.setMockActiveSlides([true]);
expect(mock.activeIndex).toBe(0);
expect(mock.$activeSlide).toBe(mock.$slides[0]);
});
test('One active group', () => {
mock.setMockActiveSlides([true, true, true]);
expect(mock.activeIndex).toBe(0);
expect(mock.$activeSlide).toBe(mock.$slides[0]);
});
test('Full carousel first slide active', () => {
mock.setMockActiveSlides([true, false, false, false, false]);
expect(mock.activeIndex).toBe(0);
expect(mock.$activeSlide).toBe(mock.$slides[0]);
});
test('Full carousel last slide active', () => {
mock.setMockActiveSlides([false, false, false, false, true]);
expect(mock.activeIndex).toBe(4);
expect(mock.$activeSlide).toBe(mock.$slides[4]);
});
test('Full carousel middle slide active', () => {
mock.setMockActiveSlides([false, false, true, false, false]);
expect(mock.activeIndex).toBe(2);
expect(mock.$activeSlide).toBe(mock.$slides[2]);
});
test('Full carousel first group active', () => {
mock.setMockActiveSlides([true, true, true, false, false]);
expect(mock.activeIndex).toBe(0);
expect(mock.$activeSlide).toBe(mock.$slides[0]);
});
test('Full carousel last group active', () => {
mock.setMockActiveSlides([false, false, true, true, true]);
expect(mock.activeIndex).toBe(2);
expect(mock.$activeSlide).toBe(mock.$slides[2]);
});
test('Full carousel middle group active', () => {
mock.setMockActiveSlides([false, true, true, true, false]);
expect(mock.activeIndex).toBe(1);
expect(mock.$activeSlide).toBe(mock.$slides[1]);
});
test('Full carousel cross group active', () => {
mock.setMockActiveSlides([true, false, false, false, true]);
expect(mock.activeIndex).toBe(4);
expect(mock.$activeSlide).toBe(mock.$slides[4]);
});
test('Full carousel cross group active (long start)', () => {
mock.setMockActiveSlides([true, false, false, true, true]);
expect(mock.activeIndex).toBe(3);
expect(mock.$activeSlide).toBe(mock.$slides[3]);
});
test('Full carousel cross group active (long tile)', () => {
mock.setMockActiveSlides([true, true, false, false, true]);
expect(mock.activeIndex).toBe(4);
expect(mock.$activeSlide).toBe(mock.$slides[4]);
});
});
describe('ESlCarousel#activeIndexes and ESlCarousel#$activeSlides resolves active slides indexes form carousel collection', () => {
const mock = new CarouselMock();
mock.count = '3';
test('No slides', () => {
mock.setMockActiveSlides([]);
expect(mock.activeIndexes).toEqual([]);
expect(mock.$activeSlides).toEqual([]);
});
test('No active slides', () => {
mock.setMockActiveSlides([false, false, false]);
expect(mock.activeIndexes).toEqual([]);
expect(mock.$activeSlides).toEqual([]);
});
test('One active slide', () => {
mock.setMockActiveSlides([true]);
expect(mock.activeIndexes).toEqual([0]);
expect(mock.$activeSlides).toEqual([mock.$slides[0]]);
});
test('One active group', () => {
mock.setMockActiveSlides([true, true, true]);
expect(mock.activeIndexes).toEqual([0, 1, 2]);
expect(mock.$activeSlides).toEqual([mock.$slides[0], mock.$slides[1], mock.$slides[2]]);
});
test('Full carousel first slide active', () => {
mock.setMockActiveSlides([true, false, false, false, false]);
expect(mock.activeIndexes).toEqual([0]);
expect(mock.$activeSlides).toEqual([mock.$slides[0]]);
});
test('Full carousel last slide active', () => {
mock.setMockActiveSlides([false, false, false, false, true]);
expect(mock.activeIndexes).toEqual([4]);
expect(mock.$activeSlides).toEqual([mock.$slides[4]]);
});
test('Full carousel middle slide active', () => {
mock.setMockActiveSlides([false, false, true, false, false]);
expect(mock.activeIndexes).toEqual([2]);
expect(mock.$activeSlides).toEqual([mock.$slides[2]]);
});
test('Full carousel first group active', () => {
mock.setMockActiveSlides([true, true, true, false, false]);
expect(mock.activeIndexes).toEqual([0, 1, 2]);
expect(mock.$activeSlides).toEqual([mock.$slides[0], mock.$slides[1], mock.$slides[2]]);
});
test('Full carousel last group active', () => {
mock.setMockActiveSlides([false, false, true, true, true]);
expect(mock.activeIndexes).toEqual([2, 3, 4]);
expect(mock.$activeSlides).toEqual([mock.$slides[2], mock.$slides[3], mock.$slides[4]]);
});
test('Full carousel middle group active', () => {
mock.setMockActiveSlides([false, true, true, true, false]);
expect(mock.activeIndexes).toEqual([1, 2, 3]);
expect(mock.$activeSlides).toEqual([mock.$slides[1], mock.$slides[2], mock.$slides[3]]);
});
test('Full carousel cross group active', () => {
mock.setMockActiveSlides([true, false, false, false, true]);
expect(mock.activeIndexes).toEqual([4, 0]);
expect(mock.$activeSlides).toEqual([mock.$slides[4], mock.$slides[0]]);
});
test('Full carousel cross group active (long start)', () => {
mock.setMockActiveSlides([true, false, false, true, true]);
expect(mock.activeIndexes).toEqual([3, 4, 0]);
expect(mock.$activeSlides).toEqual([mock.$slides[3], mock.$slides[4], mock.$slides[0]]);
});
test('Full carousel cross group active (long tile)', () => {
mock.setMockActiveSlides([true, true, false, false, true]);
expect(mock.activeIndexes).toEqual([4, 0, 1]);
expect(mock.$activeSlides).toEqual([mock.$slides[4], mock.$slides[0], mock.$slides[1]]);
});
});
});