@Test
 public void save_shouldNotFinishTheActivityIfThereIsAnExceptionWhileSaving()
     throws Exception, FormController.FormDataSaveException {
   doThrow(new FormController.FormDataSaveException(null)).when(controller).saveFormData(formData);
   when(activity.getString(anyInt())).thenReturn("success");
   store.save("data", "xmldata", "status");
   verify(activity, times(0)).finish();
 }
 @Test
 public void save_shouldSaveFormDataWithStatus()
     throws Exception, FormController.FormDataSaveException {
   store.save("data", "xmldata", "status");
   verify(controller).saveFormData(formData);
   verify(activity).finish();
   assertThat(formData.getJsonPayload(), is("data"));
   assertThat(formData.getStatus(), is("status"));
 }
  @Test
  public void shouldNotParseObservationsForIncompleteForm()
      throws ConceptController.ConceptSaveException, ParseException, XmlPullParserException,
          PatientController.PatientLoadException, ConceptController.ConceptFetchException,
          ConceptController.ConceptParseException, ObservationController.ParseObservationException,
          IOException {
    store.save("data", "xmldata", Constants.STATUS_INCOMPLETE);

    verify(formParser, times(0)).parseAndSaveObservations(anyString(), anyString());
  }
  @Test
  public void shouldParseObservationsInProvidedPayloadWhenSavingAsFinal()
      throws ConceptController.ConceptSaveException, ParseException, XmlPullParserException,
          PatientController.PatientLoadException, ConceptController.ConceptFetchException,
          ConceptController.ConceptParseException, IOException,
          ObservationController.ParseObservationException {
    String xmlPayload = "xmldata";
    store.save("data", xmlPayload, Constants.STATUS_COMPLETE);

    verify(formParser).parseAndSaveObservations(xmlPayload, formData.getUuid());
  }
 @Test
 public void shouldCreateANewPatientAndStoreHisUUIDAsPatientUUID() throws Exception {
   String tempUUIDAssignedByDevice = "newUUID";
   formData.setPatientUuid(null);
   formData.setDiscriminator(FORM_DISCRIMINATOR_REGISTRATION);
   Patient patient = new Patient();
   patient.setUuid(tempUUIDAssignedByDevice);
   when(controller.createNewPatient("data")).thenReturn(patient);
   store.save("data", "xmlData", "complete");
   assertThat(formData.getXmlPayload(), is("xmlData"));
   assertThat(formData.getPatientUuid(), is(tempUUIDAssignedByDevice));
 }