grommet
Version:
focus on the essential experience
182 lines (167 loc) • 4.71 kB
JavaScript
import React from 'react';
import 'jest-styled-components';
import { cleanup, fireEvent, render } from 'react-testing-library';
import { getByText } from 'dom-testing-library';
import { createPortal, expectPortal } from '../../../utils/portal';
import { MaskedInput } from '..';
describe('MaskedInput', function () {
beforeEach(createPortal);
afterEach(cleanup);
test('basic', function () {
var _render = render(React.createElement(MaskedInput, {
name: "item"
})),
container = _render.container;
expect(container.firstChild).toMatchSnapshot();
});
test('mask', function (done) {
var onChange = jest.fn();
var onFocus = jest.fn();
var _render2 = render(React.createElement(MaskedInput, {
"data-testid": "test-input",
id: "item",
name: "item",
mask: [{
length: [1, 2],
options: ['aa', 'bb'],
regexp: /^[ab][ab]$|^[ab]$/
}, {
fixed: '!'
}, {
length: 1,
regexp: /^[ab]$/
}],
value: "bb!ax",
onChange: onChange,
onFocus: onFocus
})),
getByTestId = _render2.getByTestId,
container = _render2.container;
expect(container.firstChild).toMatchSnapshot();
fireEvent.focus(getByTestId('test-input'));
setTimeout(function () {
expectPortal('masked-input-drop__item').toMatchSnapshot();
expect(onChange).not.toBeCalled();
expect(onFocus).toBeCalled();
done();
}, 300);
});
test('option via mouse', function (done) {
var onChange = jest.fn();
var _render3 = render(React.createElement(MaskedInput, {
"data-testid": "test-input",
plain: true,
size: "large",
id: "item",
name: "item",
mask: [{
length: [1, 2],
options: ['aa', 'bb'],
regexp: /^[ab][ab]$|^[ab]$/
}, {
fixed: '!'
}],
value: "",
onChange: onChange
})),
getByTestId = _render3.getByTestId,
container = _render3.container;
expect(container.firstChild).toMatchSnapshot();
fireEvent.focus(getByTestId('test-input'));
setTimeout(function () {
expectPortal('masked-input-drop__item').toMatchSnapshot();
fireEvent.click(getByText(document, 'aa'));
expect(container.firstChild).toMatchSnapshot();
expect(onChange).toBeCalledWith(expect.objectContaining({
target: {
value: 'aa!'
}
}));
done();
}, 500);
});
test('option via keyboard', function (done) {
var onChange = jest.fn();
var _render4 = render(React.createElement(MaskedInput, {
"data-testid": "test-input",
id: "item",
name: "item",
mask: [{
length: [1, 2],
options: ['aa', 'bb'],
regexp: /^[ab][ab]$|^[ab]$/
}, {
fixed: '!'
}],
value: "",
onChange: onChange
})),
getByTestId = _render4.getByTestId,
container = _render4.container;
expect(container.firstChild).toMatchSnapshot();
var input = getByTestId('test-input');
fireEvent.focus(input);
setTimeout(function () {
// pressing enter here nothing will happen
fireEvent.keyDown(input, {
keyCode: 13
}); // enter
fireEvent.keyDown(input, {
keyCode: 40
}); // down
fireEvent.keyDown(input, {
keyCode: 40
}); // down
fireEvent.keyDown(input, {
keyCode: 38
}); // up
fireEvent.keyDown(input, {
keyCode: 13
}); // enter
expect(onChange).toBeCalledWith(expect.objectContaining({
target: {
value: 'aa!'
}
}));
done();
}, 300);
});
test('next and previous without options', function (done) {
var onChange = jest.fn();
var _render5 = render(React.createElement(MaskedInput, {
"data-testid": "test-input",
id: "item",
name: "item",
value: "",
mask: [{
length: [1, 2],
regexp: /^[ab][ab]$|^[ab]$/
}, {
fixed: '!'
}],
onChange: onChange
})),
getByTestId = _render5.getByTestId,
container = _render5.container;
expect(container.firstChild).toMatchSnapshot();
var input = getByTestId('test-input');
fireEvent.focus(input);
setTimeout(function () {
fireEvent.keyDown(input, {
keyCode: 40
});
fireEvent.keyDown(input, {
keyCode: 40
});
fireEvent.keyDown(input, {
keyCode: 38
});
fireEvent.keyDown(input, {
keyCode: 13
}); // enter
expect(onChange).not.toBeCalled();
expect(container.firstChild).toMatchSnapshot();
done();
}, 300);
});
});