import YouTube from '../../src/js/plugins/youtube';
import DOM from '../../src/js/utils/dom';
beforeAll(() => {
const video = '
';
document.body.innerHTML =
`${video}
`;
});
test('YouTube utility', () => {
const ws = document.getElementById('webslides');
const slides = ws.querySelectorAll('.slide');
const play = jest.fn();
const pause = jest.fn();
const destroy = jest.fn();
const create = jest.fn();
const webslides = {
el: ws,
slides: []
};
slides.forEach(slide => webslides.slides.push({el: slide}));
window.YT = {
Player: function(a, b) {
return {
getIframe: () => {
const div = DOM.createNode('div');
div.innerHTML =
``;
webslides.slides[0].el.appendChild(div);
return div.querySelector('iframe');
}
};
}
};
new YouTube(webslides);
expect(typeof window.onYouTubeIframeAPIReady).toBe('function');
const el = webslides.el.querySelector('[data-youtube]');
el.dataset.autoplay = true;
el.dataset.youtubeId = 'CQY3KUR3VzM';
window.onYouTubeIframeAPIReady();
const slide = {
slide: {
player: {
autoplay: true,
play: play,
pause: pause,
destroy: destroy,
create: create
}
}
};
DOM.fireEvent(webslides.slides[0].el, 'dom:enter', slide);
expect(play.mock.calls.length).toBe(0);
expect(pause.mock.calls.length).toBe(0);
expect(destroy.mock.calls.length).toBe(0);
expect(create.mock.calls.length).toBe(1);
DOM.fireEvent(webslides.slides[0].el, 'dom:leave', slide);
expect(play.mock.calls.length).toBe(0);
expect(pause.mock.calls.length).toBe(0);
expect(destroy.mock.calls.length).toBe(1);
expect(create.mock.calls.length).toBe(1);
DOM.fireEvent(webslides.slides[0].el, 'slide:enable', slide);
expect(play.mock.calls.length).toBe(1);
expect(pause.mock.calls.length).toBe(0);
expect(destroy.mock.calls.length).toBe(1);
expect(create.mock.calls.length).toBe(1);
DOM.fireEvent(webslides.slides[0].el, 'slide:disable', slide);
expect(play.mock.calls.length).toBe(1);
expect(pause.mock.calls.length).toBe(1);
expect(destroy.mock.calls.length).toBe(1);
expect(create.mock.calls.length).toBe(1);
});