From 661e019a4d6394064dfa48dd0bc5d62f9fa91e85 Mon Sep 17 00:00:00 2001 From: Dave Date: Mon, 4 May 2026 16:11:54 -0400 Subject: [PATCH] feature/IO-3674-Fix-Save-And-New - Fix Save and New so state gets reset on form when starting from a new employee --- .../shop-employees-form.component.jsx | 8 ++++++-- .../shop-employees-form.component.test.jsx | 16 +++++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/client/src/components/shop-employees/shop-employees-form.component.jsx b/client/src/components/shop-employees/shop-employees-form.component.jsx index 8218597b9..7ff148791 100644 --- a/client/src/components/shop-employees/shop-employees-form.component.jsx +++ b/client/src/components/shop-employees/shop-employees-form.component.jsx @@ -220,12 +220,16 @@ export function ShopEmployeesFormComponent({ bodyshop, form, onDirtyChange, isDi }); const savedEmployee = result?.data?.insert_employees?.returning?.[0]; - syncEmployeeFormToSavedData(savedEmployee ?? normalizedValues); - if (submitAction === "saveAndNew") { + if (isNewEmployee) { + resetEmployeeFormToCurrentData(); + } navigateToEmployee("new"); } else if (savedEmployee?.id) { + syncEmployeeFormToSavedData(savedEmployee ?? normalizedValues); navigateToEmployee(savedEmployee.id); + } else { + syncEmployeeFormToSavedData(savedEmployee ?? normalizedValues); } notification.success({ diff --git a/client/src/components/shop-employees/shop-employees-form.component.test.jsx b/client/src/components/shop-employees/shop-employees-form.component.test.jsx index dc022a96a..6da7ef3a6 100644 --- a/client/src/components/shop-employees/shop-employees-form.component.test.jsx +++ b/client/src/components/shop-employees/shop-employees-form.component.test.jsx @@ -3,7 +3,12 @@ import { Form } from "antd"; import { fireEvent, render, screen, waitFor } from "@testing-library/react"; import { useEffect } from "react"; import { beforeEach, describe, expect, it, vi } from "vitest"; -import { DELETE_VACATION, INSERT_EMPLOYEES, QUERY_EMPLOYEE_BY_ID, UPDATE_EMPLOYEE } from "../../graphql/employees.queries"; +import { + DELETE_VACATION, + INSERT_EMPLOYEES, + QUERY_EMPLOYEE_BY_ID, + UPDATE_EMPLOYEE +} from "../../graphql/employees.queries"; import { ShopEmployeesFormComponent } from "./shop-employees-form.component.jsx"; const insertEmployeesMock = vi.fn(); @@ -335,6 +340,15 @@ describe("ShopEmployeesFormComponent", () => { expect(formInstance.isFieldsTouched()).toBe(false); }); + await waitFor(() => { + expect(screen.getByRole("textbox", { name: "First Name" })).toHaveValue(""); + expect(screen.getByRole("textbox", { name: "Last Name" })).toHaveValue(""); + expect(screen.getByRole("textbox", { name: "Employee Number" })).toHaveValue(""); + expect(screen.getByRole("textbox", { name: "PIN" })).toHaveValue(""); + expect(screen.getByRole("textbox", { name: "Hire Date" })).toHaveValue(""); + }); + + expect(screen.getByText("New Employee")).toBeInTheDocument(); expect(navigateMock).toHaveBeenCalledWith({ search: "employeeId=new" });