import React from 'react'
import { render, waitFor, fireEvent, act } from '@testing-library/react'
import { Form, Input } from 'antd'
import useValues from '../useValues'
function TestComponent({ form }: { form?: any }) {
const values = useValues(form)
return (
{JSON.stringify(values)}
)
}
function TestForm() {
const [form] = Form.useForm()
return (
)
}
function TestFormWithContext() {
return (
)
}
describe('useValues hook', () => {
it('获取表单初始值', async () => {
const { getByTestId } = render()
await waitFor(() => {
const values = JSON.parse(getByTestId('values').textContent!)
expect(values.name).toBe('hello')
expect(values.age).toBe(20)
})
})
it('表单值变化时自动更新', async () => {
const { getByTestId } = render()
await waitFor(() => {
const values = JSON.parse(getByTestId('values').textContent!)
expect(values.name).toBe('hello')
})
const input = getByTestId('name-input')
fireEvent.change(input, { target: { value: 'world' } })
await waitFor(() => {
const values = JSON.parse(getByTestId('values').textContent!)
expect(values.name).toBe('world')
})
})
it('通过 Form context 自动获取 form instance', async () => {
const { getByTestId } = render()
await waitFor(() => {
const values = JSON.parse(getByTestId('values').textContent!)
expect(values.city).toBe('Beijing')
})
})
it('无 form 时返回空对象', () => {
function Standalone() {
const values = useValues(undefined as any)
return {JSON.stringify(values)}
}
const { getByTestId } = render(
,
)
const val = getByTestId('val').textContent!
expect(val).toBeDefined()
})
})