From baa486fb8a202854bff12e29386fc5d1b6794208 Mon Sep 17 00:00:00 2001 From: paulinembabu Date: Thu, 25 Mar 2021 17:58:08 +0300 Subject: [PATCH 1/6] Resets the calender date onResume --- .../smartregister/giz/fragment/FilterReportFragment.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/opensrp-giz-malawi/src/main/java/org/smartregister/giz/fragment/FilterReportFragment.java b/opensrp-giz-malawi/src/main/java/org/smartregister/giz/fragment/FilterReportFragment.java index c8987a01..056bbb57 100644 --- a/opensrp-giz-malawi/src/main/java/org/smartregister/giz/fragment/FilterReportFragment.java +++ b/opensrp-giz-malawi/src/main/java/org/smartregister/giz/fragment/FilterReportFragment.java @@ -44,11 +44,11 @@ public class FilterReportFragment extends Fragment implements FindReportContract public static final String TAG = "FilterReportFragment"; public static final String REPORT_NAME = "REPORT_NAME"; private final SimpleDateFormat dateFormat = new SimpleDateFormat("dd MMM yyyy", Locale.US); - private final Calendar myCalendar = Calendar.getInstance(); private final List communityList = new ArrayList<>(); protected AutoCompleteTextView autoCompleteTextView; protected ImageView imageView; protected FindReportContract.Presenter presenter; + private Calendar myCalendar = Calendar.getInstance(); private View view; private String titleName; private EditText editTextDate; @@ -80,8 +80,9 @@ public void onResume() { selectedItem = null; } if (editTextDate != null) { - Calendar calendar = Calendar.getInstance(); - editTextDate.setText(dateFormat.format(calendar.getTime())); + myCalendar.clear(); + myCalendar = Calendar.getInstance(); + editTextDate.setText(dateFormat.format(myCalendar.getTime())); } } From b2d3ebe44d6e191c166d576f28881ae5bf1639f9 Mon Sep 17 00:00:00 2001 From: paulinembabu Date: Fri, 26 Mar 2021 13:13:46 +0300 Subject: [PATCH 2/6] Cleans up ReportRegisterActivityTest --- .../activity/ReportRegisterActivityTest.java | 84 +++++-------------- 1 file changed, 22 insertions(+), 62 deletions(-) diff --git a/opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/ReportRegisterActivityTest.java b/opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/ReportRegisterActivityTest.java index a572659d..c9edc2a5 100644 --- a/opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/ReportRegisterActivityTest.java +++ b/opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/ReportRegisterActivityTest.java @@ -5,9 +5,6 @@ import android.widget.ListView; import android.widget.TextView; -import androidx.drawerlayout.widget.DrawerLayout; - -import org.apache.commons.lang3.tuple.Triple; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -25,11 +22,9 @@ import org.smartregister.domain.FetchStatus; import org.smartregister.giz.BaseUnitTest; import org.smartregister.giz.R; +import org.smartregister.giz.adapter.NavigationAdapter; import org.smartregister.giz.view.NavigationMenu; -import java.util.HashMap; -import java.util.Map; - public class ReportRegisterActivityTest extends BaseUnitTest { @Rule @@ -47,10 +42,16 @@ public void setUp() { //Auto login by default context.session().start(context.session().lengthInMilliseconds()); - controller = Robolectric.buildActivity(ReportRegisterActivity.class).create().start(); + controller = Robolectric.buildActivity(ReportRegisterActivity.class).create().start().resume().restart(); activity = controller.get(); } + @Test + public void testOnBackActivityReturnsNull() { + activity.onBackActivity(); + Assert.assertNull(activity.onBackActivity()); + } + @After public void tearDown() { try { @@ -79,21 +80,23 @@ public void testSetupViews() { @Test - public void testGetDrawerLayoutId() { - DrawerLayout drawerLayout = Mockito.mock(DrawerLayout.class); + public void testCreateDrawer() { + NavigationMenu navigationMenu = Mockito.mock(NavigationMenu.class); + activity = Mockito.spy(activity); + NavigationAdapter navigationAdapter = Mockito.mock(NavigationAdapter.class); activity.setTheme(org.smartregister.R.style.AppTheme); + Mockito.when(navigationMenu.getNavigationAdapter()).thenReturn(navigationAdapter); + activity.createDrawer(); + activity.getDrawerLayoutId(); - Assert.assertNotNull(drawerLayout); + Mockito.verify(activity).createDrawer(); } - @Test public void testOnClick() { View view = Mockito.mock(View.class); - activity = Mockito.spy(activity); NavigationMenu navigationMenu = Mockito.mock(NavigationMenu.class); - Mockito.doReturn(R.id.btn_back_to_home).when(view).getId(); activity.onClickReport(view); @@ -101,82 +104,39 @@ public void testOnClick() { Mockito.verify(activity).onClickReport(view); } - @Test - public void testOnUniqueIdFetched() { - View view = Mockito.mock(View.class); - - String anyString = "string"; - Map anyMap = new HashMap<>(); - Triple, String> triple = Triple.of(anyString, anyMap, anyString); - activity.onUniqueIdFetched(triple, anyString); - Assert.assertNotNull(view); - } - - @Test - public void testOnNoUniqueId() { - View view = Mockito.mock(View.class); - activity.onNoUniqueId(); - Assert.assertNotNull(view); - } - - @Test - public void testOnRegistrationSaved() { - View view = Mockito.mock(View.class); - activity.onRegistrationSaved(true); - Assert.assertNotNull(view); - } - @Test public void testOnSyncStart() { ImageView reportSyncBtn = Mockito.mock(ImageView.class); - - activity.setTheme(org.smartregister.R.style.AppTheme); + activity = Mockito.spy(activity); activity.setContentView(R.layout.activity_report_register); ReflectionHelpers.setField(activity, "reportSyncBtn", reportSyncBtn); activity.onSyncStart(); - Assert.assertEquals(reportSyncBtn.getVisibility(), View.VISIBLE); + Mockito.verify(activity).onSyncStart(); } @Test public void testOnSyncComplete() { ImageView reportSyncBtn = Mockito.mock(ImageView.class); - - activity.setTheme(org.smartregister.R.style.AppTheme); + activity = Mockito.spy(activity); activity.setContentView(R.layout.activity_report_register); ReflectionHelpers.setField(activity, "reportSyncBtn", reportSyncBtn); FetchStatus status = FetchStatus.fetchStarted; activity.onSyncComplete(status); - Assert.assertEquals(reportSyncBtn.getVisibility(), View.VISIBLE); + Mockito.verify(activity).onSyncComplete(status); } @Test public void testOSyncInProgress() { ImageView reportSyncBtn = Mockito.mock(ImageView.class); + activity = Mockito.spy(activity); activity.setContentView(R.layout.activity_report_register); ReflectionHelpers.setField(activity, "reportSyncBtn", reportSyncBtn); FetchStatus status = FetchStatus.fetchStarted; activity.onSyncInProgress(status); - Assert.assertEquals(reportSyncBtn.getVisibility(), View.VISIBLE); - } - - @Test - public void testCreateDrawer() { - activity = Mockito.spy(activity); - NavigationMenu navigationMenu = Mockito.mock(NavigationMenu.class); - activity.createDrawer(); - - Assert.assertNotNull(navigationMenu); - } - - @Test - public void testOnResume() { - ImageView reportSyncBtn = Mockito.mock(ImageView.class); - ReflectionHelpers.setField(activity, "reportSyncBtn", reportSyncBtn); - activity.onResume(); - Assert.assertEquals(reportSyncBtn.getVisibility(), View.VISIBLE); + Mockito.verify(activity).onSyncInProgress(status); } } From b5e28a7e69988cd1190e2d985cc4a21967dc182d Mon Sep 17 00:00:00 2001 From: paulinembabu Date: Tue, 30 Mar 2021 15:30:35 +0300 Subject: [PATCH 3/6] Add test --- .../java/org/smartregister/giz/activity/LoginActivityTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/LoginActivityTest.java b/opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/LoginActivityTest.java index e61f7be1..9d6ffb33 100644 --- a/opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/LoginActivityTest.java +++ b/opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/LoginActivityTest.java @@ -44,7 +44,7 @@ public class LoginActivityTest extends BaseActivityUnitTest { public void setUp() { MockitoAnnotations.initMocks(this); - controller = Robolectric.buildActivity(LoginActivity.class).create().start(); + controller = Robolectric.buildActivity(LoginActivity.class).create().start().resume(); loginActivity = controller.get(); } From 132afe8d4d61ce2dc1e6f64800cc61547c456151 Mon Sep 17 00:00:00 2001 From: paulinembabu Date: Tue, 30 Mar 2021 15:30:58 +0300 Subject: [PATCH 4/6] Add missing MIgrations --- opensrp-giz-malawi/build.gradle | 10 +++---- .../giz/repository/GizMalawiRepository.java | 26 +++++++++++++++++-- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/opensrp-giz-malawi/build.gradle b/opensrp-giz-malawi/build.gradle index bad36ac7..227ea0ad 100644 --- a/opensrp-giz-malawi/build.gradle +++ b/opensrp-giz-malawi/build.gradle @@ -34,7 +34,7 @@ android { minSdkVersion androidMinSdkVersion targetSdkVersion androidTargetSdkVersion versionCode 36 - versionName "0.2.46" + versionName "0.3.0" multiDexEnabled true buildConfigField "long", "MAX_SERVER_TIME_DIFFERENCE", "1800000l" buildConfigField "boolean", "TIME_CHECK", "false" @@ -113,7 +113,7 @@ android { buildConfigField "int", "OPENMRS_UNIQUE_ID_BATCH_SIZE", '100' buildConfigField "int", "OPENMRS_UNIQUE_ID_SOURCE", '2' buildConfigField "int", "VACCINE_SYNC_TIME", '0' - buildConfigField "int", "DATABASE_VERSION", '14' + buildConfigField "int", "DATABASE_VERSION", '15' buildConfigField "long", "MAX_SERVER_TIME_DIFFERENCE", "1800000l" buildConfigField "boolean", "TIME_CHECK", "true" buildConfigField "int", "DATA_SYNC_DURATION_MINUTES", '15' @@ -141,7 +141,7 @@ android { buildConfigField "int", "OPENMRS_UNIQUE_ID_BATCH_SIZE", '10' buildConfigField "int", "OPENMRS_UNIQUE_ID_SOURCE", '2' buildConfigField "int", "VACCINE_SYNC_TIME", '0' - buildConfigField "int", "DATABASE_VERSION", '14' + buildConfigField "int", "DATABASE_VERSION", '15' buildConfigField "long", "MAX_SERVER_TIME_DIFFERENCE", "1800000l" buildConfigField "boolean", "TIME_CHECK", "true" buildConfigField "int", "DATA_SYNC_DURATION_MINUTES", '15' @@ -168,7 +168,7 @@ android { buildConfigField "int", "OPENMRS_UNIQUE_ID_BATCH_SIZE", '100' buildConfigField "int", "OPENMRS_UNIQUE_ID_SOURCE", '2' buildConfigField "int", "VACCINE_SYNC_TIME", '0' - buildConfigField "int", "DATABASE_VERSION", '14' + buildConfigField "int", "DATABASE_VERSION", '15' buildConfigField "long", "MAX_SERVER_TIME_DIFFERENCE", "1800000l" buildConfigField "boolean", "TIME_CHECK", "true" buildConfigField "int", "DATA_SYNC_DURATION_MINUTES", '15' @@ -191,7 +191,7 @@ android { buildConfigField "int", "OPENMRS_UNIQUE_ID_BATCH_SIZE", '100' buildConfigField "int", "OPENMRS_UNIQUE_ID_SOURCE", '2' buildConfigField "int", "VACCINE_SYNC_TIME", '0' - buildConfigField "int", "DATABASE_VERSION", '14' + buildConfigField "int", "DATABASE_VERSION", '15' buildConfigField "long", "MAX_SERVER_TIME_DIFFERENCE", "1800000l" buildConfigField "boolean", "TIME_CHECK", "true" buildConfigField "int", "DATA_SYNC_DURATION_MINUTES", '15' diff --git a/opensrp-giz-malawi/src/main/java/org/smartregister/giz/repository/GizMalawiRepository.java b/opensrp-giz-malawi/src/main/java/org/smartregister/giz/repository/GizMalawiRepository.java index f3829a40..8556a296 100644 --- a/opensrp-giz-malawi/src/main/java/org/smartregister/giz/repository/GizMalawiRepository.java +++ b/opensrp-giz-malawi/src/main/java/org/smartregister/giz/repository/GizMalawiRepository.java @@ -55,6 +55,8 @@ import org.smartregister.util.DatabaseMigrationUtils; import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Map; @@ -191,8 +193,10 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { upgradeToVersion13CreateReasonForDefaultingTable(db); break; case 14: - db.execSQL(VaccineRepository.UPDATE_TABLE_ADD_IS_VOIDED_COL); - db.execSQL(VaccineRepository.UPDATE_TABLE_ADD_IS_VOIDED_COL_INDEX); + upgradeToVersion14UpdateMissingColumns(db); + break; + case 15: + upgradeToVersion15TriggerCreateNewTable(db); break; default: break; @@ -480,6 +484,24 @@ private void upgradeToVersion13CreateReasonForDefaultingTable(@NonNull SQLiteDat } } + private void upgradeToVersion14UpdateMissingColumns(@NonNull SQLiteDatabase db) { + db.execSQL(VaccineRepository.UPDATE_TABLE_ADD_IS_VOIDED_COL); + db.execSQL(VaccineRepository.UPDATE_TABLE_ADD_IS_VOIDED_COL_INDEX); + EventClientRepository.addEventTaskId(db); + EventClientRepository.createIndex(db, EventClientRepository.Table.event, EventClientRepository.event_column.values()); + } + + private void upgradeToVersion15TriggerCreateNewTable(@NonNull SQLiteDatabase db) { + try { + DatabaseMigrationUtils.createAddedECTables(db, + new HashSet<>(Collections.singletonList("ec_family_member_location")), + GizMalawiApplication.createCommonFtsObject(context)); + + } catch (Exception e) { + Timber.e(e, "upgradeToVersion15"); + } + } + private boolean checkIfAppUpdated() { String savedAppVersion = ReportingLibrary.getInstance().getContext().allSharedPreferences().getPreference(appVersionCodePref); if (savedAppVersion.isEmpty()) { From f4bca32a9957148fcd8307bc8aac3d612dd47af9 Mon Sep 17 00:00:00 2001 From: paulinembabu Date: Wed, 31 Mar 2021 21:23:08 +0300 Subject: [PATCH 5/6] Add test --- .../activity/ChildRegisterActivityTest.java | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/ChildRegisterActivityTest.java diff --git a/opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/ChildRegisterActivityTest.java b/opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/ChildRegisterActivityTest.java new file mode 100644 index 00000000..d95fbc06 --- /dev/null +++ b/opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/ChildRegisterActivityTest.java @@ -0,0 +1,126 @@ +package org.smartregister.giz.activity; + +import android.content.Intent; + +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.ArgumentCaptor; +import org.mockito.ArgumentMatchers; +import org.mockito.Captor; +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.android.controller.ActivityController; +import org.robolectric.util.ReflectionHelpers; +import org.smartregister.Context; +import org.smartregister.CoreLibrary; +import org.smartregister.child.util.ChildJsonFormUtils; +import org.smartregister.giz.BaseUnitTest; +import org.smartregister.giz.adapter.NavigationAdapter; +import org.smartregister.giz.presenter.GizChildRegisterPresenter; +import org.smartregister.giz.view.NavigationMenu; +import org.smartregister.view.contract.BaseRegisterContract; + +public class ChildRegisterActivityTest extends BaseUnitTest { + @Rule + public MockitoRule rule = MockitoJUnit.rule(); + private ChildRegisterActivity activity; + private ActivityController controller; + @Captor + private ArgumentCaptor intentArgumentCaptor; + @Captor + private ArgumentCaptor integerArgumentCaptor; + @Mock + private BaseRegisterContract.Presenter presenter; + + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + + Context context = Context.getInstance(); + CoreLibrary.init(context); + + //Auto login by default + context.session().start(context.session().lengthInMilliseconds()); + + controller = Robolectric.buildActivity(ChildRegisterActivity.class).create().start().resume().restart(); + activity = controller.get(); + } + + @Test + public void testInitializePresenter() { + activity.initializePresenter(); + Assert.assertTrue(ReflectionHelpers.getField(activity, "presenter") instanceof GizChildRegisterPresenter); + } + + @Test + public void testStartFormActivityInvokesChildForm() throws Exception { + activity = Mockito.spy(activity); + + Mockito.doNothing().when(activity).startActivityForResult(ArgumentMatchers.any(Intent.class), ArgumentMatchers.anyInt()); + + activity.startFormActivity(new JSONObject()); + + Mockito.verify(activity).startActivityForResult(intentArgumentCaptor.capture(), integerArgumentCaptor.capture()); + + Intent capturedIntent = intentArgumentCaptor.getValue(); + Assert.assertNotNull(capturedIntent); + Assert.assertEquals("org.smartregister.giz.activity.ChildFormActivity", capturedIntent.getComponent().getClassName()); + + Integer capturedInteger = integerArgumentCaptor.getValue(); + + Assert.assertNotNull(capturedInteger); + Assert.assertEquals(ChildJsonFormUtils.REQUEST_CODE_GET_JSON, capturedInteger.intValue()); + + } + + @Test + public void testOpenDrawer() { + NavigationMenu navigationMenu = Mockito.mock(NavigationMenu.class); + activity = Mockito.spy(activity); + NavigationAdapter navigationAdapter = Mockito.mock(NavigationAdapter.class); + Mockito.when(navigationMenu.getNavigationAdapter()).thenReturn(navigationAdapter); + activity.openDrawer(); + Mockito.verify(activity).openDrawer(); + } + + @Test + public void testCloseDrawer() { + NavigationMenu navigationMenu = Mockito.mock(NavigationMenu.class); + activity = Mockito.spy(activity); + NavigationAdapter navigationAdapter = Mockito.mock(NavigationAdapter.class); + Mockito.when(navigationMenu.getNavigationAdapter()).thenReturn(navigationAdapter); + activity.closeDrawer(); + Mockito.verify(activity).closeDrawer(); + } + + @Test + public void testOnResumption() { + activity = Mockito.spy(activity); + NavigationMenu navigationMenu = Mockito.mock(NavigationMenu.class); + NavigationAdapter navigationAdapter = Mockito.mock(NavigationAdapter.class); + Mockito.when(navigationMenu.getNavigationAdapter()).thenReturn(navigationAdapter); + activity.onResumption(); + + Mockito.verify(activity).onResumption(); + } + + @After + public void tearDown() { + try { + activity.finish(); + controller.pause().stop().destroy(); //destroy controller if we can + } catch (Exception e) { + e.printStackTrace(); + } + } + +} From f677aa4c622028f557646cb7adbdd7312aab8ce0 Mon Sep 17 00:00:00 2001 From: paulinembabu Date: Wed, 31 Mar 2021 21:27:34 +0300 Subject: [PATCH 6/6] Removes unused field --- .../giz/activity/ChildRegisterActivityTest.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/ChildRegisterActivityTest.java b/opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/ChildRegisterActivityTest.java index d95fbc06..0dddf3ac 100644 --- a/opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/ChildRegisterActivityTest.java +++ b/opensrp-giz-malawi/src/test/java/org/smartregister/giz/activity/ChildRegisterActivityTest.java @@ -11,7 +11,6 @@ import org.mockito.ArgumentCaptor; import org.mockito.ArgumentMatchers; import org.mockito.Captor; -import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnit; @@ -26,7 +25,6 @@ import org.smartregister.giz.adapter.NavigationAdapter; import org.smartregister.giz.presenter.GizChildRegisterPresenter; import org.smartregister.giz.view.NavigationMenu; -import org.smartregister.view.contract.BaseRegisterContract; public class ChildRegisterActivityTest extends BaseUnitTest { @Rule @@ -37,9 +35,6 @@ public class ChildRegisterActivityTest extends BaseUnitTest { private ArgumentCaptor intentArgumentCaptor; @Captor private ArgumentCaptor integerArgumentCaptor; - @Mock - private BaseRegisterContract.Presenter presenter; - @Before public void setUp() {