|
| 1 | +import { describe, expect, it, vi } from "vitest"; |
| 2 | +import { z as z3 } from "zod/v3"; |
| 3 | +import { z as z4 } from "zod/v4"; |
| 4 | +import { ZodMessageSender, sendMessageInCatalog } from "./zodMessageHandler.js"; |
| 5 | + |
| 6 | +const schemas = [ |
| 7 | + [ |
| 8 | + "Zod 3", |
| 9 | + z3.object({ value: z3.string().transform(Number), added: z3.string().default("default") }), |
| 10 | + ], |
| 11 | + [ |
| 12 | + "Zod 4", |
| 13 | + z4.object({ value: z4.string().transform(Number), added: z4.string().default("default") }), |
| 14 | + ], |
| 15 | +] as const; |
| 16 | + |
| 17 | +describe("Zod message sending", () => { |
| 18 | + it.each(schemas)("ZodMessageSender preserves the original %s payload", async (_name, schema) => { |
| 19 | + const catalog = { TEST: schema }; |
| 20 | + const payload = { value: "42", extra: "preserved" }; |
| 21 | + const sender = vi.fn(async (_message: unknown) => {}); |
| 22 | + const messageSender = new ZodMessageSender({ schema: catalog, sender }); |
| 23 | + |
| 24 | + await messageSender.send("TEST", payload); |
| 25 | + |
| 26 | + expect(sender).toHaveBeenCalledWith({ type: "TEST", payload, version: "v1" }); |
| 27 | + }); |
| 28 | + |
| 29 | + it.each(schemas)( |
| 30 | + "sendMessageInCatalog preserves the original %s payload", |
| 31 | + async (_name, schema) => { |
| 32 | + const catalog = { TEST: schema }; |
| 33 | + const payload = { value: "42", extra: "preserved" }; |
| 34 | + const sender = vi.fn(async (_message: unknown) => {}); |
| 35 | + |
| 36 | + await sendMessageInCatalog(catalog, "TEST", payload, sender); |
| 37 | + |
| 38 | + expect(sender).toHaveBeenCalledWith({ type: "TEST", payload, version: "v1" }); |
| 39 | + } |
| 40 | + ); |
| 41 | +}); |
0 commit comments