Skip to content

Commit

Permalink
- Test cases for out of area birth
Browse files Browse the repository at this point in the history
  • Loading branch information
qaziabubakar-vd committed Aug 5, 2021
1 parent 9bea696 commit 5199995
Show file tree
Hide file tree
Showing 3 changed files with 281 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ public void countExecute() {
}
}

private String getCountSelect() {
public String getCountSelect() {

String query = countSelect;
try {
Expand All @@ -291,7 +291,7 @@ private String getCountSelect() {
return query;
}

private String filterandSortQuery() {
public String filterandSortQuery() {
String query = "";
try {
if (StringUtils.isNoneBlank(filters)) {
Expand All @@ -308,7 +308,7 @@ private String filterandSortQuery() {
return query;
}

private String customDeathQuery(int limit, int offset) {
public String customDeathQuery(int limit, int offset) {
return "Select ec_out_of_area_child.id as _id, ec_out_of_area_child.relationalid, ec_out_of_area_child.last_interacted_with, " +
"ec_out_of_area_child.base_entity_id , ec_out_of_area_child.first_name, ec_out_of_area_child.middle_name, " +
"ec_out_of_area_child.surname, ec_out_of_area_child.middle_name as family_middle_name, ec_out_of_area_child.unique_id, " +
Expand All @@ -317,7 +317,7 @@ private String customDeathQuery(int limit, int offset) {
"from ec_out_of_area_child ORDER BY ec_out_of_area_child.last_interacted_with DESC LIMIT " + offset + "," + limit;
}

private String customDeathQuery(int limit, int offset, String filter) {
public String customDeathQuery(int limit, int offset, String filter) {
return "Select ec_out_of_area_child.id as _id, ec_out_of_area_child.relationalid, ec_out_of_area_child.last_interacted_with, " +
"ec_out_of_area_child.base_entity_id , ec_out_of_area_child.first_name, ec_out_of_area_child.middle_name, " +
"ec_out_of_area_child.surname, ec_out_of_area_child.middle_name as family_middle_name, ec_out_of_area_child.unique_id, " +
Expand All @@ -326,7 +326,7 @@ private String customDeathQuery(int limit, int offset, String filter) {
"from ec_out_of_area_child "+getFilters(filter)+" ORDER BY ec_out_of_area_child.last_interacted_with DESC LIMIT " + offset + "," + limit;
}

private String getFilters(String filter) {
public String getFilters(String filter) {
return "where ( ec_out_of_area_child.first_name like '%" + filter + "%' or ec_out_of_area_child.middle_name like '%" + filter + "%' or ec_out_of_area_child.unique_id like '%" + filter + "%')";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
package org.smartregister.chw.activity;

import android.app.Activity;
import android.app.Application;
import android.content.Intent;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.android.controller.ActivityController;
import org.robolectric.util.ReflectionHelpers;
import org.smartregister.Context;
import org.smartregister.CoreLibrary;
import org.smartregister.chw.BaseUnitTest;
import org.smartregister.chw.core.adapter.NavigationAdapter;
import org.smartregister.chw.core.custom_views.NavigationMenu;
import org.smartregister.chw.presenter.CoreOutOfAreaChildRegisterPresenter;
import org.smartregister.chw.util.CrvsConstants;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;

public class OutOfAreaChildActivityTest extends BaseUnitTest {

@Rule
public MockitoRule mockitoRule = MockitoJUnit.rule();

@Mock
private CoreOutOfAreaChildRegisterPresenter presenter;

private OutOfAreaChildActivity activity;
private ActivityController<OutOfAreaChildActivity> controller;

@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
Context context = Context.getInstance();
CoreLibrary.init(context);

//Auto login by default
context.session().start(context.session().lengthInMilliseconds());

MockitoAnnotations.initMocks(this);
controller = Robolectric.buildActivity(OutOfAreaChildActivity.class);
activity = controller.get();
activity = Mockito.spy(activity);
// mute this presenter
Mockito.doNothing().when(activity).initializePresenter();
ReflectionHelpers.setField(activity, "presenter", presenter);
}

@Test
public void testOnResumption() {
NavigationMenu menu = Mockito.mock(NavigationMenu.class);
NavigationAdapter adapter = Mockito.mock(NavigationAdapter.class);

Mockito.doReturn(adapter).when(menu).getNavigationAdapter();
ReflectionHelpers.setStaticField(NavigationMenu.class, "instance", menu);

ReflectionHelpers.setField(activity, "presenter", presenter);
activity.onResumption();

Mockito.verify(adapter).setSelectedView(Mockito.anyString());
}

@Test
public void testGetPresenter(){
Assert.assertEquals(presenter, activity.presenter());
}

@Test
public void testActivityLoaded() {
Assert.assertNotNull(activity);
}

@Test
public void testStartFormActivity() {
JSONObject json = new JSONObject();
activity.startFormActivity(json);
Mockito.verify(activity).startActivityForResult(Mockito.any(Intent.class), Mockito.anyInt());
}

@Test
public void testOnActivityResultVerifyJsonReceived() {
OutOfAreaChildActivity spyActivity = Mockito.spy(activity);
JSONObject form = getFormJson(RuntimeEnvironment.application, CrvsConstants.OUT_OF_AREA_CHILD_FORM);

CoreOutOfAreaChildRegisterPresenter presenter = Mockito.mock(CoreOutOfAreaChildRegisterPresenter.class);
ReflectionHelpers.setField(spyActivity, "presenter", presenter);

int resultCode = Activity.RESULT_OK;
int requestCode = org.smartregister.family.util.JsonFormUtils.REQUEST_CODE_GET_JSON;
Intent data = new Intent();
data.putExtra(org.smartregister.family.util.Constants.JSON_FORM_EXTRA.JSON, form.toString());
spyActivity.onActivityResultExtended(requestCode, resultCode, data);
}

@Test
public void testPresenterIsSetUp() {
CoreOutOfAreaChildRegisterPresenter presenter = ReflectionHelpers.getField(activity, "presenter");
Assert.assertTrue(presenter != null);
}

public JSONObject getFormJson(Application mContext, String formIdentity) {
if (mContext != null) {
try {
InputStream inputStream = mContext.getApplicationContext().getAssets()
.open("json" + ".form/" + formIdentity + ".json");
BufferedReader reader = new BufferedReader(
new InputStreamReader(inputStream, StandardCharsets.UTF_8));
String jsonString;
StringBuilder stringBuilder = new StringBuilder();

while ((jsonString = reader.readLine()) != null) {
stringBuilder.append(jsonString);
}
inputStream.close();

return new JSONObject(stringBuilder.toString());
} catch (IOException | JSONException e) {
e.printStackTrace();
}
}

return null;
}

@After
public void tearDown() {
try {
activity.finish();
controller.pause().stop().destroy(); //destroy controller if we can
} catch (Exception e) {
e.printStackTrace();
}

//logout
Context.getInstance().session().expire();
System.gc();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
package org.smartregister.chw.fragment;

import android.widget.ImageView;
import android.widget.ProgressBar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentActivity;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.util.ReflectionHelpers;
import org.smartregister.Context;
import org.smartregister.CoreLibrary;
import org.smartregister.chw.BaseUnitTest;
import org.smartregister.chw.presenter.OutOfAreaChildFragmentPresenter;
import org.smartregister.commonregistry.CommonRepository;
import org.smartregister.receiver.SyncStatusBroadcastReceiver;

import java.util.ArrayList;

import static android.view.View.GONE;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.when;

public class OutOfAreaChildFragmentTest extends BaseUnitTest {

@Mock
private Context context;

@Mock
private ProgressBar syncProgressBar;

@Mock
private CommonRepository commonRepository;

@Mock
private ImageView syncButton;

@Mock
private OutOfAreaChildFragmentPresenter presenter;

private OutOfAreaFragment fragment;

@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
fragment = Mockito.mock(OutOfAreaFragment.class, Mockito.CALLS_REAL_METHODS);
CoreLibrary.init(context);
when(context.commonrepository(anyString())).thenReturn(commonRepository);
FragmentActivity activity = Robolectric.buildActivity(AppCompatActivity.class).create().resume().get();
Context.bindtypes = new ArrayList<>();
SyncStatusBroadcastReceiver.init(activity);
}

@Test
public void presenterInitializesCorrectly() {
fragment.initializePresenter();
Assert.assertNotNull(presenter);
}

@Test
public void refreshSyncProgressSpinnerTogglesSyncVisibility() {
ReflectionHelpers.setField(fragment, "syncButton", syncButton);
ReflectionHelpers.setField(fragment, "syncProgressBar", syncProgressBar);
fragment.refreshSyncProgressSpinner();
Mockito.verify(syncProgressBar, Mockito.times(1)).setVisibility(GONE);
Mockito.verify(syncButton, Mockito.times(1)).setVisibility(GONE);
}

@Test
public void getCountSelect() {
fragment.dueFilterActive = true;
fragment.getCountSelect();
Mockito.verify(fragment, Mockito.times(1)).getCountSelect();
}

@Test
public void getFilterAndSortQuery() {
fragment.dueFilterActive = true;
fragment.filterandSortQuery();
Mockito.verify(fragment, Mockito.times(1)).filterandSortQuery();
}

@Test
public void getCustomDeathQueryWithDueFilters() {
fragment.dueFilterActive = true;
String query = fragment.filterandSortQuery();
commonRepository.rawCustomQueryForAdapter(query);
}

@Test
public void getCustomDeathQuery() {
commonRepository.rawCustomQueryForAdapter(fragment.customDeathQuery(0,20));
}

@Test
public void getCustomDeathQueryWithFilter() {
String query = fragment.getFilters("a");
String deathQuery = fragment.customDeathQuery(0,20, query);
commonRepository.rawCustomQueryForAdapter(deathQuery);
}

@Test
public void getToolbarTitle() {
fragment.dueFilterActive = true;
fragment.getToolBarTitle();
Mockito.verify(fragment, Mockito.times(1)).getToolBarTitle();
}

@Test
public void getShowNotFoundPopup() {
fragment.dueFilterActive = true;
fragment.showNotFoundPopup(Mockito.anyString());
Mockito.verify(fragment, Mockito.times(1)).showNotFoundPopup(Mockito.anyString());
}

}

0 comments on commit 5199995

Please sign in to comment.