Skip to content

Commit

Permalink
test(esl-carousel): ESLCarouselRenderer base class tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ala-n committed Apr 10, 2024
1 parent d27dcb2 commit bafd8d0
Show file tree
Hide file tree
Showing 2 changed files with 210 additions and 0 deletions.
210 changes: 210 additions & 0 deletions src/modules/esl-carousel/test/core/esl-carousel.renderer.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
import {ESLCarousel} from '../../core/esl-carousel';
import {ESLCarouselSlide} from '../../core/esl-carousel.slide';
import {ESLCarouselDummyRenderer} from '../common/esl-carousel.dummy.renderer';

jest.mock('../../../esl-utils/dom/ready', () => ({
onDocumentReady: (cb: any) => cb()
}));

describe('ESLCarouselRenderer: base class tests', () => {
ESLCarousel.register();
ESLCarouselDummyRenderer.register();

describe('Slide markers defined correctly (`setActive` method of the base class)', () => {
const $carousel = ESLCarousel.create();
const $slides = Array.from({length: 5}, () => ESLCarouselSlide.create());

beforeAll(async () => {
document.body.appendChild($carousel);
await ESLCarousel.registered;
$slides.forEach(($slide) => $carousel.addSlide($slide));
});
afterAll(() => document.body.removeChild($carousel));

test('Carousel size defined correctly', () => {
expect($carousel.size).toBe(5);
});

describe('3 slides visible, no loop', () => {
beforeAll(async () => {
$carousel.count = '3';
$carousel.loop = 'false';
await Promise.resolve();
});

test('Renderer initialized correctly', () => {
expect($carousel.renderer).toBeInstanceOf(ESLCarouselDummyRenderer);
});
test('Carousel config defined correctly', () => {
expect($carousel.config).toEqual(expect.objectContaining({count: 3, size: 5, loop: false}));
});

test('First slide set active slides defined correctly', () => {
$carousel.renderer.setActive(0);
expect($carousel.$slides.map(($slide) => $slide.active)).toEqual([true, true, true, false, false]);
});
test('Middle slide set active slides defined correctly', () => {
$carousel.renderer.setActive(1);
expect($carousel.$slides.map(($slide) => $slide.active)).toEqual([false, true, true, true, false]);
});
test('Last slide set active slides defined correctly', () => {
$carousel.renderer.setActive(2);
expect($carousel.$slides.map(($slide) => $slide.active)).toEqual([false, false, true, true, true]);
});

test('First slide set next marker defined correctly', () => {
$carousel.renderer.setActive(0);
expect($carousel.$slides.map(($slide) => $slide.next)).toEqual([false, false, false, true, false]);
});
test('Middle slide set next marker defined correctly', () => {
$carousel.renderer.setActive(1);
expect($carousel.$slides.map(($slide) => $slide.next)).toEqual([false, false, false, false, true]);
});
test('Last slide set next marker defined correctly', () => {
$carousel.renderer.setActive(2);
expect($carousel.$slides.map(($slide) => $slide.next)).toEqual([false, false, false, false, false]);
});

test('First slide set prev marker defined correctly', () => {
$carousel.renderer.setActive(0);
expect($carousel.$slides.map(($slide) => $slide.prev)).toEqual([false, false, false, false, false]);
});
test('Middle slide set prev marker defined correctly', () => {
$carousel.renderer.setActive(1);
expect($carousel.$slides.map(($slide) => $slide.prev)).toEqual([true, false, false, false, false]);
});
test('Last slide set prev marker defined correctly', () => {
$carousel.renderer.setActive(2);
expect($carousel.$slides.map(($slide) => $slide.prev)).toEqual([false, true, false, false, false]);
});
});

describe('3 slides visible, loop', () => {
beforeAll(async () => {
$carousel.count = '3';
$carousel.loop = 'true';
await Promise.resolve();
});

test('Renderer initialized correctly', () => {
expect($carousel.renderer).toBeInstanceOf(ESLCarouselDummyRenderer);
});
test('Carousel config defined correctly', () => {
expect($carousel.config).toEqual(expect.objectContaining({count: 3, size: 5, loop: true}));
});

test('First slide set active slides defined correctly', () => {
$carousel.renderer.setActive(0);
expect($carousel.$slides.map(($slide) => $slide.active)).toEqual([true, true, true, false, false]);
});
test('Second slide set active slides defined correctly', () => {
$carousel.renderer.setActive(1);
expect($carousel.$slides.map(($slide) => $slide.active)).toEqual([false, true, true, true, false]);
});
test('Third slide set active slides defined correctly', () => {
$carousel.renderer.setActive(2);
expect($carousel.$slides.map(($slide) => $slide.active)).toEqual([false, false, true, true, true]);
});
test('Fourth slide set active slides defined correctly', () => {
$carousel.renderer.setActive(3);
expect($carousel.$slides.map(($slide) => $slide.active)).toEqual([true, false, false, true, true]);
});
test('Fifth slide set active slides defined correctly', () => {
$carousel.renderer.setActive(4);
expect($carousel.$slides.map(($slide) => $slide.active)).toEqual([true, true, false, false, true]);
});

test('First slide set next marker defined correctly', () => {
$carousel.renderer.setActive(0);
expect($carousel.$slides.map(($slide) => $slide.next)).toEqual([false, false, false, true, false]);
});
test('Second slide set next marker defined correctly', () => {
$carousel.renderer.setActive(1);
expect($carousel.$slides.map(($slide) => $slide.next)).toEqual([false, false, false, false, true]);
});
test('Third slide set next marker defined correctly', () => {
$carousel.renderer.setActive(2);
expect($carousel.$slides.map(($slide) => $slide.next)).toEqual([true, false, false, false, false]);
});
test('Fourth slide set next marker defined correctly', () => {
$carousel.renderer.setActive(3);
expect($carousel.$slides.map(($slide) => $slide.next)).toEqual([false, true, false, false, false]);
});
test('Fifth slide set next marker defined correctly', () => {
$carousel.renderer.setActive(4);
expect($carousel.$slides.map(($slide) => $slide.next)).toEqual([false, false, true, false, false]);
});

test('First slide set prev marker defined correctly', () => {
$carousel.renderer.setActive(0);
expect($carousel.$slides.map(($slide) => $slide.prev)).toEqual([false, false, false, false, true]);
});
test('Second slide set prev marker defined correctly', () => {
$carousel.renderer.setActive(1);
expect($carousel.$slides.map(($slide) => $slide.prev)).toEqual([true, false, false, false, false]);
});
test('Third slide set prev marker defined correctly', () => {
$carousel.renderer.setActive(2);
expect($carousel.$slides.map(($slide) => $slide.prev)).toEqual([false, true, false, false, false]);
});
test('Fourth slide set prev marker defined correctly', () => {
$carousel.renderer.setActive(3);
expect($carousel.$slides.map(($slide) => $slide.prev)).toEqual([false, false, true, false, false]);
});
test('Fifth slide set prev marker defined correctly', () => {
$carousel.renderer.setActive(4);
expect($carousel.$slides.map(($slide) => $slide.prev)).toEqual([false, false, false, true, false]);
});
});

describe('5 slides visible (full), no loop', () => {
beforeAll(async () => {
$carousel.count = '5';
$carousel.loop = 'false';
await Promise.resolve();
});

test('Carousel config defined correctly', () => {
expect($carousel.config).toEqual(expect.objectContaining({count: 5, size: 5, loop: false}));
});

test('The only slide set have all active slides', () => {
$carousel.renderer.setActive(0);
expect($carousel.$slides.map(($slide) => $slide.active)).toEqual([true, true, true, true, true]);
});
test('The only slide set have no next slides', () => {
$carousel.renderer.setActive(0);
expect($carousel.$slides.map(($slide) => $slide.next)).toEqual([false, false, false, false, false]);
});
test('The only slide set have no prev slides', () => {
$carousel.renderer.setActive(0);
expect($carousel.$slides.map(($slide) => $slide.prev)).toEqual([false, false, false, false, false]);
});
});

describe('5 slides visible (full), loop', () => {
beforeAll(async () => {
$carousel.count = '5';
$carousel.loop = 'true';
await Promise.resolve();
});

test('Carousel config defined correctly', () => {
expect($carousel.config).toEqual(expect.objectContaining({count: 5, size: 5, loop: true}));
});

test('First slide set have all active slides', () => {
$carousel.renderer.setActive(0);
expect($carousel.$slides.map(($slide) => $slide.active)).toEqual([true, true, true, true, true]);
});
test('First slide set have no next slides', () => {
$carousel.renderer.setActive(0);
expect($carousel.$slides.map(($slide) => $slide.next)).toEqual([false, false, false, false, false]);
});
test('First slide set have no prev slides', () => {
$carousel.renderer.setActive(0);
expect($carousel.$slides.map(($slide) => $slide.prev)).toEqual([false, false, false, false, false]);
});
});
});
});

0 comments on commit bafd8d0

Please sign in to comment.