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
  });
}