import { fireEvent, render, screen, waitFor } from '@testing-library/react' import { useAppForm, withForm } from './index' const FormHarness = ({ onSubmit }: { onSubmit: (value: Record) => void }) => { const form = useAppForm({ defaultValues: { title: 'Initial title' }, onSubmit: ({ value }) => onSubmit(value), }) return (
} /> ) } const InlinePreview = withForm({ defaultValues: { title: '' }, render: ({ form }) => { return ( } /> ) }, }) const WithFormHarness = () => { const form = useAppForm({ defaultValues: { title: 'Preview value' }, onSubmit: () => {}, }) return } describe('form index exports', () => { it('should submit values through the generated app form', async () => { const onSubmit = vi.fn() render() fireEvent.click(screen.getByRole('button', { name: /submit/i })) await waitFor(() => { expect(onSubmit).toHaveBeenCalledWith({ title: 'Initial title' }) }) }) it('should render components created with withForm', () => { render() expect(screen.getByRole('textbox')).toHaveValue('Preview value') expect(screen.getByText('Preview Title')).toBeInTheDocument() }) })