@@ -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