Files
Nexus/packages/api/src/__tests__/assistant-tools-country-mutations-success.test.ts
T

96 lines
2.6 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from "vitest";
import { executeTool } from "../router/assistant-tools.js";
import { createToolContext } from "./assistant-tools-country-test-helpers.js";
describe("assistant country mutation tools - success", () => {
beforeEach(() => {
vi.clearAllMocks();
});
it("creates a country for admin users and returns an invalidation action", async () => {
const ctx = createToolContext({
country: {
findUnique: vi.fn().mockResolvedValue(null),
create: vi.fn().mockResolvedValue({
id: "country_es",
code: "ES",
name: "Spain",
dailyWorkingHours: 8,
scheduleRules: null,
isActive: true,
metroCities: [],
_count: { resources: 0 },
}),
},
});
const result = await executeTool(
"create_country",
JSON.stringify({ code: "ES", name: "Spain", dailyWorkingHours: 8 }),
ctx,
);
expect(result.action).toEqual({
type: "invalidate",
scope: ["country", "resource", "holidayCalendar", "vacation"],
});
expect(result.data).toMatchObject({
success: true,
country: { code: "ES", name: "Spain" },
});
});
it("updates a country for admin users and keeps invalidation semantics stable", async () => {
const update = vi.fn().mockResolvedValue({
id: "country_es",
code: "ES",
name: "Spain Updated",
dailyWorkingHours: 7.5,
scheduleRules: { shortFriday: true },
isActive: false,
metroCities: [],
_count: { resources: 0 },
});
const ctx = createToolContext({
country: {
findUnique: vi.fn().mockResolvedValue({ id: "country_es", code: "ES", name: "Spain" }),
update,
},
});
const result = await executeTool(
"update_country",
JSON.stringify({
id: "country_es",
data: {
name: "Spain Updated",
dailyWorkingHours: 7.5,
scheduleRules: null,
isActive: false,
},
}),
ctx,
);
expect(update).toHaveBeenCalledWith({
where: { id: "country_es" },
data: {
name: "Spain Updated",
dailyWorkingHours: 7.5,
scheduleRules: expect.anything(),
isActive: false,
},
include: { metroCities: true },
});
expect(result.action).toEqual({
type: "invalidate",
scope: ["country", "resource", "holidayCalendar", "vacation"],
});
expect(result.data).toMatchObject({
success: true,
country: { id: "country_es", isActive: false, name: "Spain Updated" },
});
});
});