const models = require('vn-loopback/server/server').models; describe('Chat sendCheckingPresence()', () => { const today = new Date(); today.setHours(6, 0); const ctx = {req: {accessToken: {userId: 1}}}; const chatModel = models.Chat; const departmentId = 23; const workerId = 1107; it(`should call to send() method with "@HankPym" as recipient argument`, async() => { spyOn(chatModel, 'send').and.callThrough(); spyOn(chatModel, 'getUserStatus').and.returnValue( new Promise(resolve => { return resolve({ data: { status: 'online' } }); }) ); await chatModel.sendCheckingPresence(ctx, workerId, 'I changed something'); expect(chatModel.send).toHaveBeenCalledWith(ctx, '@HankPym', 'I changed something'); }); it(`should call to send() method with "#cooler" as recipient argument`, async() => { spyOn(chatModel, 'send').and.callThrough(); spyOn(chatModel, 'getUserStatus').and.returnValue( new Promise(resolve => { return resolve({ data: { status: 'offline' } }); }) ); const tx = await models.Claim.beginTransaction({}); try { const options = {transaction: tx}; const department = await models.Department.findById(departmentId, null, options); await department.updateAttribute('chatName', 'cooler'); await chatModel.sendCheckingPresence(ctx, workerId, 'I changed something'); expect(chatModel.send).toHaveBeenCalledWith(ctx, '#cooler', '@HankPym ➔ I changed something'); await tx.rollback(); } catch (e) { await tx.rollback(); throw e; } }); });