Spaces:
Runtime error
Runtime error
| import React from 'react'; | |
| import {mountWithIntl, componentWithIntl} from '../../helpers/intl-helpers.jsx'; | |
| import SoundEditor from '../../../src/components/sound-editor/sound-editor'; | |
| describe('Sound Editor Component', () => { | |
| let props; | |
| beforeEach(() => { | |
| props = { | |
| isStereo: false, | |
| duration: 1, | |
| size: 10507, | |
| canUndo: true, | |
| canRedo: false, | |
| chunkLevels: [1, 2, 3], | |
| name: 'sound name', | |
| playhead: 0.5, | |
| trimStart: 0.2, | |
| trimEnd: 0.8, | |
| onChangeName: jest.fn(), | |
| onDelete: jest.fn(), | |
| onPlay: jest.fn(), | |
| onRedo: jest.fn(), | |
| onReverse: jest.fn(), | |
| onSofter: jest.fn(), | |
| onLouder: jest.fn(), | |
| onRobot: jest.fn(), | |
| onEcho: jest.fn(), | |
| onFaster: jest.fn(), | |
| onSlower: jest.fn(), | |
| onSetTrimEnd: jest.fn(), | |
| onSetTrimStart: jest.fn(), | |
| onStop: jest.fn(), | |
| onUndo: jest.fn() | |
| }; | |
| }); | |
| test('matches snapshot', () => { | |
| const component = componentWithIntl(<SoundEditor {...props} />); | |
| expect(component.toJSON()).toMatchSnapshot(); | |
| }); | |
| test('delete button appears when selection is not null', () => { | |
| const wrapper = mountWithIntl( | |
| <SoundEditor | |
| {...props} | |
| trimEnd={0.75} | |
| trimStart={0.25} | |
| /> | |
| ); | |
| wrapper.find('[children="Delete"]').simulate('click'); | |
| expect(props.onDelete).toHaveBeenCalled(); | |
| }); | |
| test('play button appears when playhead is null', () => { | |
| const wrapper = mountWithIntl( | |
| <SoundEditor | |
| {...props} | |
| playhead={null} | |
| /> | |
| ); | |
| wrapper.find('button[title="Play"]').simulate('click'); | |
| expect(props.onPlay).toHaveBeenCalled(); | |
| }); | |
| test('stop button appears when playhead is not null', () => { | |
| const wrapper = mountWithIntl( | |
| <SoundEditor | |
| {...props} | |
| playhead={0.5} | |
| /> | |
| ); | |
| wrapper.find('button[title="Stop"]').simulate('click'); | |
| expect(props.onStop).toHaveBeenCalled(); | |
| }); | |
| test('submitting name calls the callback', () => { | |
| const wrapper = mountWithIntl( | |
| <SoundEditor {...props} /> | |
| ); | |
| wrapper.find('input') | |
| .simulate('change', {target: {value: 'hello'}}) | |
| .simulate('blur'); | |
| expect(props.onChangeName).toHaveBeenCalled(); | |
| }); | |
| test('effect buttons call the correct callbacks', () => { | |
| const wrapper = mountWithIntl( | |
| <SoundEditor {...props} /> | |
| ); | |
| wrapper.find('[children="Reverse"]').simulate('click'); | |
| expect(props.onReverse).toHaveBeenCalled(); | |
| wrapper.find('[children="Robot"]').simulate('click'); | |
| expect(props.onRobot).toHaveBeenCalled(); | |
| wrapper.find('[children="Faster"]').simulate('click'); | |
| expect(props.onFaster).toHaveBeenCalled(); | |
| wrapper.find('[children="Slower"]').simulate('click'); | |
| expect(props.onSlower).toHaveBeenCalled(); | |
| wrapper.find('[children="Louder"]').simulate('click'); | |
| expect(props.onLouder).toHaveBeenCalled(); | |
| wrapper.find('[children="Softer"]').simulate('click'); | |
| expect(props.onSofter).toHaveBeenCalled(); | |
| }); | |
| test('undo and redo buttons can be disabled by canUndo/canRedo', () => { | |
| let wrapper = mountWithIntl( | |
| <SoundEditor | |
| {...props} | |
| canUndo | |
| canRedo={false} | |
| /> | |
| ); | |
| expect(wrapper.find('button[title="Undo"]').prop('disabled')).toBe(false); | |
| expect(wrapper.find('button[title="Redo"]').prop('disabled')).toBe(true); | |
| wrapper = mountWithIntl( | |
| <SoundEditor | |
| {...props} | |
| canRedo | |
| canUndo={false} | |
| /> | |
| ); | |
| expect(wrapper.find('button[title="Undo"]').prop('disabled')).toBe(true); | |
| expect(wrapper.find('button[title="Redo"]').prop('disabled')).toBe(false); | |
| }); | |
| test.skip('undo/redo buttons call the correct callback', () => { | |
| const wrapper = mountWithIntl( | |
| <SoundEditor | |
| {...props} | |
| canRedo | |
| canUndo | |
| /> | |
| ); | |
| wrapper.find('button[title="Undo"]').simulate('click'); | |
| expect(props.onUndo).toHaveBeenCalled(); | |
| wrapper.find('button[title="Redo"]').simulate('click'); | |
| expect(props.onRedo).toHaveBeenCalled(); | |
| }); | |
| }); | |