import { strict as assert } from "node:assert"; import { describe, it } from "node:test"; import { pickLanguage } from "../app/services/invoice/i18n"; import { isDuplicateWebhook, type DedupeDeps } from "../app/services/webhooks/dedupe.server"; describe("pickLanguage", () => { it("returns 'de' only for explicit German locales", () => { assert.equal(pickLanguage("de"), "de"); assert.equal(pickLanguage("de-AT"), "de"); assert.equal(pickLanguage("de-DE"), "de"); assert.equal(pickLanguage("de_CH"), "de"); assert.equal(pickLanguage("DE-AT"), "de"); // case-insensitive }); it("returns 'en' for non-German locales (regression: it/fr/es no longer fall back to de)", () => { assert.equal(pickLanguage("en"), "en"); assert.equal(pickLanguage("en-US"), "en"); assert.equal(pickLanguage("it"), "en"); assert.equal(pickLanguage("it-IT"), "en"); assert.equal(pickLanguage("fr"), "en"); assert.equal(pickLanguage("fr-FR"), "en"); assert.equal(pickLanguage("es"), "en"); assert.equal(pickLanguage("hu-HU"), "en"); }); it("falls back to 'de' for empty/unknown input so the per-shop default chain still works", () => { assert.equal(pickLanguage(undefined), "de"); assert.equal(pickLanguage(null), "de"); assert.equal(pickLanguage(""), "de"); }); }); function makeRequest(headers: Record = {}): Request { return new Request("https://example.com/webhooks/test", { method: "POST", headers, }); } function makeDeps(behaviour: "ok" | "p2002" | "boom"): DedupeDeps { return { db: { processedWebhook: { create: async () => { if (behaviour === "ok") return {}; if (behaviour === "p2002") { const err = new Error("Unique constraint failed") as Error & { code?: string }; err.code = "P2002"; throw err; } throw new Error("DB unavailable"); }, }, }, }; } describe("isDuplicateWebhook", () => { it("returns false on first delivery (insert succeeds)", async () => { const req = makeRequest({ "x-shopify-webhook-id": "abc-123" }); assert.equal(await isDuplicateWebhook(req, "shop.myshopify.com", "ORDERS_CREATE", makeDeps("ok")), false); }); it("returns true on a retried delivery (P2002)", async () => { const req = makeRequest({ "x-shopify-webhook-id": "abc-123" }); assert.equal(await isDuplicateWebhook(req, "shop.myshopify.com", "ORDERS_CREATE", makeDeps("p2002")), true); }); it("returns false (and proceeds) when the dedupe table itself errors \u2014 fail-open, never drop a webhook silently", async () => { const req = makeRequest({ "x-shopify-webhook-id": "abc-123" }); assert.equal(await isDuplicateWebhook(req, "shop.myshopify.com", "ORDERS_CREATE", makeDeps("boom")), false); }); it("returns false when the X-Shopify-Webhook-Id header is missing (test harness / non-Shopify caller)", async () => { const req = makeRequest(); assert.equal(await isDuplicateWebhook(req, "shop.myshopify.com", "ORDERS_CREATE", makeDeps("ok")), false); }); });