Skip to main content
Glama
dennypradipta

Date Operations MCP

params.test.ts2.91 kB
import { describe, expect, it } from "vitest"; import { addParams, compareParams, differenceParams, formatParams, subtractParams, } from "../params.js"; // Helper to make ISO string for clarity const iso = (d: Date) => d.toISOString(); describe("formatParams", () => { it("accepts valid params", () => { const data = { datetime: iso(new Date()), format: "yyyy-MM-dd" }; const parsed = formatParams.parse(data); expect(parsed).toEqual(data); }); it.each([ { case: "missing date", data: { format: "yyyy-MM-dd" } }, { case: "missing format", data: { datetime: iso(new Date()) } }, { case: "invalid date format", data: { date: "not-a-date", format: "x" } }, ])("rejects invalid: $case", ({ data }) => { expect(() => formatParams.parse(data as never)).toThrowError(); }); }); describe("addParams", () => { it("accepts valid params", () => { const data = { datetime: iso(new Date()), duration: { years: 1 } }; const parsed = addParams.parse(data); expect(parsed).toEqual(data); }); // z.custom() accepts any value, and the field is treated permissively here it.each([ { case: "missing duration", data: { datetime: iso(new Date()) } }, { case: "invalid duration type", data: { datetime: iso(new Date()), duration: { years: 1, }, }, }, ])("allows duration variations: $case", ({ data }) => { expect(() => addParams.parse(data as never)).not.toThrowError(); const parsed = addParams.parse(data as never); expect(parsed).toEqual(data); }); }); describe("subtractParams", () => { it("accepts valid params", () => { const data = { datetime: iso(new Date()), duration: { months: 2 } }; const parsed = subtractParams.parse(data); expect(parsed).toEqual(data); }); it.each([ { case: "missing duration", data: { datetime: iso(new Date()) } }, { case: "invalid duration type", data: { datetime: iso(new Date()), duration: { years: 1, }, }, }, ])("allows duration variations: $case", ({ data }) => { expect(() => subtractParams.parse(data as never)).not.toThrowError(); const parsed = subtractParams.parse(data as never); expect(parsed).toEqual(data); }); }); describe("differenceParams", () => { it("accepts valid params", () => { const data = { datetimeFrom: iso(new Date()), datetimeTo: iso(new Date(Date.now() + 1000)), unit: "seconds" as const, }; const parsed = differenceParams.parse(data); expect(parsed).toEqual(data); }); }); describe("compareParams", () => { it("accepts valid params", () => { const data = { firstDatetime: iso(new Date()), secondDatetime: iso(new Date()), operator: "after" as const, }; const parsed = compareParams.parse(data); expect(parsed).toEqual(data); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dennypradipta/date-operations-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server