106 lines
3.7 KiB
JavaScript
106 lines
3.7 KiB
JavaScript
import React from "react";
|
||
import { renderToStaticMarkup } from "react-dom/server";
|
||
import { describe, expect, it } from "vitest";
|
||
import { DeliveryChoiceFlow } from "./DeliveryChoiceFlow";
|
||
|
||
describe("DeliveryChoiceFlow", () => {
|
||
it("renders the active delivery choice with half-day actions", () => {
|
||
const markup = renderToStaticMarkup(
|
||
<DeliveryChoiceFlow
|
||
invitation={{
|
||
state: "awaiting_choice",
|
||
orderNumber: "CD-240031",
|
||
customerName: "Мария Волкова",
|
||
availableSlots: ["Первая половина дня", "Вторая половина дня"],
|
||
}}
|
||
onConfirmChoice={() => {}}
|
||
onRequestNewLink={() => {}}
|
||
/>,
|
||
);
|
||
|
||
expect(markup).toContain("Выберите время доставки");
|
||
expect(markup).toContain("Первая половина дня");
|
||
expect(markup).toContain("Вторая половина дня");
|
||
expect(markup).toContain("Ожидает ответа клиента");
|
||
});
|
||
|
||
it("renders order items with quantities when they are provided", () => {
|
||
const markup = renderToStaticMarkup(
|
||
<DeliveryChoiceFlow
|
||
invitation={{
|
||
state: "awaiting_choice",
|
||
orderNumber: "CD-240031",
|
||
customerName: "Мария Волкова",
|
||
orderItems: [
|
||
{ name: "Кухонный гарнитур", quantity: "1 комплект" },
|
||
{ name: "Фурнитура Blum", quantity: "12 шт" },
|
||
{ name: "Монтажный комплект" },
|
||
],
|
||
availableSlots: ["Первая половина дня", "Вторая половина дня"],
|
||
}}
|
||
onConfirmChoice={() => {}}
|
||
onRequestNewLink={() => {}}
|
||
/>,
|
||
);
|
||
|
||
expect(markup).toContain("Состав заказа");
|
||
expect(markup).toContain("Кухонный гарнитур");
|
||
expect(markup).toContain("1 комплект");
|
||
expect(markup).toContain("Фурнитура Blum");
|
||
expect(markup).toContain("12 шт");
|
||
expect(markup).toContain("Монтажный комплект");
|
||
});
|
||
|
||
it("renders a logistics notice when the order is transferred", () => {
|
||
const markup = renderToStaticMarkup(
|
||
<DeliveryChoiceFlow
|
||
invitation={{
|
||
state: "transferred_to_logistics",
|
||
orderNumber: "CD-240031",
|
||
customerName: "Мария Волкова",
|
||
}}
|
||
onConfirmChoice={() => {}}
|
||
onRequestNewLink={() => {}}
|
||
/>,
|
||
);
|
||
|
||
expect(markup).toContain("С вами свяжется логист");
|
||
expect(markup).not.toContain("Выберите время доставки");
|
||
});
|
||
|
||
it("renders a paid storage notice when delivery is not coordinated", () => {
|
||
const markup = renderToStaticMarkup(
|
||
<DeliveryChoiceFlow
|
||
invitation={{
|
||
state: "paid_storage",
|
||
orderNumber: "CD-240031",
|
||
customerName: "Мария Волкова",
|
||
}}
|
||
onConfirmChoice={() => {}}
|
||
onRequestNewLink={() => {}}
|
||
/>,
|
||
);
|
||
|
||
expect(markup).toContain("Платное хранение");
|
||
expect(markup).toContain("Заказ переведен на платное хранение");
|
||
});
|
||
|
||
it("renders awaiting choice state with slot info", () => {
|
||
const markup = renderToStaticMarkup(
|
||
<DeliveryChoiceFlow
|
||
invitation={{
|
||
state: "opened",
|
||
orderNumber: "CD-240032",
|
||
customerName: "Александр Савин",
|
||
availableSlots: ["15 апреля, первая половина дня"],
|
||
}}
|
||
onConfirmChoice={() => {}}
|
||
onRequestNewLink={() => {}}
|
||
/>,
|
||
);
|
||
|
||
expect(markup).toContain("CD-240032");
|
||
expect(markup).toContain("Александр Савин");
|
||
});
|
||
});
|