import {mountWithTheme} from 'sentry-test/enzyme';
import {changeInputValue, openMenu} from 'sentry-test/select-new';
import {Form, SelectCreatableField} from 'sentry/components/deprecatedforms';
describe('SelectCreatableField', function () {
it('can add user input into select field when using options', function () {
const wrapper = mountWithTheme(
);
const input = wrapper.find('SelectControl input[type="text"]');
changeInputValue(input, 'bar');
wrapper.update();
// Text is in input
expect(wrapper.find('SelectControl input[type="text"]').props().value).toBe('bar');
// Click on create option
openMenu(wrapper, {control: true});
wrapper.find('SelectControl Option Label').simulate('click');
// Is active hidden input value
expect(wrapper.find('SelectControl input[type="hidden"]').props().value).toEqual(
'bar'
);
});
it('can add user input into select field when using choices', function () {
const wrapper = mountWithTheme(
);
const input = wrapper.find('SelectControl input[type="text"]');
changeInputValue(input, 'bar');
wrapper.update();
// Text is in input
expect(wrapper.find('SelectControl input[type="text"]').props().value).toBe('bar');
// Click on create option
openMenu(wrapper, {control: true});
wrapper.find('SelectControl Option Label').simulate('click');
// Is active hidden input value
expect(wrapper.find('SelectControl input[type="hidden"]').props().value).toEqual(
'bar'
);
});
it('can add user input into select field when using paired choices', function () {
const wrapper = mountWithTheme(
);
const input = wrapper.find('SelectControl input[type="text"]');
changeInputValue(input, 'bar');
wrapper.update();
// Text is in input
expect(wrapper.find('SelectControl input[type="text"]').props().value).toBe('bar');
// Click on create option
openMenu(wrapper, {control: true});
wrapper.find('SelectControl Option Label').simulate('click');
// Is active hidden input value
expect(wrapper.find('SelectControl input[type="hidden"]').props().value).toEqual(
'bar'
);
});
it('with Form context', function () {
const submitMock = jest.fn();
const wrapper = mountWithTheme(
,
{}
);
const input = wrapper.find('SelectControl input[type="text"]');
changeInputValue(input, 'bar');
wrapper.update();
// Text is in input
expect(wrapper.find('SelectControl input[type="text"]').props().value).toBe('bar');
// Click on create option
openMenu(wrapper, {control: true});
wrapper.find('SelectControl Option Label').simulate('click');
wrapper.find('Form').simulate('submit');
expect(submitMock).toHaveBeenCalledWith(
{
fieldName: 'bar',
},
expect.anything(),
expect.anything()
);
});
});