feat: Add testing framework and initial test cases for various tools and database operations

This commit is contained in:
ethan.chen
2026-01-07 10:05:04 +08:00
parent 372b52b214
commit 47ecc40186
23 changed files with 1781 additions and 40 deletions

View File

@@ -0,0 +1,109 @@
/*
* @Date: 2026-01-07 09:10:17
* @LastEditors: 陈子健
* @LastEditTime: 2026-01-07 10:04:38
* @FilePath: /cloud-mcp/tests/unit/tools/family/math.test.ts
*/
/**
* Math tools tests
*/
import { describe, test, expect, beforeEach, afterEach } from "bun:test";
import { registerMathTools } from "../../../../src/tools/family/math.js";
import { callTool } from "../../../helpers/tool-helper.js";
import { createTempDir } from "../../../helpers/test-utils.js";
import { setupTestDatabase } from "../../../helpers/database-helper.js";
describe("Math Tools", () => {
let testContext: ReturnType<typeof createTempDir>;
let cleanupDb: () => void;
beforeEach(() => {
testContext = createTempDir();
cleanupDb = setupTestDatabase(testContext);
registerMathTools();
});
afterEach(() => {
cleanupDb();
testContext.cleanup();
});
test("should generate math problems for elementary grade", async () => {
const result = await callTool("math_problem_generate", {
grade: "1st",
difficulty: "easy",
count: 5,
});
expect(result.content[0].text).toContain("Generated");
expect(result.content[0].text).toContain("1st");
expect(result.content[0].text).toContain("problem");
});
test("should generate math problems for middle school", async () => {
const result = await callTool("math_problem_generate", {
grade: "middle",
difficulty: "medium",
topic: "algebra",
count: 3,
});
expect(result.content[0].text).toContain("Generated");
expect(result.content[0].text).toContain("middle");
expect(result.content[0].text).toContain("algebra");
});
test("should save math resource", async () => {
const result = await callTool("math_resource_save", {
title: "Addition Worksheet",
content: "1 + 1 = 2",
grade: "1st",
tags: ["addition"],
});
expect(result.content[0].text).toContain("saved successfully");
expect(result.content[0].text).toContain("Addition Worksheet");
});
test("should search math resources", async () => {
// First save a resource
await callTool("math_resource_save", {
title: "Addition Worksheet",
content: "1 + 1 = 2",
grade: "1st",
tags: ["addition"],
});
const result = await callTool("math_resource_search", {
query: "Addition",
});
expect(result.content[0].text).toContain("Found");
expect(result.content[0].text).toContain("Addition Worksheet");
});
test("should search math resources by grade", async () => {
await callTool("math_resource_save", {
title: "Addition Worksheet",
content: "1 + 1 = 2",
grade: "1st",
tags: ["addition"],
});
const result = await callTool("math_resource_search", {
query: "Addition",
grade: "1st",
});
expect(result.content[0].text).toContain("Found");
});
test("should handle search with no results", async () => {
const result = await callTool("math_resource_search", {
query: "NonExistent",
});
expect(result.content[0].text).toContain("No math resources found");
});
});