1
0
mirror of https://github.com/webslides/WebSlides.git synced 2025-08-17 18:37:00 +02:00

New test: webslides

This commit is contained in:
displaynone
2017-05-23 21:04:18 +02:00
parent 73ee831593
commit 8e6b609068

View File

@@ -0,0 +1,76 @@
import DOM from '../../src/js/utils/dom';
jest.useFakeTimers();
beforeAll(() => {
const slides = '<section class="slide"><div class="content">Content</section>'.repeat(20);
document.body.innerHTML = `<div id="webslides">${slides}<div id="other"></div></div>`;
});
test('WebSlides utility', () => {
let webslides;
// Needs to be required and not imported because const defined in top level
// in utils/scroll-to
const WebSlides = require('../../src/js/modules/webslides');
const ws = document.getElementById('webslides');
const change = jest.fn();
expect(() => {
ws.setAttribute('id', '');
webslides = new WebSlides.default();
}).toThrow();
ws.setAttribute('id', 'webslides');
expect(() => {
webslides = new WebSlides.default();
}).not.toThrow();
webslides.el.addEventListener('ws:slide-change', change);
expect(document.getElementById('other')).toBe(null);
expect(webslides.slides.length).toBe(document.querySelectorAll('#webslides .slide').length);
webslides.slides.forEach( slide => {
expect(typeof slide).toBe('object');
});
expect(webslides.plugins.autoslide).not.toBe(null);
expect(webslides.plugins.clickNav).not.toBe(null);
expect(webslides.plugins.grid).not.toBe(null);
expect(webslides.plugins.hash).not.toBe(null);
expect(webslides.plugins.keyboard).not.toBe(null);
expect(webslides.plugins.nav).not.toBe(null);
expect(webslides.plugins.scroll).not.toBe(null);
expect(webslides.plugins.touch).not.toBe(null);
expect(webslides.plugins.video).not.toBe(null);
expect(webslides.plugins.youtube).not.toBe(null);
expect(webslides.plugins.zoom).not.toBe(null);
expect(change.mock.calls.length).toBe(0);
webslides.goToSlide(2, true);
// Wait until next execution
jest.runTimersToTime(501);
expect(change.mock.calls.length).toBe(1);
expect(document.querySelector('#webslides .slide').getAttribute('id'))
.toBe(webslides.slides[1].el.getAttribute('id'));
webslides.goPrev();
// Wait until next execution
jest.runTimersToTime(501);
expect(change.mock.calls.length).toBe(2);
expect(document.querySelector('#webslides .slide').getAttribute('id'))
.toBe(webslides.slides[1].el.getAttribute('id'));
webslides.goNext();
// Wait until next execution
jest.runTimersToTime(501);
expect(change.mock.calls.length).toBe(3);
expect(document.querySelector('#webslides .slide').getAttribute('id'))
.toBe(webslides.slides[2].el.getAttribute('id'));
const zoom = document.getElementById('webslides-zoomed');
expect(zoom).not.toBe(null);
expect(webslides.el.style.display).toBe('');
expect(zoom.style.display).toBe('none');
webslides.toggleZoom();
webslides.disable();
expect(webslides.el.classList.contains('disabled')).toBe(true);
expect(webslides.isDisabled()).toBe(true);
webslides.enable();
expect(webslides.isDisabled()).toBe(false);
});