import { describe, expect, it } from "vitest"; import { effectiveAdditionalContacts, effectiveCompany, effectivePoc, effectiveSite, effectiveSitePlace, } from "@/domain/work-orders/utils/effective-completion-snapshot"; describe("effective completion snapshot", () => { it("prefers frozen values for a completed work order", () => { const frozenSite = { code: "BK5", city: "Chicago", state: "IL" }; expect(effectiveSite({ status: "Completed", frozenSite })).toEqual(frozenSite); expect(effectiveSitePlace({ status: "Completed", frozenSite })).toEqual({ city: "Chicago", state: "IL", }); expect( effectiveCompany({ status: "Completed", company: "Live Co", tech: "Live Tech", techPhone: "222", frozenCompany: { name: "Frozen Co", contactName: "Frozen Tech", phone: "111" }, }), ).toMatchObject({ name: "Frozen Co", contactName: "Frozen Tech", phone: "111" }); expect( effectivePoc({ status: "Completed", pocName: "Live POC", pocPhone: "222", pocNotes: "live", additionalContacts: [], frozenPoc: { contacts: [{ name: "Frozen POC", phone: "111" }], notes: "frozen", }, }), ).toEqual({ contacts: [{ name: "Frozen POC", phone: "111" }], notes: "frozen", }); }); it("uses live values while open or when a completed snapshot is missing", () => { expect(effectiveSite({ status: "Scheduled", frozenSite: { city: "Old" } })).toBeUndefined(); expect(effectiveSitePlace({ status: "Completed" })).toBeNull(); expect( effectiveCompany({ status: "Scheduled", company: "Live Co", tech: "Live Tech", techPhone: "222", frozenCompany: { name: "Old Co" }, }), ).toMatchObject({ name: "Live Co", contactName: "Live Tech", phone: "222" }); expect( effectivePoc({ status: "Completed", pocName: "Live POC", pocPhone: "222", pocNotes: "live", additionalContacts: [{ name: "Backup", phone: "333", notes: "gate hours" }], }), ).toEqual({ contacts: [ { name: "Live POC", phone: "222" }, { name: "Backup", phone: "333", notes: "gate hours" }, ], notes: "live", }); expect( effectiveAdditionalContacts({ status: "Scheduled", pocName: "Live POC", pocPhone: "222", pocNotes: "live", additionalContacts: [{ name: "Backup", phone: "333", notes: "gate hours" }], }), ).toEqual([{ name: "Backup", phone: "333", notes: "gate hours" }]); }); it("keeps extra-contact notes on the open work-order path", () => { expect( effectiveAdditionalContacts({ status: "Scheduled", pocName: "Primary", pocPhone: "111", pocNotes: "", additionalContacts: [{ name: "Backup", phone: "333", notes: "gate hours" }], frozenPoc: { contacts: [ { name: "Frozen", phone: "000" }, { name: "Frozen Extra", phone: "999", notes: "ignored while open" }, ], }, }), ).toEqual([{ name: "Backup", phone: "333", notes: "gate hours" }]); }); it("treats missing additional contacts as an empty live contact list", () => { expect( effectivePoc({ status: "Scheduled", pocName: "Primary", pocPhone: "111", pocNotes: "", }), ).toEqual({ contacts: [{ name: "Primary", phone: "111" }], notes: "", }); }); });