test(api): cover assistant timeline batch quick assign
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
import {
|
||||
batchQuickAssignPermissions,
|
||||
batchQuickAssignRole,
|
||||
buildBaseProject,
|
||||
buildBaseResource,
|
||||
createBatchQuickAssignInput,
|
||||
createToolContext,
|
||||
executeTool,
|
||||
} from "./assistant-tools-timeline-batch-quick-assign-test-helpers.js";
|
||||
|
||||
describe("assistant timeline batch quick-assign error tools", () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
it("returns a structured batch assignment resolver error for an unknown resource", async () => {
|
||||
const db = {
|
||||
project: {
|
||||
findUnique: vi.fn().mockResolvedValue({
|
||||
...buildBaseProject(),
|
||||
startDate: new Date("2026-03-16"),
|
||||
endDate: new Date("2026-03-20"),
|
||||
}),
|
||||
findFirst: vi.fn().mockResolvedValue(null),
|
||||
},
|
||||
resource: {
|
||||
findUnique: vi.fn().mockResolvedValue(null),
|
||||
findFirst: vi.fn().mockResolvedValue(null),
|
||||
findMany: vi.fn().mockResolvedValue([]),
|
||||
},
|
||||
assignment: {
|
||||
create: vi.fn(),
|
||||
},
|
||||
};
|
||||
const ctx = createToolContext(db, batchQuickAssignPermissions, batchQuickAssignRole);
|
||||
|
||||
const result = await executeTool(
|
||||
"batch_quick_assign_timeline_resources",
|
||||
JSON.stringify(
|
||||
createBatchQuickAssignInput([
|
||||
{
|
||||
resourceIdentifier: "missing_resource",
|
||||
},
|
||||
]),
|
||||
),
|
||||
ctx,
|
||||
);
|
||||
|
||||
expect(result.action).toBeUndefined();
|
||||
expect(JSON.parse(result.content)).toEqual({
|
||||
error: "assignments[0].resourceIdentifier: Resource not found: missing_resource",
|
||||
field: "assignments[0].resourceIdentifier",
|
||||
index: 0,
|
||||
});
|
||||
expect(db.assignment.create).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("returns a stable validation error for batch timeline mutation date ranges", async () => {
|
||||
const ctx = createToolContext(
|
||||
{
|
||||
project: {
|
||||
findUnique: vi.fn().mockResolvedValue(buildBaseProject()),
|
||||
},
|
||||
resource: {
|
||||
findUnique: vi.fn().mockResolvedValue(buildBaseResource()),
|
||||
},
|
||||
},
|
||||
batchQuickAssignPermissions,
|
||||
batchQuickAssignRole,
|
||||
);
|
||||
|
||||
const result = await executeTool(
|
||||
"batch_quick_assign_timeline_resources",
|
||||
JSON.stringify(
|
||||
createBatchQuickAssignInput([
|
||||
{
|
||||
startDate: "2026-03-20",
|
||||
endDate: "2026-03-16",
|
||||
},
|
||||
]),
|
||||
),
|
||||
ctx,
|
||||
);
|
||||
|
||||
expect(JSON.parse(result.content)).toEqual({
|
||||
error: "End date must be after start date",
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user