Restructure omni services and add Chatwoot research snapshot
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
import { useBulkActionsHotKeys } from '../useBulkActionsHotKeys';
|
||||
import { useStore, useMapGetter } from 'dashboard/composables/store';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import wootConstants from 'dashboard/constants/globals';
|
||||
import { emitter } from 'shared/helpers/mitt';
|
||||
|
||||
vi.mock('dashboard/composables/store');
|
||||
vi.mock('vue-i18n');
|
||||
vi.mock('shared/helpers/mitt');
|
||||
|
||||
describe('useBulkActionsHotKeys', () => {
|
||||
let store;
|
||||
|
||||
beforeEach(() => {
|
||||
store = {
|
||||
getters: {
|
||||
'bulkActions/getSelectedConversationIds': [],
|
||||
},
|
||||
};
|
||||
|
||||
useStore.mockReturnValue(store);
|
||||
useMapGetter.mockImplementation(key => ({
|
||||
value: store.getters[key],
|
||||
}));
|
||||
|
||||
useI18n.mockReturnValue({ t: vi.fn(key => key) });
|
||||
emitter.emit = vi.fn();
|
||||
});
|
||||
|
||||
it('should return bulk actions when conversations are selected', () => {
|
||||
store.getters['bulkActions/getSelectedConversationIds'] = [1, 2, 3];
|
||||
const { bulkActionsHotKeys } = useBulkActionsHotKeys();
|
||||
|
||||
expect(bulkActionsHotKeys.value.length).toBeGreaterThan(0);
|
||||
expect(bulkActionsHotKeys.value).toContainEqual(
|
||||
expect.objectContaining({
|
||||
id: 'bulk_action_snooze_conversation',
|
||||
title: 'COMMAND_BAR.COMMANDS.SNOOZE_CONVERSATION',
|
||||
section: 'COMMAND_BAR.SECTIONS.BULK_ACTIONS',
|
||||
})
|
||||
);
|
||||
expect(bulkActionsHotKeys.value).toContainEqual(
|
||||
expect.objectContaining({
|
||||
id: 'bulk_action_reopen_conversation',
|
||||
title: 'COMMAND_BAR.COMMANDS.REOPEN_CONVERSATION',
|
||||
section: 'COMMAND_BAR.SECTIONS.BULK_ACTIONS',
|
||||
})
|
||||
);
|
||||
expect(bulkActionsHotKeys.value).toContainEqual(
|
||||
expect.objectContaining({
|
||||
id: 'bulk_action_resolve_conversation',
|
||||
title: 'COMMAND_BAR.COMMANDS.RESOLVE_CONVERSATION',
|
||||
section: 'COMMAND_BAR.SECTIONS.BULK_ACTIONS',
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
it('should include snooze options in bulk actions', () => {
|
||||
store.getters['bulkActions/getSelectedConversationIds'] = [1, 2, 3];
|
||||
const { bulkActionsHotKeys } = useBulkActionsHotKeys();
|
||||
|
||||
const snoozeAction = bulkActionsHotKeys.value.find(
|
||||
action => action.id === 'bulk_action_snooze_conversation'
|
||||
);
|
||||
expect(snoozeAction).toBeDefined();
|
||||
expect(snoozeAction.children).toEqual(
|
||||
Object.values(wootConstants.SNOOZE_OPTIONS)
|
||||
);
|
||||
});
|
||||
|
||||
it('should create handlers for reopen and resolve actions', () => {
|
||||
store.getters['bulkActions/getSelectedConversationIds'] = [1, 2, 3];
|
||||
const { bulkActionsHotKeys } = useBulkActionsHotKeys();
|
||||
|
||||
const reopenAction = bulkActionsHotKeys.value.find(
|
||||
action => action.id === 'bulk_action_reopen_conversation'
|
||||
);
|
||||
const resolveAction = bulkActionsHotKeys.value.find(
|
||||
action => action.id === 'bulk_action_resolve_conversation'
|
||||
);
|
||||
|
||||
expect(reopenAction.handler).toBeDefined();
|
||||
expect(resolveAction.handler).toBeDefined();
|
||||
|
||||
reopenAction.handler();
|
||||
expect(emitter.emit).toHaveBeenCalledWith(
|
||||
'CMD_BULK_ACTION_REOPEN_CONVERSATION'
|
||||
);
|
||||
|
||||
resolveAction.handler();
|
||||
expect(emitter.emit).toHaveBeenCalledWith(
|
||||
'CMD_BULK_ACTION_RESOLVE_CONVERSATION'
|
||||
);
|
||||
});
|
||||
|
||||
it('should return an empty array when no conversations are selected', () => {
|
||||
store.getters['bulkActions/getSelectedConversationIds'] = [];
|
||||
const { bulkActionsHotKeys } = useBulkActionsHotKeys();
|
||||
|
||||
expect(bulkActionsHotKeys.value).toEqual([]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user