36 lines
1.9 KiB
TypeScript
36 lines
1.9 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
||
import { dayDiff, emptyModel, fmtDate, fmtStamp, notStarted, plural, shortName, sortableDate, unassigned, whoKey } from "./util.ts";
|
||
|
||
describe("util", () => {
|
||
it("sortableDate приводит даты Jira к ГГГГ-ММ-ДД", () => {
|
||
expect(sortableDate("2026-10-20T10:00:00")).toBe("2026-10-20");
|
||
expect(sortableDate("5.1.2026")).toBe("2026-01-05");
|
||
expect(sortableDate("20/окт/26")).toBe("2026-10-20");
|
||
expect(sortableDate("10/Oct/2026")).toBe("2026-10-10");
|
||
expect(sortableDate("потом")).toBe("потом");
|
||
});
|
||
it("shortName, plural, fmtDate, dayDiff", () => {
|
||
expect(shortName("Степанов Максим Александрович")).toBe("Степанов М. А.");
|
||
expect(shortName("Stepanov-MAl")).toBe("Stepanov-MAl");
|
||
expect(shortName("")).toBe("не назначен");
|
||
expect(plural(21, "задача", "задачи", "задач")).toBe("21 задача");
|
||
expect(plural(12, "задача", "задачи", "задач")).toBe("12 задач");
|
||
expect(fmtDate("2026-10-20")).toBe("20.10");
|
||
expect(dayDiff("2026-10-14", "2026-10-20")).toBe(6);
|
||
expect(dayDiff("", "2026-10-20")).toBeNull();
|
||
});
|
||
it("notStarted, unassigned, whoKey, fmtStamp, emptyModel", () => {
|
||
expect(notStarted("Backlog")).toBe(true);
|
||
expect(notStarted("К выполнению")).toBe(true);
|
||
expect(notStarted("В работе")).toBe(false);
|
||
expect(unassigned("")).toBe(true);
|
||
expect(unassigned("Не назначен")).toBe(true);
|
||
expect(unassigned("Иванов")).toBe(false);
|
||
expect(whoKey(" Иванов ")).toBe("Иванов");
|
||
expect(whoKey("unassigned")).toBe("");
|
||
expect(fmtStamp("не дата")).toBe("не дата");
|
||
expect(fmtStamp("2026-10-14T09:05:00")).toMatch(/^14\.10 09:05$/);
|
||
expect(emptyModel("пусто")).toMatchObject({ nodes: [], links: [], emptyText: "пусто", missing: 0 });
|
||
});
|
||
});
|