110 lines
3.1 KiB
TypeScript
110 lines
3.1 KiB
TypeScript
/*
|
|
* @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");
|
|
});
|
|
});
|