import React, { useState } from 'react'; import { expect } from 'chai'; import { cleanup, render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import DocumentFieldsToggleGroup from './document-fields-toggle-group'; function TestComponent({ initialSize = 10, showHideButton = true, totalSize = Infinity, minSize = 10, step = 10, }) { const [size, setSize] = useState(initialSize); return (
Showing {size} items
); } describe('DocumentFieldsToggleGroup', function () { afterEach(cleanup); it('should show "Show more items" button if more items can be shown', function () { render(); expect(screen.getByText('Show 10 more fields')).to.exist; }); it('should show "Hide items" button displaying more items than minSize', function () { render(); expect(screen.getByText('Hide 10 fields')).to.exist; }); it('should show more items when "Show items" is clicked', function () { render(); expect(screen.getByText('Showing 10 items')).to.exist; userEvent.click(screen.getByText('Show 10 more fields'), undefined, { // Because leafygreen skipPointerEventsCheck: true, }); expect(screen.getByText('Showing 20 items')).to.exist; }); it('should reset items to minSize when "Hide items" is clicked', function () { render(); expect(screen.getByText('Showing 20 items')).to.exist; userEvent.click(screen.getByText('Hide 10 fields'), undefined, { // Because leafygreen skipPointerEventsCheck: true, }); expect(screen.getByText('Showing 10 items')).to.exist; }); it('should not show any buttons if no additional fields can be shown or hidden', function () { render( ); expect(screen.queryByTestId('show-more-fields-button')).to.eq(null); expect(screen.queryByTestId('hide-fields-button')).to.eq(null); }); });