import { Nullable } from "@reins/types"; import { act, render, waitFor } from "@testing-library/react"; import { memo } from "react"; import { createForm } from "factory"; type InitialValues = { name: string; surname: string; age: number | null; address: Nullable<{ street: string; city: string; country: string; }>; }; const initialValues: InitialValues = { name: "", surname: "", age: null, address: null, }; describe("useField [ Base ]", () => { const onSubmit = jest.fn(); let form = createForm(initialValues); let rerendersForm = 0; let rerendersField1 = 0; let rerendersField2 = 0; beforeEach(() => { form = createForm(initialValues); onSubmit.mockClear(); rerendersForm = 0; rerendersField1 = 0; rerendersField2 = 0; }); const Field1 = memo(() => { const { field } = form.useField<"name">("name"); rerendersField1 += 1; return field.onChange(e.target.value, e)} />; }); const Field2 = memo(() => { const { field } = form.useField<"surname">("surname"); rerendersField2 += 1; return field.onChange(e.target.value, e)} />; }); const App = () => { rerendersForm += 1; return (