Files
HiveGrid-Wireframes/03 Quellen und Referenzen/hivegrid-cloud/apps/web/app/services/admin/admin-telephony-workspace.server.test.ts
T

87 lines
2.4 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from "vitest";
const mocks = vi.hoisted(() => ({
calls: vi.fn(),
dispositions: vi.fn(),
contacts: vi.fn(),
policy: vi.fn(),
dialerLists: vi.fn(),
audit: vi.fn(),
}));
vi.mock("@hivegrid/db/admin-sales-core.server", () => ({
writeAdminSalesAudit: mocks.audit,
}));
vi.mock("~/utils/db.server", () => ({
db: {
adminCallSession: { findMany: mocks.calls },
adminCallDisposition: { findMany: mocks.dispositions },
adminContact: { findMany: mocks.contacts },
adminTelephonyPolicy: { findUnique: mocks.policy },
adminDialerList: { findMany: mocks.dialerLists },
},
}));
import { readAdminTelephonyWorkspace } from "./admin-telephony-workspace.server";
describe("admin telephony team scope", () => {
beforeEach(() => {
vi.clearAllMocks();
mocks.calls.mockResolvedValue([{ id: "call-b", adminUserId: "sales-b" }]);
mocks.dispositions.mockResolvedValue([]);
mocks.contacts.mockResolvedValue([]);
mocks.policy.mockResolvedValue(null);
mocks.dialerLists.mockResolvedValue([]);
});
it("loads team calls read-only and audits a selected foreign call", async () => {
const result = await readAdminTelephonyWorkspace(
{
adminUserId: "manager",
canReadAllCommunication: true,
canCall: false,
canManageSettings: false,
canManageRecording: false,
actor: (reason: string) => ({
adminUserId: "manager",
email: "manager@example.test",
reason,
}),
} as never,
"call-b"
);
expect(mocks.calls).toHaveBeenCalledWith(
expect.objectContaining({ where: {} })
);
expect(result.permissions.canCall).toBe(false);
expect(mocks.audit).toHaveBeenCalledWith(
expect.anything(),
expect.objectContaining({
action: "admin.sales.telephony.foreignCalls.read",
targetId: "call-b",
after: {
foreignTargets: [
{
targetId: "call-b",
dataOwnerAdminUserId: "sales-b",
},
],
accessKind: "read",
},
})
);
expect(mocks.audit).toHaveBeenCalledWith(
expect.anything(),
expect.objectContaining({
action: "admin.sales.telephony.foreignCall.read",
targetId: "call-b",
after: {
dataOwnerAdminUserId: "sales-b",
accessKind: "read",
},
})
);
});
});