diff --git a/src/app/(protected)/workorders/_components/list/table/cells/site-dialog.tsx b/src/app/(protected)/workorders/_components/list/table/cells/site-dialog.tsx
index 82f35a06..2187a33a 100644
--- a/src/app/(protected)/workorders/_components/list/table/cells/site-dialog.tsx
+++ b/src/app/(protected)/workorders/_components/list/table/cells/site-dialog.tsx
@@ -125,19 +125,26 @@ export function SiteDialog({
/>
)}
-
+ {/* Locked until the site record loads, so its values never replace typed input. */}
+
{
expect(screen.getByText("dal1@acme.test")).toBeInTheDocument();
});
+ it("locks the contact fields until the site loads, so typed input is never replaced", async () => {
+ let resolveSite: (site: Location) => void = () => {};
+ getById.mockReturnValue(
+ new Promise((resolve) => {
+ resolveSite = resolve;
+ }),
+ );
+ renderDialog();
+
+ await waitFor(() => expect(getById).toHaveBeenCalled());
+ expect(primaryField("POC name")).toBeDisabled();
+ expect(primaryField("POC phone")).toBeDisabled();
+ expect(primaryField("Notes…")).toBeDisabled();
+ expect(saveButton()).toBeDisabled();
+
+ resolveSite(dallas);
+
+ expect(await screen.findByDisplayValue("Jane")).toBeEnabled();
+ fireEvent.change(primaryField("POC phone"), { target: { value: "(421) 433-9999" } });
+ expect(primaryField("POC phone")).toHaveValue("(421) 433-9999");
+ expect(saveButton()).toBeEnabled();
+ });
+
it("keeps Save disabled until something changes", async () => {
renderDialog();
await screen.findByDisplayValue("Jane");