We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/alexander-zuev/kollektiv-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
import { FormValidationError, parseFormData } from "@/web/utils/form";
// form.test.ts
import { describe, expect, it, vi } from "vitest";
import { z } from "zod";
describe("parseFormData", () => {
it("should parse and validate form data successfully", async () => {
const mockContext = {
req: {
parseBody: vi.fn().mockResolvedValue({ name: "John", age: 30 }),
},
} as any;
const schema = z.object({
name: z.string(),
age: z.number(),
});
const result = await parseFormData(mockContext, schema);
expect(result).toEqual({ name: "John", age: 30 });
expect(mockContext.req.parseBody).toHaveBeenCalledOnce();
});
it("should throw FormValidationError for invalid data", async () => {
const mockContext = {
req: {
parseBody: vi.fn().mockResolvedValue({ name: "John", age: "not-a-number" }),
},
} as any;
const schema = z.object({
name: z.string(),
age: z.number(),
});
await expect(parseFormData(mockContext, schema)).rejects.toThrowError(FormValidationError);
expect(mockContext.req.parseBody).toHaveBeenCalledOnce();
});
it("should throw an error if parsing the body fails", async () => {
const mockContext = {
req: {
parseBody: vi.fn().mockRejectedValue(new Error("Parsing failed")),
},
} as any;
const schema = z.object({
name: z.string(),
age: z.number(),
});
await expect(parseFormData(mockContext, schema)).rejects.toThrowError(
"Failed to parse or validate form data.",
);
expect(mockContext.req.parseBody).toHaveBeenCalledOnce();
});
});