import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { readMigrated } from "./legacyStorage"; describe("readMigrated", () => { beforeEach(() => localStorage.clear()); afterEach(() => vi.restoreAllMocks()); it("переносит старый ключ jira-hub-* в sdlc-hub-*", () => { localStorage.setItem("jira-hub-token", "abc"); expect(readMigrated("sdlc-hub-token")).toBe("abc"); expect(localStorage.getItem("sdlc-hub-token")).toBe("abc"); expect(localStorage.getItem("jira-hub-token")).toBeNull(); }); it("при наличии обоих возвращает новое и не трогает старое", () => { localStorage.setItem("jira-hub-token", "old"); localStorage.setItem("sdlc-hub-token", "new"); expect(readMigrated("sdlc-hub-token")).toBe("new"); expect(localStorage.getItem("jira-hub-token")).toBe("old"); }); it("без обоих ключей возвращает null и ничего не пишет", () => { expect(readMigrated("sdlc-hub-token")).toBeNull(); expect(localStorage.length).toBe(0); }); it("исключение хранилища даёт null", () => { vi.spyOn(Storage.prototype, "getItem").mockImplementation(() => { throw new Error("closed"); }); expect(readMigrated("sdlc-hub-token")).toBeNull(); }); it("бросающий setItem при переносе: значение всё равно возвращается", () => { localStorage.setItem("jira-hub-token", "abc"); vi.spyOn(Storage.prototype, "setItem").mockImplementation(() => { throw new Error("quota"); }); expect(readMigrated("sdlc-hub-token")).toBe("abc"); }); it("бросающий removeItem при переносе: значение всё равно возвращается", () => { localStorage.setItem("jira-hub-token", "abc"); vi.spyOn(Storage.prototype, "removeItem").mockImplementation(() => { throw new Error("closed"); }); expect(readMigrated("sdlc-hub-token")).toBe("abc"); }); });