Spaces:
Build error
Build error
| import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; | |
| import { handleStatusMessage } from "../actions"; | |
| import { StatusMessage } from "#/types/message"; | |
| import { queryClient } from "#/query-client-config"; | |
| import store from "#/store"; | |
| import { setCurStatusMessage } from "#/state/status-slice"; | |
| import { trackError } from "#/utils/error-handler"; | |
| // Mock dependencies | |
| vi.mock("#/query-client-config", () => ({ | |
| queryClient: { | |
| invalidateQueries: vi.fn(), | |
| }, | |
| })); | |
| vi.mock("#/store", () => ({ | |
| default: { | |
| dispatch: vi.fn(), | |
| }, | |
| })); | |
| vi.mock("#/state/status-slice", () => ({ | |
| setCurStatusMessage: vi.fn(), | |
| })); | |
| vi.mock("#/state/chat-slice", () => ({ | |
| addErrorMessage: vi.fn(), | |
| })); | |
| vi.mock("#/utils/error-handler", () => ({ | |
| trackError: vi.fn(), | |
| })); | |
| describe("handleStatusMessage", () => { | |
| beforeEach(() => { | |
| vi.clearAllMocks(); | |
| }); | |
| afterEach(() => { | |
| vi.resetAllMocks(); | |
| }); | |
| it("should invalidate queries when receiving a conversation title update", () => { | |
| // Create a status message with a conversation title | |
| const statusMessage: StatusMessage = { | |
| status_update: true, | |
| type: "info", | |
| message: "conversation-123", | |
| conversation_title: "New Conversation Title", | |
| }; | |
| // Call the function | |
| handleStatusMessage(statusMessage); | |
| // Verify that queryClient.invalidateQueries was called with the correct parameters | |
| expect(queryClient.invalidateQueries).toHaveBeenCalledWith({ | |
| queryKey: ["user", "conversation", "conversation-123"], | |
| }); | |
| // Verify that store.dispatch was not called | |
| expect(store.dispatch).not.toHaveBeenCalled(); | |
| }); | |
| it("should dispatch setCurStatusMessage for info messages without conversation_title", () => { | |
| // Create a status message without a conversation title | |
| const statusMessage: StatusMessage = { | |
| status_update: true, | |
| type: "info", | |
| message: "Some info message", | |
| }; | |
| // Call the function | |
| handleStatusMessage(statusMessage); | |
| // Verify that store.dispatch was called with setCurStatusMessage | |
| expect(store.dispatch).toHaveBeenCalledWith( | |
| setCurStatusMessage(statusMessage), | |
| ); | |
| // Verify that queryClient.invalidateQueries was not called | |
| expect(queryClient.invalidateQueries).not.toHaveBeenCalled(); | |
| }); | |
| it("should dispatch addErrorMessage for error messages", () => { | |
| // Create an error status message | |
| const statusMessage: StatusMessage = { | |
| status_update: true, | |
| type: "error", | |
| id: "ERROR_ID", | |
| message: "Some error message", | |
| }; | |
| // Call the function | |
| handleStatusMessage(statusMessage); | |
| // Verify that trackError was called with the correct parameters | |
| expect(trackError).toHaveBeenCalledWith({ | |
| message: "Some error message", | |
| source: "chat", | |
| metadata: { msgId: "ERROR_ID" }, | |
| }); | |
| // Verify that queryClient.invalidateQueries was not called | |
| expect(queryClient.invalidateQueries).not.toHaveBeenCalled(); | |
| }); | |
| }); | |