UNPKG

@zohodesk/dot

Version:

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

192 lines (187 loc) 5.87 kB
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, { ...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, { ...DEFAULT_PROPS, tagAttributes: { 'data-custom-attr': 'true' } })); expect(asFragment()).toMatchSnapshot(); }); test('Render with a11y attributes', () => { const { asFragment } = render( /*#__PURE__*/React.createElement(AudioPlayer, { ...DEFAULT_PROPS, a11yAttributes: { role: 'region' } })); expect(asFragment()).toMatchSnapshot(); }); test('Render with customClass', () => { const { asFragment } = render( /*#__PURE__*/React.createElement(AudioPlayer, { ...DEFAULT_PROPS, customClass: "my-audio-player" })); expect(asFragment()).toMatchSnapshot(); }); test('Render with i18nKeys', () => { const { asFragment } = render( /*#__PURE__*/React.createElement(AudioPlayer, { ...DEFAULT_PROPS, i18nKeys: { play: 'Play', pause: 'Pause' } })); expect(asFragment()).toMatchSnapshot(); }); test('Render with needClose=false', () => { const { asFragment } = render( /*#__PURE__*/React.createElement(AudioPlayer, { ...DEFAULT_PROPS, needClose: false })); expect(asFragment()).toMatchSnapshot(); }); test('Render with needDownload=false', () => { const { asFragment } = render( /*#__PURE__*/React.createElement(AudioPlayer, { ...DEFAULT_PROPS, needDownload: false })); expect(asFragment()).toMatchSnapshot(); }); test('Render with needMuteIcon=true', () => { const { asFragment } = render( /*#__PURE__*/React.createElement(AudioPlayer, { ...DEFAULT_PROPS, needMuteIcon: true })); expect(asFragment()).toMatchSnapshot(); }); test('Render with isPlay=true', () => { const { asFragment } = render( /*#__PURE__*/React.createElement(AudioPlayer, { ...DEFAULT_PROPS, isPlay: true })); expect(asFragment()).toMatchSnapshot(); }); test('Render with timerFormat=ss:mm', () => { const { asFragment } = render( /*#__PURE__*/React.createElement(AudioPlayer, { ...DEFAULT_PROPS, timerFormat: "ss:mm" })); expect(asFragment()).toMatchSnapshot(); }); test('Render with forwardStepInSec=10', () => { const { asFragment } = render( /*#__PURE__*/React.createElement(AudioPlayer, { ...DEFAULT_PROPS, forwardStepInSec: 10 })); expect(asFragment()).toMatchSnapshot(); }); test('Render with backwardStepInSec=10', () => { const { asFragment } = render( /*#__PURE__*/React.createElement(AudioPlayer, { ...DEFAULT_PROPS, backwardStepInSec: 10 })); expect(asFragment()).toMatchSnapshot(); }); test('Render with range=50', () => { const { asFragment } = render( /*#__PURE__*/React.createElement(AudioPlayer, { ...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, { ...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, { ...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, { ...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, { ...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, { ...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 } }); });