import {mountWithTheme} from 'sentry-test/enzyme';
import {mountGlobalModal} from 'sentry-test/modal';
import Form from 'sentry/components/forms/form';
import FormModel from 'sentry/components/forms/model';
import TableField from 'sentry/components/forms/tableField';
const mockSubmit = jest.fn();
describe('TableField', function () {
let wrapper;
let model;
const columnKeys = ['column1', 'column2'];
const columnLabels = {column1: 'Column 1', column2: 'Column 2'};
describe('renders', function () {
beforeEach(() => {
model = new FormModel();
wrapper = mountWithTheme(
);
});
it('renders without form context', function () {
wrapper = mountWithTheme(
);
expect(wrapper).toSnapshot();
});
it('renders with form context', function () {
expect(wrapper).toSnapshot();
});
it('renders button text', function () {
expect(wrapper.find('button[aria-label="Add Thing"]').text()).toEqual('Add Thing');
});
it("doesn't render columns if there's no initialData", function () {
expect(wrapper.find('HeaderLabel').exists()).toBe(false);
});
describe('saves changes', function () {
it('handles adding a new row', function () {
wrapper.find('button[aria-label="Add Thing"]').simulate('click');
expect(wrapper.find('HeaderLabel').at(0).text()).toBe('Column 1');
expect(wrapper.find('HeaderLabel').at(1).text()).toBe('Column 2');
});
it('handles removing a row', async function () {
// add a couple new rows for funsies
wrapper.find('button[aria-label="Add Thing"]').simulate('click');
wrapper.find('button[aria-label="Add Thing"]').simulate('click');
// delete the last row
wrapper.find('button[aria-label="delete"]').last().simulate('click');
// click through confirmation
const modal = await mountGlobalModal();
modal.find('Button[data-test-id="confirm-button"]').simulate('click');
wrapper.update();
expect(wrapper.find('RowContainer[data-test-id="field-row"]')).toHaveLength(1);
});
});
});
});