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

Hash test at 100%

This commit is contained in:
displaynone
2017-05-30 01:25:39 +02:00
parent ed9c3142b4
commit aa15d18dca

View File

@@ -1,12 +1,10 @@
import DOM from '../../src/js/utils/dom'; import DOM from '../../src/js/utils/dom';
import Hash from '../../src/js/plugins/hash'; import Hash from '../../src/js/plugins/hash';
beforeAll(() => { describe('Hash utility', () => {
document.body.innerHTML = document.body.innerHTML =
`<div id="webslides" data-test="test"><p>Text</p></div>`; `<div id="webslides" data-test="test"><p>Text</p></div>`;
});
test('Hash plugin', () => {
document.location.hash = '#slide=1'; document.location.hash = '#slide=1';
const goto = jest.fn(); const goto = jest.fn();
const ws = document.getElementById('webslides'); const ws = document.getElementById('webslides');
@@ -20,10 +18,13 @@ test('Hash plugin', () => {
el: ws el: ws
}; };
test('Make sure it has not changed the slide', () => {
expect(goto).not.toBeCalled(); expect(goto).not.toBeCalled();
});
new Hash(webslides); new Hash(webslides);
test('Move to slide 1', () => {
expect(Hash.getSlideNumber()).toBe(0); expect(Hash.getSlideNumber()).toBe(0);
DOM.fireEvent(ws, 'ws:slide-change', { DOM.fireEvent(ws, 'ws:slide-change', {
slides: 3, slides: 3,
@@ -35,4 +36,28 @@ test('Hash plugin', () => {
DOM.fireEvent(window, 'hashchange'); DOM.fireEvent(window, 'hashchange');
expect(goto.mock.calls.length).toBe(1); expect(goto.mock.calls.length).toBe(1);
});
test('Forces slide change', () => {
Hash.setSlideNumber(5);
const state = history.state;
expect(state.slideI).toBe(4);
});
test('Wrong hash', () => {
document.location.hash = 'slide=NaN';
DOM.fireEvent(window, 'hashchange');
// It shouldn't be call.
expect(goto.mock.calls.length).toBe(1);
expect(Hash.getSlideNumber()).toBe(null);
});
test('Repeat slide change', () => {
Hash.setSlideNumber(5);
let state = history.state;
expect(state.slideI).toBe(4);
Hash.setSlideNumber(5);
state = history.state;
expect(state.slideI).toBe(4);
});
}); });