From 8e6b60906871f1374b60fcef9262defbf7f17812 Mon Sep 17 00:00:00 2001 From: displaynone Date: Tue, 23 May 2017 21:04:18 +0200 Subject: [PATCH] New test: webslides --- test/modules/webslides.test.js | 76 ++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 test/modules/webslides.test.js diff --git a/test/modules/webslides.test.js b/test/modules/webslides.test.js new file mode 100644 index 0000000..eda27ae --- /dev/null +++ b/test/modules/webslides.test.js @@ -0,0 +1,76 @@ +import DOM from '../../src/js/utils/dom'; + +jest.useFakeTimers(); + +beforeAll(() => { + const slides = '
Content
'.repeat(20); + document.body.innerHTML = `
${slides}
`; +}); + +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); + +});