import { fireEvent, render, screen } from "@testing-library/react";
import { describe, expect, it, vi } from "vitest";
import { WizardStepLocationServiceSelect } from "@/app/(protected)/workorders/_components/wizard/wizard-step-location-service-select";
import {
EMPTY_WIZARD_DRAFT,
type WorkOrderWizardDraft,
} from "@/domain/work-orders/types/work-order-wizard";
describe("WizardStepLocationServiceSelect — vendor clear on service change", () => {
it("clears vendor fields when the primary service changes", () => {
const onPatch = vi.fn();
const draft: WorkOrderWizardDraft = {
...EMPTY_WIZARD_DRAFT,
pm: "HVAC",
vendorId: "9",
vendorName: "Old Vendor",
techPhone: "555-0100",
};
render(
,
);
fireEvent.click(screen.getByRole("button", { name: "HVAC" }));
fireEvent.click(screen.getByRole("button", { name: "Plumbing" }));
expect(onPatch).toHaveBeenCalledWith(
expect.objectContaining({
pm: "Plumbing",
extraServices: [],
vendorId: "",
vendorName: "",
techPhone: "",
}),
);
});
it("replaces the selected service in Service & Notes without persisting extraServices", () => {
const onPatch = vi.fn();
const draft: WorkOrderWizardDraft = {
...EMPTY_WIZARD_DRAFT,
pm: "HVAC",
extraServices: ["Plumbing"],
vendorId: "9",
vendorName: "Old Vendor",
techPhone: "555-0100",
};
render(
,
);
fireEvent.click(screen.getByRole("button", { name: "Electrical" }));
expect(onPatch).toHaveBeenCalledWith({
pm: "Electrical",
serviceId: "3",
extraServices: [],
vendorId: "",
vendorName: "",
techPhone: "",
});
});
});