From 7e4b9d9be9e1d12f796b4440dd0a5b04e5c94c5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Mon, 27 Jul 2026 13:41:57 +0200 Subject: [PATCH] test(integrations): cover the leg-set semantics a single slot could not hold --- src/lib/integrations/__tests__/status.test.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/lib/integrations/__tests__/status.test.ts b/src/lib/integrations/__tests__/status.test.ts index 50cfb4291..8699b3f19 100644 --- a/src/lib/integrations/__tests__/status.test.ts +++ b/src/lib/integrations/__tests__/status.test.ts @@ -1154,6 +1154,23 @@ describe("recordSyncSuccess — leg scoping", () => { expect(prisma.integrationStatus.upsert).toHaveBeenCalledOnce(); }); + it("drops a non-string member rather than coercing it into a leg name", async () => { + vi.mocked(prisma.integrationStatus.findUnique).mockResolvedValueOnce({ + state: "error_transient", + failingLegs: ["sleep", 42, null], + } as never); + vi.mocked(prisma.integrationStatus.update).mockResolvedValueOnce( + {} as never, + ); + + await recordSyncSuccess("u1", "withings", { leg: "ecg" }); + + const args = vi.mocked(prisma.integrationStatus.update).mock.calls[0]![0]!; + // Coercing `42` into `"42"` would invent a leg no caller can ever succeed + // for, holding the row in error against a failure nobody recorded. + expect(args.data).toMatchObject({ failingLegs: ["sleep"] }); + }); + it("reads a malformed leg column as unattributed rather than guessing", async () => { vi.mocked(prisma.integrationStatus.findUnique).mockResolvedValueOnce({ state: "error_transient",