Skip to content

Commit

Permalink
Merge pull request #19 from buildo/18-formerrors_is_not_always
Browse files Browse the repository at this point in the history
#18: formErrors is not (always?) cleared after submitting
  • Loading branch information
giogonzo authored Mar 29, 2022
2 parents df3501e + 556646d commit df876b2
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 1 deletion.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@buildo/formo",
"version": "2.0.0-beta.9",
"version": "2.0.0",
"main": "lib/index.js",
"license": "MIT",
"files": [
Expand Down
1 change: 1 addition & 0 deletions src/useFormo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -876,6 +876,7 @@ export function useFormo<

async function handleSubmit(): Promise<Result<unknown, unknown>> {
setAllTouched();
setFormErrors(undefined);
dispatch({ type: "setSubmitting", isSubmitting: true });
setSubmissionCount((count) => count + 1);
try {
Expand Down
40 changes: 40 additions & 0 deletions test/useFormo.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -677,4 +677,44 @@ describe("formo", () => {
expect(onSubmit).toHaveBeenLastCalledWith("token");
});
});

test("formErrors are reset before next onSubmit", async () => {
const { result } = renderHook(() =>
useFormo(
{
initialValues: {
username: "username",
},
fieldValidators: (_) => ({
username: validators.validator((u) =>
u === "invalid" ? failure("InvalidUsername") : success(u)
),
}),
},
{
onSubmit: ({ username }) =>
username === "username"
? Promise.resolve(failure(["FormError"]))
: Promise.resolve(success(null)),
}
)
);

await act(async () => {
await result.current.handleSubmit();
});

expect(result.current.formErrors).toEqual(["FormError"]);

await act(async () => {
await result.current.fieldProps("username").onChange("invalid");
await result.current.handleSubmit();
});

// form error should have been reset
expect(result.current.formErrors).toEqual(undefined);
expect(result.current.fieldProps("username").issues).toEqual([
"InvalidUsername",
]);
});
});

0 comments on commit df876b2

Please sign in to comment.