redux-devtools/packages/redux-devtools-ui/test/Form.test.tsx

62 lines
1.5 KiB
TypeScript

import React from 'react';
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { Form } from '../src';
import { schema, uiSchema, formData } from '../src/Form/schema';
describe('Form', function () {
let random: () => number;
beforeAll(() => {
random = Math.random;
Math.random = jest.fn(() => 0.25546350798039463);
});
afterAll(() => {
Math.random = random;
console.log(Math.random());
});
it('renders correctly', () => {
const { container } = render(
<Form formData={formData} schema={schema} uiSchema={uiSchema} />
);
expect(container.firstChild).toMatchSnapshot();
});
it('renders with primary button', () => {
const { container } = render(
<Form
primaryButton
submitText="Custom button"
formData={formData}
schema={schema}
uiSchema={uiSchema}
/>
);
expect(container.firstChild).toMatchSnapshot();
});
it('renders with no button', () => {
const { container } = render(
<Form formData={formData} schema={schema} uiSchema={uiSchema} noSubmit />
);
expect(container.firstChild).toMatchSnapshot();
});
it('should handle the submit event', () => {
const onSubmit = jest.fn();
render(
<Form
formData={formData}
schema={schema}
uiSchema={uiSchema}
onSubmit={onSubmit}
/>
);
userEvent.click(screen.getByRole('button', { name: 'Submit' }));
expect(onSubmit).toHaveBeenCalled();
});
});