Introduce a `Last Responding Agent` options to assign_agents action in automations to cover the following use cases. - Assign conversations to first responding agent : ( automation message created at , if assignee is nil, assign last responding agent ) - Ensure conversations are not resolved with out an assignee : ( automation conversation resolved at : if assignee is nil, assign last responding agent ) and potential other cases. fixes: #1592
99 lines
2.5 KiB
JavaScript
99 lines
2.5 KiB
JavaScript
import { useEditableAutomation } from '../useEditableAutomation';
|
|
import useAutomationValues from '../useAutomationValues';
|
|
|
|
vi.mock('../useAutomationValues');
|
|
|
|
describe('useEditableAutomation', () => {
|
|
beforeEach(() => {
|
|
useAutomationValues.mockReturnValue({
|
|
getConditionDropdownValues: vi.fn(attributeKey => {
|
|
if (attributeKey === 'private_note') {
|
|
return [
|
|
{ id: true, name: 'True' },
|
|
{ id: false, name: 'False' },
|
|
];
|
|
}
|
|
|
|
return [];
|
|
}),
|
|
getActionDropdownValues: vi.fn(actionName => {
|
|
if (actionName === 'assign_agent') {
|
|
return [
|
|
{ id: 'nil', name: 'None' },
|
|
{
|
|
id: 'last_responding_agent',
|
|
name: 'Last Responding Agent',
|
|
},
|
|
{ id: 1, name: 'Agent 1' },
|
|
];
|
|
}
|
|
|
|
return [];
|
|
}),
|
|
});
|
|
});
|
|
|
|
it('rehydrates boolean conditions as a single selected option', () => {
|
|
const automation = {
|
|
event_name: 'message_created',
|
|
conditions: [
|
|
{
|
|
attribute_key: 'private_note',
|
|
filter_operator: 'equal_to',
|
|
values: [false],
|
|
query_operator: null,
|
|
},
|
|
],
|
|
actions: [],
|
|
};
|
|
const automationTypes = {
|
|
message_created: {
|
|
conditions: [{ key: 'private_note', inputType: 'search_select' }],
|
|
},
|
|
};
|
|
|
|
const { formatAutomation } = useEditableAutomation();
|
|
const result = formatAutomation(automation, [], automationTypes, []);
|
|
|
|
expect(result.conditions).toEqual([
|
|
{
|
|
attribute_key: 'private_note',
|
|
filter_operator: 'equal_to',
|
|
values: { id: false, name: 'False' },
|
|
query_operator: 'and',
|
|
},
|
|
]);
|
|
});
|
|
|
|
it('rehydrates last responding agent as a selected action option', () => {
|
|
const automation = {
|
|
event_name: 'conversation_created',
|
|
conditions: [],
|
|
actions: [
|
|
{
|
|
action_name: 'assign_agent',
|
|
action_params: ['last_responding_agent'],
|
|
},
|
|
],
|
|
};
|
|
const automationActionTypes = [
|
|
{ key: 'assign_agent', inputType: 'search_select' },
|
|
];
|
|
|
|
const { formatAutomation } = useEditableAutomation();
|
|
const result = formatAutomation(automation, [], {}, automationActionTypes);
|
|
|
|
expect(result.actions).toEqual([
|
|
{
|
|
action_name: 'assign_agent',
|
|
action_params: [
|
|
{
|
|
id: 'last_responding_agent',
|
|
name: 'Last Responding Agent',
|
|
},
|
|
],
|
|
},
|
|
]);
|
|
});
|
|
});
|