export async function mockConferenceCallEnv(phone, params = { conferencePartiesCount: 3, }) { await Promise.all(phone.webphone.sessions.map(session => phone.webphone.hold(session.id))); const conferenceBodyData = getConferenceCallBody(params.conferencePartiesCount); /* mock data */ mock.device(deviceBody); const conferenceSession = await makeConferenceCall(phone); const activeCallsBody = mockActiveCalls(phone.webphone.sessions, []); mockGeneratePresenceApi({ activeCalls: activeCallsBody }); mockGeneratePresenceUpdateApi({ activeCalls: activeCallsBody }); mockGenerateActiveCallsApi({ sessions: phone.webphone.sessions }); mock.activeCalls(activeCallsBody); await phone.subscription.subscribe(['/account/~/extension/~/presence'], 10); await timeout(100); await mockPresencePubnub(activeCallsBody); /* mock redux datas */ phone.store.dispatch({ type: `${prefix}-${actionTypes.makeConferenceSucceeded}`, conference: conferenceBodyData, sessionId: conferenceSession.id, parties: [], }); phone.store.dispatch({ type: `${prefix}-${actionTypes.updateCurrentConferenceId}`, conferenceId: conferenceBodyData.id, }); /* update session status */ conferenceSession.accept(phone.webphone.acceptOptions); /* HACK: Force the CallCtrlPage layout refresh to callCtrlLayouts.conferenceCtrl */ phone.routerInteraction.push('/dialer'); phone.routerInteraction.push('/calls/active'); return conferenceSession; }
export function mockGenerateActiveCallsApi({ sessions }) { const records = sessions.reduce((calls, session) => calls.concat({ uri: 'https://api-xmnup.lab.nordigy.ru/restapi/v1.0/account/160746006/extension/160751006/call-log/Q6E-u_FeDGlNQA?view=Simple', id: 'Q6E-u_FeDGlNQA', sessionId: session.id, startTime: '2018-08-02T01:48:31.000Z', type: 'Voice', direction: session.direction, action: 'VoIP Call', result: 'In Progress', to: { extensionNumber: '105', name: 'FirstName 105 LastName' }, from: { name: 'FirstName 105 LastName' } }), []); mock.activeCalls({ records }); }