1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-13 23:48:55 +01:00
fab-manager/test/frontend/components/machines/machines-settings.test.tsx

40 lines
2.0 KiB
TypeScript

import { render, screen, waitFor, fireEvent } from '@testing-library/react';
import { MachinesSettings } from '../../../../app/frontend/src/javascript/components/machines/machines-settings';
import { tiptapEvent } from '../../__lib__/tiptap';
// Machines Settings
describe('Machines Settings', () => {
test('should render the correct form', async () => {
const onError = jest.fn();
const onSuccess = jest.fn();
render(<MachinesSettings onError={onError} onSuccess={onSuccess}/>);
await waitFor(() => screen.getByTestId('editorial-block-form'));
expect(screen.getByLabelText(/app.admin.editorial_block_form.content/)).toBeDefined();
expect(screen.getByLabelText(/app.admin.editorial_block_form.cta_label/)).toBeDefined();
expect(screen.getByLabelText(/app.admin.editorial_block_form.cta_url/)).toBeDefined();
});
test('create a banner', async () => {
const onError = jest.fn();
const onSuccess = jest.fn();
const beforeSubmit = jest.fn();
render(<MachinesSettings onError={onError} onSuccess={onSuccess} beforeSubmit={beforeSubmit}/>);
await waitFor(() => screen.getByTestId('editorial-block-form'));
await tiptapEvent.type(screen.getByLabelText(/app.admin.editorial_block_form.content/), 'Lorem ipsum dolor sit amet');
fireEvent.change(screen.getByLabelText(/app.admin.editorial_block_form.cta_label/), { target: { value: 'Button Label 1' } });
fireEvent.change(screen.getByLabelText(/app.admin.editorial_block_form.cta_url/), { target: { value: 'https://www.sleede.com/' } });
fireEvent.click(screen.getByRole('button', { name: /app.admin.machines_settings.save/ }));
const expected = {
machines_banner_active: true,
machines_banner_text: '<p>Lorem ipsum dolor sit amet</p>',
machines_banner_cta_active: true,
machines_banner_cta_label: 'Button Label 1',
machines_banner_cta_url: 'https://www.sleede.com/'
};
await waitFor(() => expect(onSuccess).toHaveBeenCalledTimes(1));
expect(beforeSubmit).toHaveBeenCalledWith(expect.objectContaining(expected));
});
});