56 lines
1.9 KiB
TypeScript
56 lines
1.9 KiB
TypeScript
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
import { mock } from 'vitest-mock-extended';
|
|
|
|
import { FullscreenProviderFactory } from '../../../src/card-controller/fullscreen/factory';
|
|
import { ScreenfullFullScreenProvider } from '../../../src/card-controller/fullscreen/screenfull';
|
|
import { WebkitFullScreenProvider } from '../../../src/card-controller/fullscreen/webkit';
|
|
import type { WebkitHTMLVideoElement } from '../../../src/types';
|
|
import { createCardAPI, setScreenfulEnabled } from '../../test-utils';
|
|
|
|
// @vitest-environment jsdom
|
|
describe('FullscreenProviderFactory', () => {
|
|
afterEach(() => {
|
|
vi.unstubAllGlobals();
|
|
});
|
|
|
|
it('should return screenful when enabled', () => {
|
|
setScreenfulEnabled(true);
|
|
|
|
expect(FullscreenProviderFactory.create(createCardAPI(), vi.fn())).toBeInstanceOf(
|
|
ScreenfullFullScreenProvider,
|
|
);
|
|
});
|
|
|
|
it('should return webkit when enabled', () => {
|
|
setScreenfulEnabled(false);
|
|
|
|
const element = document.createElement('video') as HTMLVideoElement &
|
|
Partial<WebkitHTMLVideoElement>;
|
|
element['webkitEnterFullscreen'] = vi.fn();
|
|
|
|
const stubDocument = mock<Document>();
|
|
stubDocument.createElement.mockReturnValue(element);
|
|
|
|
vi.stubGlobal('document', stubDocument);
|
|
|
|
expect(FullscreenProviderFactory.create(createCardAPI(), vi.fn())).toBeInstanceOf(
|
|
WebkitFullScreenProvider,
|
|
);
|
|
});
|
|
|
|
it('should return null without any provider', () => {
|
|
setScreenfulEnabled(false);
|
|
|
|
const element = document.createElement('video') as HTMLVideoElement &
|
|
Partial<WebkitHTMLVideoElement>;
|
|
element['webkitEnterFullscreen'] = undefined;
|
|
|
|
const stubDocument = mock<Document>();
|
|
stubDocument.createElement.mockReturnValue(element);
|
|
|
|
vi.stubGlobal('document', stubDocument);
|
|
|
|
expect(FullscreenProviderFactory.create(createCardAPI(), vi.fn())).toBeNull();
|
|
});
|
|
});
|