index.spec.jsx 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import React from 'react';
  2. import {shallow} from 'sentry-test/enzyme';
  3. import BulkController from 'app/components/bulkController';
  4. describe('BulkController', function () {
  5. let wrapper, renderProp, toggleRow, selectPage, deselectPage, selectAll, unselectAll;
  6. beforeEach(function () {
  7. renderProp = jest.fn();
  8. wrapper = shallow(
  9. <BulkController allRowsCount={32} pageIds={[1, 2, 3]} columnsCount={4}>
  10. {({
  11. isAllSelected,
  12. isPageSelected,
  13. selectedIds,
  14. onRowToggle,
  15. onAllRowsToggle,
  16. onPageRowsToggle,
  17. }) => {
  18. renderProp(isAllSelected, isPageSelected, selectedIds);
  19. return (
  20. <React.Fragment>
  21. {isPageSelected && 'whole page selected'}
  22. {isAllSelected && 'everything selected'}
  23. <button data-test-id="selectAll" onClick={() => onAllRowsToggle(true)} />
  24. <button data-test-id="selectPage" onClick={() => onPageRowsToggle(true)} />
  25. <button data-test-id="unselectAll" onClick={() => onAllRowsToggle(false)} />
  26. <button
  27. data-test-id="deselectPage"
  28. onClick={() => onPageRowsToggle(false)}
  29. />
  30. <button data-test-id="toggleRow" onClick={() => onRowToggle(2)} />
  31. </React.Fragment>
  32. );
  33. }}
  34. </BulkController>
  35. );
  36. toggleRow = wrapper.find('[data-test-id="toggleRow"]');
  37. selectPage = wrapper.find('[data-test-id="selectPage"]');
  38. deselectPage = wrapper.find('[data-test-id="deselectPage"]');
  39. selectAll = wrapper.find('[data-test-id="selectAll"]');
  40. unselectAll = wrapper.find('[data-test-id="unselectAll"]');
  41. });
  42. it('sets the defaults', function () {
  43. expect(renderProp).toHaveBeenLastCalledWith(false, false, []);
  44. });
  45. it('toggles single item', function () {
  46. toggleRow.simulate('click');
  47. expect(renderProp).toHaveBeenLastCalledWith(false, false, [2]);
  48. toggleRow.simulate('click');
  49. expect(renderProp).toHaveBeenLastCalledWith(false, false, []);
  50. });
  51. it('toggles the page', function () {
  52. toggleRow.simulate('click');
  53. expect(renderProp).toHaveBeenLastCalledWith(false, false, [2]);
  54. selectPage.simulate('click');
  55. expect(renderProp).toHaveBeenLastCalledWith(false, true, [2, 1, 3]);
  56. deselectPage.simulate('click');
  57. expect(renderProp).toHaveBeenLastCalledWith(false, false, []);
  58. });
  59. it('toggles everything', function () {
  60. toggleRow.simulate('click');
  61. expect(renderProp).toHaveBeenLastCalledWith(false, false, [2]);
  62. selectAll.simulate('click');
  63. expect(renderProp).toHaveBeenLastCalledWith(true, true, [1, 2, 3]);
  64. unselectAll.simulate('click');
  65. expect(renderProp).toHaveBeenLastCalledWith(false, false, []);
  66. });
  67. it('deselects one after having everything selected', function () {
  68. selectAll.simulate('click');
  69. expect(renderProp).toHaveBeenLastCalledWith(true, true, [1, 2, 3]);
  70. toggleRow.simulate('click');
  71. expect(renderProp).toHaveBeenLastCalledWith(false, false, [1, 3]);
  72. });
  73. });