28 lines
1003 B
TypeScript
28 lines
1003 B
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { isFavorite, readFavorites, toggleFavorite } from "./favorites";
|
|
|
|
describe("favorites localStorage helpers", () => {
|
|
it("returns an empty list for missing, invalid, or non-array values", () => {
|
|
expect(readFavorites()).toEqual([]);
|
|
|
|
localStorage.setItem("ark_favorites", "not-json");
|
|
expect(readFavorites()).toEqual([]);
|
|
|
|
localStorage.setItem("ark_favorites", JSON.stringify({ id: "r1" }));
|
|
expect(readFavorites()).toEqual([]);
|
|
});
|
|
|
|
it("filters non-string entries and toggles favorite ids", () => {
|
|
localStorage.setItem("ark_favorites", JSON.stringify(["r1", 123, "r2"]));
|
|
expect(readFavorites()).toEqual(["r1", "r2"]);
|
|
|
|
expect(toggleFavorite("r3")).toBe(true);
|
|
expect(isFavorite("r3")).toBe(true);
|
|
expect(readFavorites()).toEqual(["r1", "r2", "r3"]);
|
|
|
|
expect(toggleFavorite("r1")).toBe(false);
|
|
expect(isFavorite("r1")).toBe(false);
|
|
expect(readFavorites()).toEqual(["r2", "r3"]);
|
|
});
|
|
});
|