import { expect, test } from "bun:test"; import { createContext, defineEndpoint } from "../src/index.ts"; import { v } from "@wrnexus/validation"; const user = v.object({ name: v.string().min(2), email: v.string().email() }); const endpoint = defineEndpoint({ input: user, output: user, handler(input) { return input; }, }); test("typed endpoints unwrap official validation schemas and return bounded validation errors", async () => { const request = new Request("https://example.test/api/user"); const ctx = createContext(request, new URL(request.url)); const invalid = await endpoint(ctx, { name: "A", email: "bad" }); expect(invalid.status).toBe(400); expect(await invalid.json()).toEqual({ error: { code: "VALIDATION_ERROR", message: "Endpoint validation failed.", details: { name: "Must be at least 2 characters", email: "Must be a valid email", }, }, }); const valid = await endpoint(ctx, { name: "Ada", email: "ada@example.test" }); expect(await valid.json()).toEqual({ data: { name: "Ada", email: "ada@example.test" } }); });