UNPKG

@zohodesk/dot

Version:

In this Library, we Provide Some Basic Components to Build Your Application

193 lines (187 loc) 6.39 kB
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 } }); });