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");
});
});
});