feat: Erinnerungs-Checkboxen, Anbieterlogos via Logo.dev, Kontakte in Einstellungen
This commit is contained in:
1 parent
11bef8748f
commit
a1195223e0
18 files changed
+381
-50
No files matched your search
@@ -0,0 +1,43 @@
|
||||
import { describe, it, expect, vi, afterEach } from "vitest";
|
||||
import { logoImageUrl, monogram, normalizeDomain, searchLogos } from "../lib/logo";
|
||||
|
||||
afterEach(() => {
|
||||
vi.unstubAllGlobals();
|
||||
delete process.env.LOGO_DEV_SECRET_KEY;
|
||||
delete process.env.LOGO_DEV_PUBLISHABLE_KEY;
|
||||
});
|
||||
|
||||
describe("logo", () => {
|
||||
it("normalizeDomain akzeptiert nur gültige Domains", () => {
|
||||
expect(normalizeDomain("Therme-Erding.de")).toBe("therme-erding.de");
|
||||
expect(normalizeDomain(" keinedomain ")).toBeNull();
|
||||
expect(normalizeDomain(null)).toBeNull();
|
||||
});
|
||||
it("logoImageUrl braucht Domain und öffentlichen Key", () => {
|
||||
process.env.LOGO_DEV_PUBLISHABLE_KEY = "pk_test";
|
||||
expect(logoImageUrl("stripe.com")).toBe("https://img.logo.dev/stripe.com?token=pk_test&size=128&format=png");
|
||||
expect(logoImageUrl(null)).toBeNull();
|
||||
delete process.env.LOGO_DEV_PUBLISHABLE_KEY;
|
||||
expect(logoImageUrl("stripe.com")).toBeNull();
|
||||
});
|
||||
it("monogram bildet Kürzel aus dem Namen", () => {
|
||||
expect(monogram("Therme Erding")).toBe("TE");
|
||||
expect(monogram("dm")).toBe("DM");
|
||||
expect(monogram(" ")).toBe("?");
|
||||
});
|
||||
it("searchLogos mappt Treffer und begrenzt auf 8", async () => {
|
||||
process.env.LOGO_DEV_SECRET_KEY = "sk_test";
|
||||
process.env.LOGO_DEV_PUBLISHABLE_KEY = "pk_test";
|
||||
const items = Array.from({ length: 10 }, (_, i) => ({ name: `Shop ${i}`, domain: `shop${i}.de` }));
|
||||
vi.stubGlobal("fetch", vi.fn().mockResolvedValue({ ok: true, json: async () => items }));
|
||||
const res = await searchLogos("shop");
|
||||
expect(res).toHaveLength(8);
|
||||
expect(res[0]).toEqual({ name: "Shop 0", domain: "shop0.de", logoUrl: expect.stringContaining("shop0.de") });
|
||||
});
|
||||
it("searchLogos wirft ohne Key und bei Fehlerstatus", async () => {
|
||||
await expect(searchLogos("x")).rejects.toThrow("LOGO_DEV_SECRET_KEY fehlt");
|
||||
process.env.LOGO_DEV_SECRET_KEY = "sk_test";
|
||||
vi.stubGlobal("fetch", vi.fn().mockResolvedValue({ ok: false, status: 401 }));
|
||||
await expect(searchLogos("x")).rejects.toThrow("Logosuche 401");
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user