feat: Add testing framework and initial test cases for various tools and database operations
This commit is contained in:
100
tests/unit/tools/programming/codeSnippet.test.ts
Normal file
100
tests/unit/tools/programming/codeSnippet.test.ts
Normal file
@@ -0,0 +1,100 @@
|
||||
/**
|
||||
* 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");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user