UNPKG

@enact/sandstone

Version:

Large-screen/TV support library for Enact, containing a variety of UI components.

180 lines (178 loc) 8.26 kB
"use strict"; require("@testing-library/jest-dom"); var _react = require("@testing-library/react"); var _userEvent = _interopRequireDefault(require("@testing-library/user-event")); var _VideoPlayer = _interopRequireDefault(require("../VideoPlayer")); var _Button = require("../../Button"); var _MediaPlayer = require("../../MediaPlayer"); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } var focus = function focus(slider) { return _react.fireEvent.focus(slider); }; var keyDown = function keyDown(keyCode) { return function (elm) { return _react.fireEvent.keyDown(elm, { keyCode: keyCode }); }; }; var downKeyDown = keyDown(40); describe('VideoPlayer', function () { test('should fire `onPlaying` with `playing` type when playing event is fired', function () { var handlePlaying = jest.fn(); (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_VideoPlayer["default"], { "data-testid": "videoplayer-id", onPlaying: handlePlaying })); var video = _react.screen.getByTestId('videoplayer-id'); var playingEvent = (0, _react.createEvent)('playing', video); (0, _react.fireEvent)(video, playingEvent); var expected = { type: 'playing' }; var actual = handlePlaying.mock.calls.length && handlePlaying.mock.calls[0][0]; expect(actual).toMatchObject(expected); }); test('should fire `onControlsAvailable` with `onControlsAvailable` type when screen clicked', function () { var handleControlsAvailable = jest.fn(); (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_VideoPlayer["default"], { "data-testid": "videoplayer-id", onControlsAvailable: handleControlsAvailable })); var overlay = _react.screen.getByTestId('videoplayer-id').nextElementSibling; downKeyDown(overlay); var slider = _react.screen.getByRole('slider', { hidden: true }); focus(slider); // add to increase code coverage var expected = { type: 'onControlsAvailable' }; var actual = handleControlsAvailable.mock.calls.length && handleControlsAvailable.mock.calls[0][0]; expect(actual).toMatchObject(expected); }); test('should not to show media slider when noslider is true', /*#__PURE__*/_asyncToGenerator(function* () { var user = _userEvent["default"].setup(); (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_VideoPlayer["default"], { "data-testid": "videoplayer-id", noSlider: true })); var overlay = _react.screen.getByTestId('videoplayer-id').nextElementSibling; yield user.click(overlay); yield _react.screen.findByLabelText('go to previous'); var slider = _react.screen.queryByRole('slider', { hidden: true }); expect(slider).toBeNull(); })); test('should fire `onBack` with `onBack` type when clicking on back button', /*#__PURE__*/_asyncToGenerator(function* () { var handleBack = jest.fn(); var user = _userEvent["default"].setup(); (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_VideoPlayer["default"], { "data-testid": "videoplayer-id", onBack: handleBack })); var overlay = _react.screen.getByTestId('videoplayer-id').nextElementSibling; yield user.click(overlay); var expected = { type: 'onBack' }; yield _react.screen.findByLabelText('go to previous'); yield user.click(_react.screen.getByLabelText('go to previous')); var actual = handleBack.mock.calls.length && handleBack.mock.calls[0][0]; expect(actual).toMatchObject(expected); })); test('should toggle to show the media control', /*#__PURE__*/_asyncToGenerator(function* () { var user = _userEvent["default"].setup(); (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_VideoPlayer["default"], { "data-testid": "videoplayer-id" })); var overlay = _react.screen.getByTestId('videoplayer-id').nextElementSibling; yield user.click(overlay); yield _react.screen.findByLabelText('go to previous'); yield user.click(overlay); var backButton = _react.screen.queryByLabelText('go to previous'); expect(backButton).toBeNull(); })); test('should not to show the media control when disable is true', /*#__PURE__*/_asyncToGenerator(function* () { var user = _userEvent["default"].setup(); (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_VideoPlayer["default"], { "data-testid": "videoplayer-id", disabled: true })); var overlay = _react.screen.getByTestId('videoplayer-id').nextElementSibling; yield user.click(overlay); var backButton = _react.screen.queryByLabelText('go to previous'); expect(backButton).toBeNull(); })); test('should fire `onToggleMore` with `onToggleMore` type when ActionGide button clicked', /*#__PURE__*/_asyncToGenerator(function* () { var handleToggleMore = jest.fn(); var user = _userEvent["default"].setup(); (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_VideoPlayer["default"], { "data-testid": "videoplayer-id", onToggleMore: handleToggleMore, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_MediaPlayer.MediaControls, { actionGuideButtonAriaLabel: "This is ActionGide button", children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, { size: "small", icon: "list" }) }) })); var overlay = _react.screen.getByTestId('videoplayer-id').nextElementSibling; yield user.click(overlay); yield _react.screen.findByLabelText('go to previous'); var actionGuideButton = _react.screen.getByLabelText('This is ActionGide button'); var expected = { type: 'onToggleMore' }; yield user.click(actionGuideButton); yield (0, _react.waitFor)(function () { var actual = handleToggleMore.mock.calls.length && handleToggleMore.mock.calls[0][0]; expect(actual).toMatchObject(expected); }); })); test('should not to show the media control after the delay', /*#__PURE__*/_asyncToGenerator(function* () { jest.useFakeTimers(); var timeout = 100; var user = _userEvent["default"].setup({ advanceTimers: jest.advanceTimersByTime }); (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_VideoPlayer["default"], { "data-testid": "videoplayer-id", autoCloseTimeout: timeout })); var overlay = _react.screen.getByTestId('videoplayer-id').nextElementSibling; yield user.click(overlay); (0, _react.act)(function () { return jest.advanceTimersByTime(250); }); var backButton = _react.screen.queryByLabelText('go to previous'); expect(backButton).toBeNull(); jest.useRealTimers(); })); test('should not to show the title after the delay', /*#__PURE__*/_asyncToGenerator(function* () { jest.useFakeTimers(); var timeout = 100; var user = _userEvent["default"].setup({ advanceTimers: jest.advanceTimersByTime }); (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_VideoPlayer["default"], { "data-testid": "videoplayer-id", title: "Video Test", titleHideDelay: timeout })); var overlay = _react.screen.getByTestId('videoplayer-id').nextElementSibling; yield user.click(overlay); var titleFrame = _react.screen.getByText('Video Test').parentElement.parentElement.parentElement; expect(titleFrame).toHaveClass('visible'); (0, _react.act)(function () { return jest.advanceTimersByTime(250); }); expect(titleFrame).toHaveClass('hidden'); jest.useRealTimers(); })); });