Files
HiveGrid-Wireframes/03 Quellen und Referenzen/hivegrid-cloud/apps/web/app/modules/chat/services/ChatMessageMutationsService.server.test.ts
T

51 lines
1.5 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from "vitest";
const mocks = vi.hoisted(() => ({
updateMessage: vi.fn(),
deleteMessage: vi.fn(),
}));
vi.mock("@hivegrid/chat/message-mutations.server", () => ({
updateChatMessage: mocks.updateMessage,
deleteChatMessage: mocks.deleteMessage,
}));
import { editMemberChatMessage, removeMemberChatMessage } from "./ChatMessageMutationsService.server";
const context = {
tenantId: "tenant_1",
userId: "user_1",
permissions: ["chat.read_own_channels", "chat.write"],
} as const;
describe("ChatMessageMutationsService", () => {
beforeEach(() => vi.clearAllMocks());
it("passes the fresh route context to an edit mutation", async () => {
mocks.updateMessage.mockResolvedValue({ replayed: false });
await editMemberChatMessage({ context, chatId: "chat_1", messageId: "message_1", requestId: "request_1", body: "Neu" });
expect(mocks.updateMessage).toHaveBeenCalledWith({
...context,
chatId: "chat_1",
messageId: "message_1",
requestId: "request_1",
body: "Neu",
});
});
it("passes the stable request id to a delete mutation", async () => {
mocks.deleteMessage.mockResolvedValue({ replayed: false });
await removeMemberChatMessage({ context, chatId: "chat_1", messageId: "message_1", requestId: "request_2" });
expect(mocks.deleteMessage).toHaveBeenCalledWith({
...context,
chatId: "chat_1",
messageId: "message_1",
requestId: "request_2",
});
});
});