- T3.3/T4.6/O-2: *.tsbuildinfo в .gitignore - T3.4: cardState принимает depth только целым неотрицательным, иначе 0 - T4.1: отказ от закрытия («Остаться») сбрасывает closingDirect через CloseAbortContext - T4.4: у <dialog> запасное имя aria-label = ключ задачи (загрузка, 404, ошибка) - T5.1: проверка закрытия формы заметки в тесте T14.1 - T5.3: уникальный key строки связи (индекс + ключ + тег) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
28 lines
1.8 KiB
TypeScript
28 lines
1.8 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
||
import { BOARD_CARD_STATE, cardState, LIST_BACKGROUND, openCardState } from "./modal.ts";
|
||
|
||
describe("состояние окна в истории", () => {
|
||
it("со страницы — фон = адрес страницы, глубина 1", () => {
|
||
expect(openCardState({ pathname: "/issues", search: "?sprint=S", state: null }))
|
||
.toEqual({ background: { pathname: "/issues", search: "?sprint=S" }, depth: 1, direct: false });
|
||
});
|
||
it("из окна — тот же фон, глубина + 1, признак прямого адреса сохраняется", () => {
|
||
const s = { background: LIST_BACKGROUND, depth: 0, direct: true };
|
||
expect(openCardState({ pathname: "/issues/A-1", search: "", state: s })).toEqual({ background: LIST_BACKGROUND, depth: 1, direct: true });
|
||
expect(openCardState({ pathname: "/issues/A-2", search: "", state: BOARD_CARD_STATE }))
|
||
.toEqual({ background: { pathname: "/board", search: "" }, depth: 2, direct: false });
|
||
});
|
||
it("чужое или битое state — не состояние окна", () => {
|
||
expect(cardState(null)).toBeNull();
|
||
expect(cardState({ background: "/issues", depth: 1 })).toBeNull();
|
||
expect(cardState({ background: { pathname: "/issues", search: "" }, depth: "1" })).toBeNull();
|
||
expect(cardState({ background: { pathname: "/issues", search: "" }, depth: 1 }))
|
||
.toEqual({ background: { pathname: "/issues", search: "" }, depth: 1, direct: false });
|
||
});
|
||
it("глубина — только целое неотрицательное, иначе 0", () => {
|
||
const bg = { pathname: "/issues", search: "" };
|
||
for (const depth of [-1, 1.5, NaN, Infinity]) expect(cardState({ background: bg, depth })?.depth).toBe(0);
|
||
expect(cardState({ background: bg, depth: 3 })?.depth).toBe(3);
|
||
});
|
||
});
|