-
Notifications
You must be signed in to change notification settings - Fork 22
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ce917cb
commit 7e4d9d4
Showing
3 changed files
with
281 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
154 changes: 154 additions & 0 deletions
154
opensrp-chw/src/test/java/org/smartregister/chw/activity/OutOfAreaChildActivityTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | ||
} | ||
|
||
} |
122 changes: 122 additions & 0 deletions
122
opensrp-chw/src/test/java/org/smartregister/chw/fragment/OutOfAreaChildFragmentTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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()); | ||
} | ||
|
||
} |