@zohodesk/dot
Version:
In this Library, we Provide Some Basic Components to Build Your Application
193 lines (187 loc) • 6.39 kB
JavaScript
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
import React from 'react';
import { render, fireEvent, screen } from '@testing-library/react';
import AudioPlayer from "../AudioPlayer";
const DEFAULT_PROPS = {
minute: '02',
second: '03',
durationInSec: '203',
src: 'https://ypvnxx00-a.akamaihd.net/downloads/ringtones/files/mp3/yuvanringtone-44640.mp3'
};
describe('AudioPlayer - Snapshot', () => {
test('Render with default props', () => {
const {
asFragment
} = render( /*#__PURE__*/React.createElement(AudioPlayer, DEFAULT_PROPS));
expect(asFragment()).toMatchSnapshot();
});
test('Render with customId and testId', () => {
const {
asFragment
} = render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
customId: "audio-player-customId",
testId: "audio-player-testId"
})));
expect(asFragment()).toMatchSnapshot();
});
test('Render with tag attributes', () => {
const {
asFragment
} = render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
tagAttributes: {
'data-custom-attr': 'true'
}
})));
expect(asFragment()).toMatchSnapshot();
});
test('Render with a11y attributes', () => {
const {
asFragment
} = render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
a11yAttributes: {
role: 'region'
}
})));
expect(asFragment()).toMatchSnapshot();
});
test('Render with customClass', () => {
const {
asFragment
} = render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
customClass: "my-audio-player"
})));
expect(asFragment()).toMatchSnapshot();
});
test('Render with i18nKeys', () => {
const {
asFragment
} = render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
i18nKeys: {
play: 'Play',
pause: 'Pause'
}
})));
expect(asFragment()).toMatchSnapshot();
});
test('Render with needClose=false', () => {
const {
asFragment
} = render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
needClose: false
})));
expect(asFragment()).toMatchSnapshot();
});
test('Render with needDownload=false', () => {
const {
asFragment
} = render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
needDownload: false
})));
expect(asFragment()).toMatchSnapshot();
});
test('Render with needMuteIcon=true', () => {
const {
asFragment
} = render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
needMuteIcon: true
})));
expect(asFragment()).toMatchSnapshot();
});
test('Render with isPlay=true', () => {
const {
asFragment
} = render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
isPlay: true
})));
expect(asFragment()).toMatchSnapshot();
});
test('Render with timerFormat=ss:mm', () => {
const {
asFragment
} = render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
timerFormat: "ss:mm"
})));
expect(asFragment()).toMatchSnapshot();
});
test('Render with forwardStepInSec=10', () => {
const {
asFragment
} = render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
forwardStepInSec: 10
})));
expect(asFragment()).toMatchSnapshot();
});
test('Render with backwardStepInSec=10', () => {
const {
asFragment
} = render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
backwardStepInSec: 10
})));
expect(asFragment()).toMatchSnapshot();
});
test('Render with range=50', () => {
const {
asFragment
} = render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
range: 50
})));
expect(asFragment()).toMatchSnapshot();
});
});
describe('AudioPlayer - Unit', () => {
test('Should call togglePlayer on close button click', () => {
const togglePlayer = jest.fn();
render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
togglePlayer: togglePlayer
})));
const closeBtn = screen.queryByTestId('audioPlayerClose');
if (closeBtn) {
fireEvent.click(closeBtn);
expect(togglePlayer).toHaveBeenCalled();
}
});
test('Should call downloadFile on download button click', () => {
const downloadFile = jest.fn();
render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
downloadFile: downloadFile
})));
const downloadBtn = screen.queryByTestId('audioDownload');
if (downloadBtn) {
fireEvent.click(downloadBtn);
expect(downloadFile).toHaveBeenCalled();
}
});
test('Should toggle play/pause on play button click', () => {
const togglePlayer = jest.fn();
render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
togglePlayer: togglePlayer
})));
const playBtn = screen.queryByTestId('audioPlayPause');
if (playBtn) {
fireEvent.click(playBtn);
expect(togglePlayer).toHaveBeenCalled();
}
});
test('Should mute/unmute on mute button click', () => {
render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
needMuteIcon: true
})));
const muteBtn = screen.queryByTestId('audioMute');
if (muteBtn) {
fireEvent.click(muteBtn); // Add assertion if mute state is exposed via prop or DOM
}
});
test('Should change range on slider input', () => {
render( /*#__PURE__*/React.createElement(AudioPlayer, _extends({}, DEFAULT_PROPS, {
range: 0
})));
const rangeInput = screen.queryByTestId('audioRange');
if (rangeInput) {
fireEvent.change(rangeInput, {
target: {
value: 50
}
}); // Add assertion if range change is exposed via prop or DOM
}
});
});