///
import { render } from '@testing-library/react'
import userEvent from '@testing-library/user-event'
import '@testing-library/jest-dom'
import * as React from 'react'
import { createFormFactory } from '..'
const user = userEvent.setup()
describe('useForm', () => {
it('preserves field state', async () => {
type Person = {
firstName: string
lastName: string
}
const formFactory = createFormFactory()
function Comp() {
const form = formFactory.useForm()
return (
{
return (
field.handleChange(e.target.value)}
/>
)
}}
/>
)
}
const { getByTestId, queryByText } = render()
const input = getByTestId('fieldinput')
expect(queryByText('FirstName')).not.toBeInTheDocument()
await user.type(input, 'FirstName')
expect(input).toHaveValue('FirstName')
})
it('should allow default values to be set', async () => {
type Person = {
firstName: string
lastName: string
}
const formFactory = createFormFactory()
function Comp() {
const form = formFactory.useForm({
defaultValues: {
firstName: 'FirstName',
lastName: 'LastName',
},
})
return (
{
return {field.state.value}
}}
/>
)
}
const { findByText, queryByText } = render()
expect(await findByText('FirstName')).toBeInTheDocument()
expect(queryByText('LastName')).not.toBeInTheDocument()
})
})