36 lines
1.6 KiB
TypeScript
36 lines
1.6 KiB
TypeScript
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);
|
|
});
|
|
});
|