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