UNPKG

scratch-gui

Version:

GraphicaL User Interface for creating and running Scratch 3.0 projects

67 lines (61 loc) 2.42 kB
import React from 'react'; import {mountWithIntl} from '../../helpers/intl-helpers.jsx'; import configureStore from 'redux-mock-store'; import {Provider} from 'react-redux'; import SpriteSelectorItem from '../../../src/containers/sprite-selector-item'; import CloseButton from '../../../src/components/close-button/close-button'; describe('SpriteSelectorItem Container', () => { const mockStore = configureStore(); let className; let costumeURL; let name; let onClick; let dispatchSetHoveredSprite; let onDeleteButtonClick; let selected; let id; let store; // Wrap this in a function so it gets test specific states and can be reused. const getContainer = function () { return ( <Provider store={store}> <SpriteSelectorItem className={className} costumeURL={costumeURL} dispatchSetHoveredSprite={dispatchSetHoveredSprite} id={id} name={name} selected={selected} onClick={onClick} onDeleteButtonClick={onDeleteButtonClick} /> </Provider> ); }; beforeEach(() => { store = mockStore({hoveredTarget: {receivedBlocks: false, sprite: null}}); className = 'ponies'; costumeURL = 'https://scratch.mit.edu/foo/bar/pony'; id = 1337; name = 'Pony sprite'; onClick = jest.fn(); onDeleteButtonClick = jest.fn(); dispatchSetHoveredSprite = jest.fn(); selected = true; // Mock window.confirm() which is called when the close button is clicked. global.confirm = jest.fn(() => true); }); test('should confirm if the user really wants to delete the sprite', () => { const wrapper = mountWithIntl(getContainer()); wrapper.find(CloseButton).simulate('click'); expect(global.confirm).toHaveBeenCalled(); expect(onDeleteButtonClick).toHaveBeenCalledWith(1337); }); test('should not delete the sprite if the user cancels', () => { global.confirm = jest.fn(() => false); const wrapper = mountWithIntl(getContainer()); wrapper.find(CloseButton).simulate('click'); expect(global.confirm).toHaveBeenCalled(); expect(onDeleteButtonClick).not.toHaveBeenCalled(); }); });