import { createHash } from "node:crypto"; import { readFile } from "node:fs/promises"; import { join } from "node:path"; import { describe, expect, it } from "vitest"; import { customTravelers, isUpstreamTraveler } from "@/lib/catalog/travelers"; describe("custom Traveler catalog", () => { it("blacklists every upstream Traveler spelling variant", () => { expect(isUpstreamTraveler("Traveler")).toBe(true); expect(isUpstreamTraveler(" traveler ")).toBe(true); expect(isUpstreamTraveler("TRAVELER")).toBe(true); expect(isUpstreamTraveler("Traveler Pyro")).toBe(false); }); it("defines seven distinct element records with distinct local images", async () => { expect(customTravelers).toHaveLength(7); expect(new Set(customTravelers.map((traveler) => traveler.key)).size).toBe(7); expect(new Set(customTravelers.map((traveler) => traveler.element)).size).toBe(7); const hashes = await Promise.all(customTravelers.map(async (traveler) => { const body = await readFile(join(process.cwd(), "lib/catalog/assets", traveler.asset)); return createHash("sha256").update(body).digest("hex"); })); expect(new Set(hashes).size).toBe(7); }); });