import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary'; import BulkNotice from 'sentry/components/bulkController/bulkNotice'; const props = { allRowsCount: 64, selectedRowsCount: 10, bulkLimit: undefined, onUnselectAllRows: () => {}, onSelectAllRows: () => {}, columnsCount: 4, isPageSelected: false, isAllSelected: false, }; describe('BulkNotice', function () { it('does not render if the whole page is not selected', function () { const wrapper = render(); expect(wrapper.container).toBeEmptyDOMElement(); }); it('shows the right page summary', function () { const wrapper = render(); expect(wrapper.container).toHaveTextContent( `${props.selectedRowsCount} items on this page selected. Select all ${props.allRowsCount} items.` ); wrapper.rerender(); expect(wrapper.container).toHaveTextContent('Select all items across all pages'); wrapper.rerender( ); expect(wrapper.container).toHaveTextContent('Select the first 1000 items.'); }); it('can select all rows across all pages', function () { const onSelectAllRows = jest.fn(); render(); userEvent.click(screen.getByRole('button', {name: 'Select all 64 items.'})); expect(onSelectAllRows).toHaveBeenCalled(); }); it('can deselect all once everything is selected', function () { const onUnselectAllRows = jest.fn(); const wrapper = render( ); expect(wrapper.container).toHaveTextContent( `Selected all ${props.allRowsCount} items. Cancel selection.` ); userEvent.click(screen.getByRole('button', {name: 'Cancel selection.'})); expect(onUnselectAllRows).toHaveBeenCalled(); }); it('show the right selected all across all pages summary', function () { const wrapper = render( ); expect(wrapper.container).toHaveTextContent('Selected all items across all pages.'); wrapper.rerender( ); expect(wrapper.container).toHaveTextContent('Selected all 123 items.'); wrapper.rerender( ); expect(wrapper.container).toHaveTextContent('Selected up to the first 1000 items.'); }); });