Skip to content

Commit 7504dd7

Browse files
committed
depend on dep setting
1 parent 56b4069 commit 7504dd7

File tree

2 files changed

+73
-7
lines changed

2 files changed

+73
-7
lines changed

apps/meteor/app/livechat/server/lib/Helper.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -638,10 +638,14 @@ export const forwardRoomToDepartment = async (room: IOmnichannelRoom, guest: ILi
638638
if (
639639
!RoutingManager.getConfig()?.autoAssignAgent ||
640640
!(await Omnichannel.isWithinMACLimit(room)) ||
641-
(department?.allowReceiveForwardOffline && !(await checkOnlineAgents(departmentId))) ||
642-
settings.get('Livechat_waiting_queue')
641+
(department?.allowReceiveForwardOffline && (!(await checkOnlineAgents(departmentId)) || settings.get('Livechat_waiting_queue')))
643642
) {
644-
logger.debug(`Room ${room._id} will be on department queue`);
643+
logger.debug({
644+
msg: 'Room will be on department queue',
645+
roomId: room._id,
646+
departmentId,
647+
departmentAllowOffline: department?.allowReceiveForwardOffline,
648+
});
645649
await saveTransferHistory(room, transferData);
646650
return RoutingManager.unassignAgent(inquiry, departmentId, true);
647651
}

apps/meteor/tests/end-to-end/api/livechat/00-rooms.ts

Lines changed: 66 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1249,15 +1249,76 @@ describe('LIVECHAT - rooms', () => {
12491249
);
12501250

12511251
(IS_EE ? it : it.skip)(
1252-
'when manager forward to a department while waiting_queue is active, chat should end in departments queue',
1252+
'when manager forwards a chat that hasnt been assigned to a user to another department with no online agents, chat should end ready in department (not queued)',
1253+
async () => {
1254+
await updateSetting('Livechat_Routing_Method', 'Auto_Selection');
1255+
const { department: initialDepartment } = await createDepartmentWithAnOfflineAgent({});
1256+
const { department: forwardToOfflineDepartment } = await createDepartmentWithAnOfflineAgent({});
1257+
1258+
const newVisitor = await createVisitor(initialDepartment._id);
1259+
const newRoom = await createLivechatRoom(newVisitor.token);
1260+
1261+
const manager = await createUser();
1262+
const managerCredentials = await login(manager.username, password);
1263+
await createManager(manager.username);
1264+
1265+
await request.post(api('livechat/room.forward')).set(managerCredentials).send({
1266+
roomId: newRoom._id,
1267+
departmentId: forwardToOfflineDepartment._id,
1268+
clientAction: true,
1269+
comment: 'test comment',
1270+
});
1271+
1272+
const inquiry = await fetchInquiry(newRoom._id);
1273+
1274+
// Inquiry status doesn't change, it was ready when created, it keeps ready after forwarding as no assignment was done
1275+
expect(inquiry.status).to.equal('ready');
1276+
expect(inquiry.department).to.equal(forwardToOfflineDepartment._id);
1277+
1278+
await Promise.all([deleteDepartment(initialDepartment._id), deleteDepartment(forwardToOfflineDepartment._id)]);
1279+
},
1280+
);
1281+
1282+
(IS_EE ? it : it.skip)(
1283+
'when manager forward to a department while waiting_queue is active and allowReceiveForwardOffline is true, chat should end in departments queue',
12531284
async () => {
12541285
await updateSetting('Livechat_Routing_Method', 'Auto_Selection');
1255-
await updateSetting('Livechat_waiting_queue', true);
12561286
const { department: initialDepartment } = await createDepartmentWithAnOnlineAgent();
1257-
const { department: forwardToOfflineDepartment } = await createDepartmentWithAnAwayAgent({
1258-
allowReceiveForwardOffline: true,
1287+
const { department: forwardToOfflineDepartment } = await createDepartmentWithAnAwayAgent({ allowReceiveForwardOffline: true });
1288+
1289+
const newVisitor = await createVisitor(initialDepartment._id);
1290+
const newRoom = await createLivechatRoom(newVisitor.token);
1291+
1292+
const manager = await createUser();
1293+
const managerCredentials = await login(manager.username, password);
1294+
await createManager(manager.username);
1295+
1296+
// Waiting queue enabled after assignement but before transfer, otherwise, chat will fall on previous test case
1297+
await updateSetting('Livechat_waiting_queue', true);
1298+
await request.post(api('livechat/room.forward')).set(managerCredentials).send({
1299+
roomId: newRoom._id,
1300+
departmentId: forwardToOfflineDepartment._id,
1301+
clientAction: true,
1302+
comment: 'test comment',
12591303
});
12601304

1305+
const inquiry = await fetchInquiry(newRoom._id);
1306+
1307+
// Since the agent is `idle` the chat should be on the queue
1308+
expect(inquiry.status).to.equal('queued');
1309+
expect(inquiry.department).to.equal(forwardToOfflineDepartment._id);
1310+
1311+
await Promise.all([deleteDepartment(initialDepartment._id), deleteDepartment(forwardToOfflineDepartment._id)]);
1312+
},
1313+
);
1314+
1315+
(IS_EE ? it : it.skip)(
1316+
'when manager forward to a department while waiting_queue is active and allowReceiveForwardOffline is false, transfer should fail',
1317+
async () => {
1318+
await updateSetting('Livechat_Routing_Method', 'Auto_Selection');
1319+
const { department: initialDepartment } = await createDepartmentWithAnOnlineAgent();
1320+
const { department: forwardToOfflineDepartment } = await createDepartmentWithAnAwayAgent({ allowReceiveForwardOffline: false });
1321+
12611322
const newVisitor = await createVisitor(initialDepartment._id);
12621323
const newRoom = await createLivechatRoom(newVisitor.token);
12631324

@@ -1274,6 +1335,7 @@ describe('LIVECHAT - rooms', () => {
12741335

12751336
const inquiry = await fetchInquiry(newRoom._id);
12761337

1338+
// Since the agent is `idle` the chat should be on the queue
12771339
expect(inquiry.status).to.equal('queued');
12781340
expect(inquiry.department).to.equal(forwardToOfflineDepartment._id);
12791341

0 commit comments

Comments
 (0)