sprite-selector-item.test.jsx 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import React from 'react';
  2. import {mountWithIntl} from '../../helpers/intl-helpers.jsx';
  3. import configureStore from 'redux-mock-store';
  4. import {Provider} from 'react-redux';
  5. import SpriteSelectorItem from '../../../src/containers/sprite-selector-item';
  6. import DeleteButton from '../../../src/components/delete-button/delete-button';
  7. describe('SpriteSelectorItem Container', () => {
  8. const mockStore = configureStore();
  9. let className;
  10. let costumeURL;
  11. let name;
  12. let onClick;
  13. let dispatchSetHoveredSprite;
  14. let onDeleteButtonClick;
  15. let selected;
  16. let id;
  17. let store;
  18. // Wrap this in a function so it gets test specific states and can be reused.
  19. const getContainer = function () {
  20. return (
  21. <Provider store={store}>
  22. <SpriteSelectorItem
  23. className={className}
  24. costumeURL={costumeURL}
  25. dispatchSetHoveredSprite={dispatchSetHoveredSprite}
  26. id={id}
  27. name={name}
  28. selected={selected}
  29. onClick={onClick}
  30. onDeleteButtonClick={onDeleteButtonClick}
  31. />
  32. </Provider>
  33. );
  34. };
  35. beforeEach(() => {
  36. store = mockStore({scratchGui: {
  37. hoveredTarget: {receivedBlocks: false, sprite: null},
  38. assetDrag: {dragging: false}
  39. }});
  40. className = 'ponies';
  41. costumeURL = 'https://scratch.mit.edu/foo/bar/pony';
  42. id = 1337;
  43. name = 'Pony sprite';
  44. onClick = jest.fn();
  45. onDeleteButtonClick = jest.fn();
  46. dispatchSetHoveredSprite = jest.fn();
  47. selected = true;
  48. });
  49. test('should delete the sprite', () => {
  50. const wrapper = mountWithIntl(getContainer());
  51. wrapper.find(DeleteButton).simulate('click');
  52. expect(onDeleteButtonClick).toHaveBeenCalledWith(1337);
  53. });
  54. });