Skip to main content
Glama
dennypradipta

Date Operations MCP

tools.test.ts7.72 kB
import { expect, test, describe } from "vitest"; import { addTool, compareTool, differenceTool, formatTool, nowTool, subtractTool, } from "../tools.js"; import { add, format, sub } from "date-fns"; test("now tool", async () => { const date = new Date(); const result = await nowTool(); expect(result.text).toBe(date.toISOString()); }); test("format tool", async () => { const date = new Date(); const expected = format(date, "yyyy-MM-dd"); const result = await formatTool({ datetime: date.toISOString(), format: "yyyy-MM-dd", }); expect(result.text).toBe(expected); }); test("add tool", async () => { const date = new Date(); const expected = add(date, { years: 1 }); const result = await addTool({ datetime: date.toISOString(), duration: { years: 1, months: 0, weeks: 0, days: 0, hours: 0, minutes: 0, seconds: 0, }, }); expect(result.text).toBe(expected.toISOString()); }); test("subtract tool", async () => { const date = new Date(); const expected = sub(date, { years: 1 }); const result = await subtractTool({ datetime: date.toISOString(), duration: { years: 1, months: 0, weeks: 0, days: 0, hours: 0, minutes: 0, seconds: 0, }, }); expect(result.text).toBe(expected.toISOString()); }); describe("difference tool", async () => { test("difference in seconds", async () => { const dateFrom = new Date(); const dateTo = add(dateFrom, { seconds: 1 }); const result = await differenceTool({ datetimeFrom: dateFrom.toISOString(), datetimeTo: dateTo.toISOString(), unit: "seconds", }); expect(result.text).toBe( `Difference between ${dateFrom.toISOString()} and ${dateTo.toISOString()} is 1 seconds` ); }); test("difference in minutes", async () => { const dateFrom = new Date(); const dateTo = add(dateFrom, { minutes: 1, seconds: 1 }); const result = await differenceTool({ datetimeFrom: dateFrom.toISOString(), datetimeTo: dateTo.toISOString(), unit: "minutes", }); expect(result.text).toBe( `Difference between ${dateFrom.toISOString()} and ${dateTo.toISOString()} is 1 minutes` ); }); test("difference in hours", async () => { const dateFrom = new Date(); const dateTo = await add(dateFrom, { hours: 1, minutes: 1, seconds: 1 }); const result = await differenceTool({ datetimeFrom: dateFrom.toISOString(), datetimeTo: dateTo.toISOString(), unit: "hours", }); expect(result.text).toBe( `Difference between ${dateFrom.toISOString()} and ${dateTo.toISOString()} is 1 hours` ); }); test("difference in days", async () => { const dateFrom = new Date(); const dateTo = add(dateFrom, { days: 1, hours: 1, minutes: 1, seconds: 1 }); const result = await differenceTool({ datetimeFrom: dateFrom.toISOString(), datetimeTo: dateTo.toISOString(), unit: "days", }); expect(result.text).toBe( `Difference between ${dateFrom.toISOString()} and ${dateTo.toISOString()} is 1 days` ); }); test("difference in weeks", async () => { const dateFrom = new Date(); const dateTo = add(dateFrom, { weeks: 1, days: 1, hours: 1, minutes: 1, seconds: 1, }); const result = await differenceTool({ datetimeFrom: dateFrom.toISOString(), datetimeTo: dateTo.toISOString(), unit: "weeks", }); expect(result.text).toBe( `Difference between ${dateFrom.toISOString()} and ${dateTo.toISOString()} is 1 weeks` ); }); test("difference in months", async () => { const dateFrom = new Date(); const dateTo = add(dateFrom, { months: 1, weeks: 1, days: 1, hours: 1, minutes: 1, seconds: 1, }); const result = await differenceTool({ datetimeFrom: dateFrom.toISOString(), datetimeTo: dateTo.toISOString(), unit: "months", }); expect(result.text).toBe( `Difference between ${dateFrom.toISOString()} and ${dateTo.toISOString()} is 1 months` ); }); test("difference in years", async () => { const dateFrom = new Date(); const dateTo = add(dateFrom, { years: 1, months: 1, weeks: 1, days: 1, hours: 1, minutes: 1, seconds: 1, }); const result = await differenceTool({ datetimeFrom: dateFrom.toISOString(), datetimeTo: dateTo.toISOString(), unit: "years", }); expect(result.text).toBe( `Difference between ${dateFrom.toISOString()} and ${dateTo.toISOString()} is 1 years` ); }); test("difference in invalid unit", async () => { const dateFrom = new Date(); const dateTo = add(dateFrom, { years: 1 }); await expect( differenceTool({ datetimeFrom: dateFrom.toISOString(), datetimeTo: dateTo.toISOString(), unit: "something" as never, }) ).rejects.toThrow("Invalid unit: something"); }); }); describe("compare tool", async () => { describe("compare after", async () => { test("compare after false", async () => { const dateFrom = new Date(); const dateTo = add(dateFrom, { seconds: 1 }); const result = await compareTool({ firstDatetime: dateFrom.toISOString(), secondDatetime: dateTo.toISOString(), operator: "after", }); expect(result.text).toBe(`false`); }); test("compare after true", async () => { const dateFrom = new Date(); const dateTo = sub(dateFrom, { seconds: 1 }); const result = await compareTool({ firstDatetime: dateFrom.toISOString(), secondDatetime: dateTo.toISOString(), operator: "after", }); expect(result.text).toBe(`true`); }); }); describe("compare before", async () => { test("compare before false", async () => { const dateFrom = new Date(); const dateTo = sub(dateFrom, { seconds: 1 }); const result = await compareTool({ firstDatetime: dateFrom.toISOString(), secondDatetime: dateTo.toISOString(), operator: "before", }); expect(result.text).toBe(`false`); }); test("compare before true", async () => { const dateFrom = new Date(); const dateTo = add(dateFrom, { seconds: 1 }); const result = await compareTool({ firstDatetime: dateFrom.toISOString(), secondDatetime: dateTo.toISOString(), operator: "before", }); expect(result.text).toBe(`true`); }); }); describe("compare equal", async () => { test("compare equal false", async () => { const dateFrom = new Date(); const dateTo = add(dateFrom, { seconds: 1 }); const result = await compareTool({ firstDatetime: dateFrom.toISOString(), secondDatetime: dateTo.toISOString(), operator: "equal", }); expect(result.text).toBe(`false`); }); test("compare equal true", async () => { const dateFrom = new Date(); const dateTo = dateFrom; const result = await compareTool({ firstDatetime: dateFrom.toISOString(), secondDatetime: dateTo.toISOString(), operator: "equal", }); expect(result.text).toBe(`true`); }); }); test("compare in invalid unit", async () => { const dateFrom = new Date(); const dateTo = add(dateFrom, { years: 1 }); await expect( compareTool({ firstDatetime: dateFrom.toISOString(), secondDatetime: dateTo.toISOString(), operator: "something" as never, }) ).rejects.toThrow("Invalid operator: something"); }); });

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