import {
render,
renderGlobalModal,
screen,
userEvent,
} from 'sentry-test/reactTestingLibrary';
import Form from 'sentry/components/forms/form';
import FormModel from 'sentry/components/forms/model';
import TableField from './tableField';
describe('TableField', function () {
const mockSubmit = jest.fn();
const model = new FormModel();
const defaultProps = {
columnKeys: ['column1', 'column2'],
columnLabels: {column1: 'Column 1', column2: 'Column 2'},
addButtonText: 'Add Thing',
name: 'table',
};
describe('renders', function () {
it('renders without form context', function () {
const {container} = render();
expect(container).toSnapshot();
});
it('renders with form context', function () {
const {container} = render(
);
expect(container).toSnapshot();
});
it('renders button text', function () {
render(
);
expect(screen.getByLabelText('Add Thing')).toHaveTextContent('Add Thing');
});
describe('saves changes', function () {
it('handles adding a new row', function () {
render(
);
userEvent.click(screen.getByLabelText('Add Thing'));
const columns = screen.getAllByText(/Column/);
expect(columns).toHaveLength(2);
expect(columns[0]).toHaveTextContent('Column 1');
expect(columns[1]).toHaveTextContent('Column 2');
});
it('handles removing a row', function () {
render(
);
renderGlobalModal();
// add a couple new rows
userEvent.click(screen.getByLabelText('Add Thing'));
userEvent.click(screen.getByLabelText('Add Thing'));
// delete the last row
userEvent.click(screen.getAllByLabelText(/delete/).at(-1)!);
// click through confirmation
userEvent.click(screen.getByTestId('confirm-button'));
expect(screen.getByTestId('field-row')).toBeInTheDocument();
});
});
});
});