private CallEvent getMissedCallEvent() {
   CallEvent callEvent = new CallEvent("Missed");
   CallEventCustomData callEventCustomData = new CallEventCustomData();
   callEventCustomData.add(IVRService.CALL_TYPE, "Pill Reminder");
   callEvent.setData(callEventCustomData);
   return callEvent;
 }
 private CallEvent endOfCallEvent() {
   CallEvent event = new CallEvent(CallState.MAIN_MENU.name());
   CallEventCustomData data = new CallEventCustomData();
   event.setTimeStamp(DateUtil.now().plusMinutes(1));
   event.setData(data);
   return event;
 }
 private CallEvent messagesEvent() {
   CallEvent event = new CallEvent(CallState.PULL_MESSAGES.name());
   CallEventCustomData data = new CallEventCustomData();
   data.add(
       CallEventConstants.CUSTOM_DATA_LIST,
       "<response><playaudio>http://localhost/response1.wav</playaudio><playaudio>http://localhost/response2.wav</playaudio></response>");
   data.add(CallEventConstants.CALL_STATE, CallState.PULL_MESSAGES.name());
   event.setTimeStamp(DateUtil.now());
   event.setData(data);
   return event;
 }
  private void setUpCallLog(CallDirection callDirection) {
    String patientDocId = "patientDocId";
    String clinicId = "clinicId";
    callLog = new CallLog(patientDocId);
    callLog.patientId("patientId");
    initiatedTime = DateUtil.newDateTime(2011, 10, 10, 10, 9, 10);
    startTime = DateUtil.newDateTime(2011, 10, 10, 10, 10, 10);
    callLog.setStartTime(initiatedTime);
    callLog.setEndTime(DateUtil.now());
    callLog.setCallDirection(callDirection);
    callLog.clinicId(clinicId);
    callLog.setPhoneNumber("1234567890");
    callLog.callLanguage("en");

    final CallEvent callEvent = mock(CallEvent.class);
    when(callEvent.getTimeStamp()).thenReturn(startTime);
    CallEventCustomData customData = new CallEventCustomData();
    customData.add(TAMAIVRContext.MESSAGE_CATEGORY_NAME, "All Messages");
    when(callEvent.getData()).thenReturn(customData);
    callLog.setCallEvents(
        new ArrayList<CallEvent>() {
          {
            add(callEvent);
          }
        });
    Clinic clinic = new Clinic(clinicId);
    Patient patient =
        PatientBuilder.startRecording()
            .withId(patientDocId)
            .withPatientId("patientId")
            .withGender(Gender.newGender("Male"))
            .withClinic(clinic)
            .withTravelTimeToClinicInDays(1)
            .withTravelTimeToClinicInHours(1)
            .withTravelTimeToClinicInMinutes(1)
            .withDateOfBirth(DateUtil.today().minusYears(40))
            .build();
    CallLogView callLogView = mock(CallLogView.class);
    clinic.setName("clinicName");

    when(allIVRLanguages.getByCode("en")).thenReturn(IVRLanguage.newIVRLanguage("English", "en"));
    when(allPatients.getAll()).thenReturn(asList(patient));
    when(callLogViewMapper.toCallLogView(asList(callLog))).thenReturn(asList(callLogView));

    callLogSummaryBuilder =
        new CallLogSummaryBuilder(allPatients, new Patients(allPatients.getAll()), allIVRLanguages);
  }
  @Test
  public void shouldHaveUniqueMessageCategoriesAccessedInCall() {
    setUpCallLog(CallDirection.Outbound);

    CallEventCustomData customData = new CallEventCustomData();
    customData.add(TAMAIVRContext.MESSAGE_CATEGORY_NAME, TAMAMessageType.ALL_MESSAGES.name());

    CallEvent event = mock(CallEvent.class);
    when(event.getData()).thenReturn(customData);
    when(event.getTimeStamp()).thenReturn(startTime);

    callLog.setCallEvents(asList(event, event));

    CallLogSummary callLogSummary = callLogSummaryBuilder.build(callLog);
    assertEquals(
        TAMAMessageType.ALL_MESSAGES.getDisplayName(), callLogSummary.getMessageCategories());
  }