@enact/sandstone
Version:
Large-screen/TV support library for Enact, containing a variety of UI components.
180 lines (178 loc) • 8.26 kB
JavaScript
;
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();
}));
});