Files
cloud-mcp/tests/unit/tools/programming/codeSnippet.test.ts

101 lines
2.8 KiB
TypeScript

/**
* Code snippet tools tests
*/
import { describe, test, expect, beforeEach, afterEach } from "bun:test";
import { registerCodeSnippetTools } from "../../../../src/tools/programming/codeSnippet.js";
import { callTool } from "../../../helpers/tool-helper.js";
import { createTempDir } from "../../../helpers/test-utils.js";
import { setupTestDatabase } from "../../../helpers/database-helper.js";
describe("Code Snippet Tools", () => {
let testContext: ReturnType<typeof createTempDir>;
let cleanupDb: () => void;
beforeEach(() => {
testContext = createTempDir();
cleanupDb = setupTestDatabase(testContext);
registerCodeSnippetTools();
});
afterEach(() => {
cleanupDb();
testContext.cleanup();
});
test("should save code snippet", async () => {
const result = await callTool("code_snippet_save", {
title: "Test Snippet",
code: "const x = 1;",
language: "typescript",
tags: ["test"],
});
expect(result.content[0].text).toContain("saved successfully");
expect(result.content[0].text).toContain("Test Snippet");
});
test("should search code snippets", async () => {
// First save a snippet
await callTool("code_snippet_save", {
title: "Test Snippet",
code: "const x = 1;",
language: "typescript",
tags: ["test"],
});
// Then search
const result = await callTool("code_snippet_search", {
query: "Test",
});
expect(result.content[0].text).toContain("Found");
expect(result.content[0].text).toContain("Test Snippet");
});
test("should list code snippets", async () => {
// Save a snippet
await callTool("code_snippet_save", {
title: "Test Snippet",
code: "const x = 1;",
language: "typescript",
tags: ["test"],
});
const result = await callTool("code_snippet_list", {});
expect(result.content[0].text).toContain("Total");
expect(result.content[0].text).toContain("Test Snippet");
});
test("should delete code snippet", async () => {
// Save a snippet
const saveResult = await callTool("code_snippet_save", {
title: "Test Snippet",
code: "const x = 1;",
language: "typescript",
tags: ["test"],
});
// Extract ID from save result
const idMatch = saveResult.content[0].text.match(/ID: ([a-f0-9-]+)/);
if (!idMatch) {
throw new Error("Could not extract ID from save result");
}
const id = idMatch[1];
// Delete it
const result = await callTool("code_snippet_delete", { id });
expect(result.content[0].text).toContain("deleted successfully");
});
test("should handle search with no results", async () => {
const result = await callTool("code_snippet_search", {
query: "NonExistent",
});
expect(result.content[0].text).toContain("No code snippets found");
});
});