grommet
Version:
focus on the essential experience
78 lines (76 loc) • 2.42 kB
JavaScript
import React from 'react';
import renderer from 'react-test-renderer';
import { cleanup, render, fireEvent } from 'react-testing-library';
import 'jest-styled-components';
import { Grommet } from '../../Grommet';
import { Form } from '..';
import { FormField } from '../../FormField';
import { Button } from '../../Button';
describe('Form', function () {
afterEach(cleanup);
test('empty', function () {
var component = renderer.create(React.createElement(Grommet, null, React.createElement(Form, null)));
var tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
test('with field', function () {
var component = renderer.create(React.createElement(Grommet, null, React.createElement(Form, null, React.createElement(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 = render(React.createElement(Grommet, null, React.createElement(Form, {
onSubmit: onSubmit
}, React.createElement(FormField, {
name: "test",
required: true,
validate: validate,
placeholder: "test input"
}), React.createElement(FormField, {
name: "test2",
placeholder: "test-2 input"
}), React.createElement(Button, {
type: "submit",
primary: true,
label: "Submit"
})))),
getByPlaceholderText = _render.getByPlaceholderText,
getByText = _render.getByText,
container = _render.container;
expect(container.firstChild).toMatchSnapshot();
fireEvent.change(getByPlaceholderText('test input'), {
target: {
value: 'v'
}
});
fireEvent.click(getByText('Submit'));
expect(validate).toBeCalledWith('v', {
test: 'v'
});
fireEvent.change(getByPlaceholderText('test input'), {
target: {
value: 'value'
}
});
fireEvent.change(getByPlaceholderText('test-2 input'), {
target: {
value: 'value-2'
}
});
fireEvent.click(getByText('Submit'));
expect(validate).toBeCalledWith('value', {
test: 'value',
test2: 'value-2'
});
expect(onSubmit).toBeCalledWith(expect.objectContaining({
value: {
test: 'value',
test2: 'value-2'
}
}));
});
});