public void testDisplayAllChildren() throws JSONException {
   ChildRepository repository =
       RapidFtrApplication.getInstance().getInjector().getInstance(ChildRepository.class);
   repository.createOrUpdate(new Child("id1", "rapidftr", "{\"name\":\"Test1\"}"));
   repository.createOrUpdate(new Child("id2", "rapidftr", "{\"name\":\"Test2\"}"));
   assertTrue(viewAllChildrenPage.isChildPresent("id1", "Test1"));
   assertTrue(viewAllChildrenPage.isChildPresent("id2", "Test2"));
 }
  public void testClickOnChildShouldShowViewPage() throws JSONException {
    ChildRepository repository =
        RapidFtrApplication.getInstance().getInjector().getInstance(ChildRepository.class);
    Child child1 = new Child("id1", "rapidftr", "{\"name\":\"Test1\"}");
    repository.createOrUpdate(child1);
    Child child2 = new Child("id2", "rapidftr", "{\"name\":\"Test2\"}");
    repository.createOrUpdate(child2);

    viewAllChildrenPage.clickChild("id1");
    viewAllChildrenPage.verifyChildDetails(child1);
  }
 public void testClickOnChildShouldShowViewPage() throws JSONException {
   ChildRepository repository =
       RapidFtrApplication.getApplicationInstance()
           .getInjector()
           .getInstance(ChildRepository.class);
   Child child1 = new Child(getAlphaNumeric(4), "rapidftr", "{\"name\":\"Test1\"}");
   repository.createOrUpdate(child1);
   Child child2 = new Child(getAlphaNumeric(6), "rapidftr", "{\"name\":\"Test2\"}");
   repository.createOrUpdate(child2);
   viewAllChildrenPage.navigateToViewAllPage();
   viewAllChildrenPage.clickChild(child1.getUniqueId());
   viewAllChildrenPage.verifyChildDetails(child1);
 }
 private void saveIncomingChildren(ArrayList<String> idsToDownload)
     throws IOException, JSONException {
   for (String idToDownload : idsToDownload) {
     Child incomingChild = childService.getChild(idToDownload);
     if (isCancelled()) {
       break;
     }
     try {
       incomingChild.setSynced(true);
       if (childRepository.exists(incomingChild.getUniqueId())) {
         childRepository.update(incomingChild);
       } else {
         childRepository.createOrUpdate(incomingChild);
       }
       childService.setPhoto(incomingChild);
     } catch (Exception e) {
       Log.e("SyncAllDataTask", "Error syncing child", e);
       throw new RuntimeException(e);
     }
   }
 }
 public ArrayList<String> getAllIdsForDownload() throws IOException, JSONException {
   HashMap<String, String> serverIdsRevs = childService.getAllIdsAndRevs();
   HashMap<String, String> repoIdsAndRevs = childRepository.getAllIdsAndRevs();
   ArrayList<String> idsToDownload = new ArrayList<String>();
   for (Map.Entry<String, String> serverIdRev : serverIdsRevs.entrySet()) {
     if (!isServerIdExistingInRepository(repoIdsAndRevs, serverIdRev)
         || (repoIdsAndRevs.get(serverIdRev.getKey()) != null
             && isRevisionMismatch(repoIdsAndRevs, serverIdRev))) {
       idsToDownload.add(serverIdRev.getKey());
     }
   }
   return idsToDownload;
 }
 public void sync(Child child) throws IOException, JSONException {
   child.setSynced(true);
   fluentRequest
       .path(String.format("/children/%s", child.getUniqueId()))
       .context(context)
       .param("child", child.toString());
   if (child.opt("current_photo_key") != null
       && !child.optString("current_photo_key").equals("")) {
     fluentRequest.param("current_photo_key", child.optString("current_photo_key"));
   }
   fluentRequest.put();
   repository.update(child);
 }
 public List<Child> searchChildrenInDB(String subString) {
   List<Child> filteredList = new ArrayList<Child>();
   try {
     for (Child child : repository.getAllChildren()) {
       try {
         if (containsIgnoreCase(child.getUniqueId(), subString)
             || containsIgnoreCase((String) child.get("name"), subString)) {
           filteredList.add(child);
         }
       } catch (JSONException e) {
         Log.e("ChildService", "Error while Searching Children");
       }
     }
   } catch (JSONException e) {
     Log.e("ChildService", "Error while Searching Children");
   }
   return filteredList;
 }
 @Override
 protected Boolean doInBackground(Void... notRelevant) {
   try {
     if (!isCancelled()) {
       setProgressAndNotify("Step 1 of 3 - Syncing Form Sections...", 0);
       formService.getPublishedFormSections();
     }
     ArrayList<String> idsToDownload = getAllIdsForDownload();
     setProgressAndNotify("Step 2 of 3 - Sending records to server...", 10);
     List<Child> childrenToSyncWithServer = childRepository.toBeSynced();
     sendChildrenToServer(childrenToSyncWithServer);
     setProgressAndNotify("Step 3 of 3 - Bringing down records from server...", 20);
     saveIncomingChildren(idsToDownload);
     setProgressAndNotify("Sync complete.", 30);
   } catch (Exception e) {
     Log.e("SyncAllDataTask", "Error in sync", e);
     publishProgress("Error in syncing. Try again after some time.");
     return false;
   }
   return true;
 }