import { describe, expect, it } from "vitest"; import { DEFAULT_AVAILABLE_SLOTS, getClientInvitationStateFromOrderStatus, getOrderUpdateForDeliveryInvitationAction, normalizeAvailableSlots, } from "./delivery-invitations"; describe("delivery invitation helpers", () => { it("maps invitation creation to awaiting customer response", () => { expect(getOrderUpdateForDeliveryInvitationAction("create_delivery_invitation")).toEqual({ status: "Ожидает ответа клиента", deliveryAgreementStatus: "Отправлено клиенту", }); }); it("maps manual logistics transfer to the logistics handoff status", () => { expect(getOrderUpdateForDeliveryInvitationAction("transfer_to_logistics")).toEqual({ status: "Передан логисту", deliveryAgreementStatus: "Нет ответа", }); }); it("derives public client state from the current order status", () => { expect(getClientInvitationStateFromOrderStatus("Ожидает ответа клиента")).toBe("awaiting_choice"); expect(getClientInvitationStateFromOrderStatus("Передан логисту")).toBe("transferred_to_logistics"); expect(getClientInvitationStateFromOrderStatus("Платное хранение")).toBe("paid_storage"); expect(getClientInvitationStateFromOrderStatus("Доставлен")).toBe("delivered"); }); it("normalizes delivery slots and falls back to the default list", () => { expect(normalizeAvailableSlots([" Утро ", "", "Вечер", "Утро"])).toEqual(["Утро", "Вечер"]); expect(normalizeAvailableSlots([])).toEqual(DEFAULT_AVAILABLE_SLOTS); }); });