test(api): cover assistant broadcast sends
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { SystemRole } from "@capakraken/shared";
|
||||
|
||||
import { executeTool } from "./assistant-tools-broadcast-send-test-helpers.js";
|
||||
import { createToolContext } from "./assistant-tools-notification-test-helpers.js";
|
||||
|
||||
describe("assistant broadcast send validation errors", () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
it("returns a stable assistant error when broadcast scheduledAt is invalid", async () => {
|
||||
const ctx = createToolContext({}, SystemRole.MANAGER);
|
||||
|
||||
const result = await executeTool(
|
||||
"send_broadcast",
|
||||
JSON.stringify({
|
||||
title: "Office update",
|
||||
targetType: "all",
|
||||
scheduledAt: "not-a-datetime",
|
||||
}),
|
||||
ctx,
|
||||
);
|
||||
|
||||
expect(JSON.parse(result.content)).toEqual({
|
||||
error: "Invalid scheduledAt: not-a-datetime",
|
||||
});
|
||||
});
|
||||
|
||||
it("returns a stable assistant error when a broadcast target resolves to no recipients", async () => {
|
||||
const create = vi.fn().mockResolvedValue({
|
||||
id: "broadcast_empty",
|
||||
title: "Office update",
|
||||
targetType: "user",
|
||||
});
|
||||
const ctx = createToolContext(
|
||||
{
|
||||
notificationBroadcast: {
|
||||
create,
|
||||
},
|
||||
},
|
||||
SystemRole.MANAGER,
|
||||
);
|
||||
|
||||
const result = await executeTool(
|
||||
"send_broadcast",
|
||||
JSON.stringify({
|
||||
title: "Office update",
|
||||
targetType: "user",
|
||||
}),
|
||||
ctx,
|
||||
);
|
||||
|
||||
expect(JSON.parse(result.content)).toEqual({
|
||||
error: "No recipients matched the broadcast target.",
|
||||
});
|
||||
expect(create).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("returns a stable assistant error for scheduled broadcasts with task metadata", async () => {
|
||||
const ctx = createToolContext({}, SystemRole.MANAGER);
|
||||
|
||||
const result = await executeTool(
|
||||
"send_broadcast",
|
||||
JSON.stringify({
|
||||
title: "Approve later",
|
||||
targetType: "all",
|
||||
category: "TASK",
|
||||
taskAction: "approve_vacation:vac_1",
|
||||
dueDate: "2099-04-11T08:00:00.000Z",
|
||||
scheduledAt: "2099-04-10T08:00:00.000Z",
|
||||
}),
|
||||
ctx,
|
||||
);
|
||||
|
||||
expect(JSON.parse(result.content)).toEqual({
|
||||
error: "Scheduled broadcasts with task metadata are not supported yet.",
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user