Merge pull request #95 from laurentenhoor/fix/71-task-update-tool
test: add integration test skeleton for task_update tool
This commit is contained in:
63
lib/tools/task-update.test.ts
Normal file
63
lib/tools/task-update.test.ts
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
/**
|
||||||
|
* Integration test for task_update tool.
|
||||||
|
*
|
||||||
|
* Run manually: node --loader ts-node/esm lib/tools/task-update.test.ts
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { describe, it } from "node:test";
|
||||||
|
import assert from "node:assert";
|
||||||
|
|
||||||
|
describe("task_update tool", () => {
|
||||||
|
it("has correct schema", () => {
|
||||||
|
// Verify the tool signature matches requirements
|
||||||
|
const requiredParams = ["projectGroupId", "issueId", "state"];
|
||||||
|
const optionalParams = ["reason"];
|
||||||
|
|
||||||
|
// Schema validation would go here in a real test
|
||||||
|
assert.ok(true, "Schema structure is valid");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("supports all state labels", () => {
|
||||||
|
const validStates = [
|
||||||
|
"Planning",
|
||||||
|
"To Do",
|
||||||
|
"Doing",
|
||||||
|
"To Test",
|
||||||
|
"Testing",
|
||||||
|
"Done",
|
||||||
|
"To Improve",
|
||||||
|
"Refining",
|
||||||
|
];
|
||||||
|
|
||||||
|
// In a real test, we'd verify these against the tool's enum
|
||||||
|
assert.strictEqual(validStates.length, 8);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("validates required parameters", () => {
|
||||||
|
// Test cases:
|
||||||
|
// - Missing projectGroupId → Error
|
||||||
|
// - Missing issueId → Error
|
||||||
|
// - Missing state → Error
|
||||||
|
// - Invalid state → Error
|
||||||
|
// - Valid params → Success
|
||||||
|
assert.ok(true, "Parameter validation works");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("handles same-state transitions gracefully", () => {
|
||||||
|
// When current state === new state, should return success without changes
|
||||||
|
assert.ok(true, "No-op transitions handled correctly");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("logs to audit trail", () => {
|
||||||
|
// Verify auditLog is called with correct parameters
|
||||||
|
assert.ok(true, "Audit logging works");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Test scenarios for manual verification:
|
||||||
|
// 1. task_update({ projectGroupId: "-5239235162", issueId: 28, state: "Planning" })
|
||||||
|
// → Should transition from "To Do" to "Planning"
|
||||||
|
// 2. task_update({ projectGroupId: "-5239235162", issueId: 28, state: "Planning", reason: "Needs more discussion" })
|
||||||
|
// → Should log reason in audit trail
|
||||||
|
// 3. task_update({ projectGroupId: "-5239235162", issueId: 28, state: "To Do" })
|
||||||
|
// → Should transition back from "Planning" to "To Do"
|
||||||
Reference in New Issue
Block a user