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 (
);
}
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);
});
});