mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-01 19:48:08 +00:00
- Set up stores for copilotThreads and copilotMessages. - Add support for upsert messages to the copilotMessages store on receiving ActionCable events. - Implement support for the upsert option.
68 lines
1.7 KiB
JavaScript
68 lines
1.7 KiB
JavaScript
import { describe, it, beforeEach, expect, vi } from 'vitest';
|
|
import ActionCableConnector from '../actionCable';
|
|
|
|
vi.mock('shared/helpers/mitt', () => ({
|
|
emitter: {
|
|
emit: vi.fn(),
|
|
},
|
|
}));
|
|
|
|
vi.mock('dashboard/composables/useImpersonation', () => ({
|
|
useImpersonation: () => ({
|
|
isImpersonating: { value: false },
|
|
}),
|
|
}));
|
|
|
|
global.chatwootConfig = {
|
|
websocketURL: 'wss://test.chatwoot.com',
|
|
};
|
|
|
|
describe('ActionCableConnector - Copilot Tests', () => {
|
|
let store;
|
|
let actionCable;
|
|
let mockDispatch;
|
|
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
mockDispatch = vi.fn();
|
|
store = {
|
|
$store: {
|
|
dispatch: mockDispatch,
|
|
getters: {
|
|
getCurrentAccountId: 1,
|
|
},
|
|
},
|
|
};
|
|
|
|
actionCable = ActionCableConnector.init(store.$store, 'test-token');
|
|
});
|
|
describe('copilot event handlers', () => {
|
|
it('should register the copilot.message.created event handler', () => {
|
|
expect(Object.keys(actionCable.events)).toContain(
|
|
'copilot.message.created'
|
|
);
|
|
expect(actionCable.events['copilot.message.created']).toBe(
|
|
actionCable.onCopilotMessageCreated
|
|
);
|
|
});
|
|
|
|
it('should handle the copilot.message.created event through the ActionCable system', () => {
|
|
const copilotData = {
|
|
id: 2,
|
|
content: 'This is a copilot message from ActionCable',
|
|
conversation_id: 456,
|
|
created_at: '2025-05-27T15:58:04-06:00',
|
|
account_id: 1,
|
|
};
|
|
actionCable.onReceived({
|
|
event: 'copilot.message.created',
|
|
data: copilotData,
|
|
});
|
|
expect(mockDispatch).toHaveBeenCalledWith(
|
|
'copilotMessages/upsert',
|
|
copilotData
|
|
);
|
|
});
|
|
});
|
|
});
|