grommet
Version:
focus on the essential experience
198 lines (161 loc) • 6.05 kB
JavaScript
"use strict";
var _react = _interopRequireDefault(require("react"));
var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer"));
var _reactTestingLibrary = require("react-testing-library");
require("jest-styled-components");
var _Grommet = require("../../Grommet");
var _ = require("..");
var _FormField = require("../../FormField");
var _Button = require("../../Button");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('Form', function () {
afterEach(_reactTestingLibrary.cleanup);
test('empty', function () {
var component = _reactTestRenderer.default.create(_react.default.createElement(_Grommet.Grommet, null, _react.default.createElement(_.Form, null)));
var tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
test('with field', function () {
var component = _reactTestRenderer.default.create(_react.default.createElement(_Grommet.Grommet, null, _react.default.createElement(_.Form, null, _react.default.createElement(_FormField.FormField, {
name: "test"
}))));
var tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
test('update', function () {
var validate = jest.fn().mockReturnValueOnce('too short').mockReturnValueOnce(undefined);
var onSubmit = jest.fn();
var _render = (0, _reactTestingLibrary.render)(_react.default.createElement(_Grommet.Grommet, null, _react.default.createElement(_.Form, {
onSubmit: onSubmit
}, _react.default.createElement(_FormField.FormField, {
name: "test",
required: true,
validate: validate,
placeholder: "test input"
}), _react.default.createElement(_FormField.FormField, {
name: "test2",
placeholder: "test-2 input"
}), _react.default.createElement(_Button.Button, {
type: "submit",
primary: true,
label: "Submit"
})))),
getByPlaceholderText = _render.getByPlaceholderText,
getByText = _render.getByText,
container = _render.container;
expect(container.firstChild).toMatchSnapshot();
_reactTestingLibrary.fireEvent.change(getByPlaceholderText('test input'), {
target: {
value: 'v'
}
});
_reactTestingLibrary.fireEvent.click(getByText('Submit'));
expect(validate).toBeCalledWith('v', {
test: 'v'
});
_reactTestingLibrary.fireEvent.change(getByPlaceholderText('test input'), {
target: {
value: 'value'
}
});
_reactTestingLibrary.fireEvent.change(getByPlaceholderText('test-2 input'), {
target: {
value: 'value-2'
}
});
_reactTestingLibrary.fireEvent.click(getByText('Submit'));
expect(validate).toBeCalledWith('value', {
test: 'value',
test2: 'value-2'
});
expect(onSubmit).toBeCalledWith(expect.objectContaining({
value: {
test: 'value',
test2: 'value-2'
}
}));
});
test('regexp validation', function () {
var onSubmit = jest.fn();
var _render2 = (0, _reactTestingLibrary.render)(_react.default.createElement(_Grommet.Grommet, null, _react.default.createElement(_.Form, {
onSubmit: onSubmit
}, _react.default.createElement(_FormField.FormField, {
name: "test",
required: true,
validate: {
regexp: /^[a-z]/i
},
placeholder: "test input"
}), _react.default.createElement(_Button.Button, {
type: "submit",
primary: true,
label: "Submit"
})))),
getByPlaceholderText = _render2.getByPlaceholderText,
getByText = _render2.getByText,
queryByText = _render2.queryByText;
_reactTestingLibrary.fireEvent.change(getByPlaceholderText('test input'), {
target: {
value: '1'
}
});
_reactTestingLibrary.fireEvent.click(getByText('Submit'));
expect(getByText('invalid')).toMatchSnapshot();
_reactTestingLibrary.fireEvent.change(getByPlaceholderText('test input'), {
target: {
value: 'a'
}
});
_reactTestingLibrary.fireEvent.click(getByText('Submit'));
expect(queryByText('invalid')).toBeNull();
});
test('required validation', function () {
var onSubmit = jest.fn();
var _render3 = (0, _reactTestingLibrary.render)(_react.default.createElement(_Grommet.Grommet, null, _react.default.createElement(_.Form, {
onSubmit: onSubmit
}, _react.default.createElement(_FormField.FormField, {
name: "test",
required: true,
placeholder: "test input"
}), _react.default.createElement(_Button.Button, {
type: "submit",
primary: true,
label: "Submit"
})))),
getByPlaceholderText = _render3.getByPlaceholderText,
getByText = _render3.getByText,
queryByText = _render3.queryByText;
_reactTestingLibrary.fireEvent.click(getByText('Submit'));
expect(queryByText('required')).toMatchSnapshot();
_reactTestingLibrary.fireEvent.change(getByPlaceholderText('test input'), {
target: {
value: '1'
}
});
expect(queryByText('required')).toBeNull();
});
test('reset clears form', function () {
var onReset = jest.fn();
var _render4 = (0, _reactTestingLibrary.render)(_react.default.createElement(_Grommet.Grommet, null, _react.default.createElement(_.Form, {
onReset: onReset
}, _react.default.createElement(_FormField.FormField, {
name: "test",
required: true,
placeholder: "test input"
}), _react.default.createElement(_Button.Button, {
type: "reset",
primary: true,
label: "Reset"
})))),
getByPlaceholderText = _render4.getByPlaceholderText,
getByText = _render4.getByText,
queryByText = _render4.queryByText;
_reactTestingLibrary.fireEvent.change(getByPlaceholderText('test input'), {
target: {
value: 'Input has changed'
}
});
_reactTestingLibrary.fireEvent.click(getByText('Reset'));
expect(queryByText('Input has changed')).toBeNull();
});
});