44 lines
2.0 KiB
TypeScript
44 lines
2.0 KiB
TypeScript
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");
|
|
});
|
|
});
|