Skip to main content
Glama
advanced.test.ts4.17 kB
import { describe, it, expect } from "vitest"; import { typescriptHelperHandler, apiClientHandler, sqlHelperHandler, graphDbHelperHandler, } from "./advanced.js"; describe("Advanced Tools", () => { describe("typescriptHelperHandler", () => { it("should generate an interface", () => { const result = typescriptHelperHandler({ pattern: "interface", name: "User", fields: [ { name: "id", type: "string" }, { name: "name", type: "string", optional: true }, ], }); expect(result.content[0].text).toContain("interface User {"); expect(result.content[0].text).toContain("id: string;"); expect(result.content[0].text).toContain("name?: string;"); }); it("should handle unknown pattern gracefully", () => { const result = typescriptHelperHandler({ pattern: "unknown-pattern", name: "Test", }); // Based on code: returns "Unknown pattern: unknown-pattern" expect(result.content[0].text).toContain("Unknown pattern"); }); }); describe("apiClientHandler", () => { it("should generate fetch client by default", () => { const result = apiClientHandler({ baseUrl: "https://api.example.com", endpoints: [{ name: "getUsers", method: "GET", path: "/users" }], }); expect(result.content[0].text).toContain("class ApiClient"); expect(result.content[0].text).toContain( "const BASE_URL = 'https://api.example.com';", ); expect(result.content[0].text).toContain("fetch(`${BASE_URL}${path}`"); expect(result.content[0].text).toContain( "async getUsers(options?: RequestOptions)", ); }); it("should generate axios client", () => { const result = apiClientHandler({ baseUrl: "https://api.example.com", endpoints: [{ name: "createUser", method: "POST", path: "/users" }], library: "axios", }); expect(result.content[0].text).toContain("import axios"); expect(result.content[0].text).toContain("axios.create"); }); }); describe("sqlHelperHandler", () => { it("should generate create table logic", () => { const result = sqlHelperHandler({ operation: "create-table", table: "users", columns: [ { name: "id", type: "SERIAL PRIMARY KEY" }, { name: "username", type: "VARCHAR(50)" }, ], }); expect(result.content[0].text).toContain( "CREATE TABLE IF NOT EXISTS users", ); expect(result.content[0].text).toContain("id SERIAL PRIMARY KEY"); }); it("should generate select query", () => { const result = sqlHelperHandler({ operation: "select", table: "orders", }); expect(result.content[0].text).toContain("SELECT * FROM orders"); }); }); describe("graphDbHelperHandler", () => { it("generates create-node query", () => { const result = graphDbHelperHandler({ operation: "create-node", params: { label: "User", properties: { name: "Alice", age: 30 }, }, }); expect(result.content[0].text).toContain( 'CREATE (n:User { name: "Alice", age: 30 })', ); expect(result.content[0].text).toContain("RETURN n"); }); it("generates create-relationship query", () => { const result = graphDbHelperHandler({ operation: "create-relationship", params: { from: "User", to: "Post", label: "WROTE", }, }); expect(result.content[0].text).toContain("MATCH (a:User), (b:Post)"); expect(result.content[0].text).toContain("CREATE (a)-[r:WROTE]->(b)"); }); it("generates find-pattern query", () => { const result = graphDbHelperHandler({ operation: "find-pattern", params: { label: "User", conditions: "n.age > 25", }, }); expect(result.content[0].text).toContain("MATCH (n:User)"); expect(result.content[0].text).toContain("WHERE n.age > 25"); expect(result.content[0].text).toContain("LIMIT 25"); }); }); });

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/millsydotdev/Code-MCP'

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