From f98d2f84a606ebbb744c8fdd5d67caa4cde9a453 Mon Sep 17 00:00:00 2001 From: Hamza Ahmed Khan Date: Mon, 4 Jul 2022 19:30:46 +0500 Subject: [PATCH 01/17] Update coveralls configuration --- build.gradle | 19 +++---------------- opensrp-anc/build.gradle | 6 +++--- 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/build.gradle b/build.gradle index 131b8aa22..833ac679a 100644 --- a/build.gradle +++ b/build.gradle @@ -7,10 +7,11 @@ buildscript { jcenter() maven { url 'https://maven.fabric.io/public' } maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } + maven { url 'https://plugins.gradle.org/m2/' } } dependencies { classpath 'com.android.tools.build:gradle:4.0.0' - classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.8.3' + classpath 'gradle.plugin.org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.10.2' classpath 'com.palantir:jacoco-coverage:0.4.0' classpath "io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.11.0" classpath 'com.google.gms:google-services:4.3.5' @@ -22,8 +23,6 @@ buildscript { } } -//apply plugin: 'com.palantir.jacoco-full-report' -apply plugin: 'com.github.kt3k.coveralls' configure(allprojects) { project -> @@ -35,6 +34,7 @@ configure(allprojects) { project -> mavenCentral() jcenter() maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } + maven { url 'https://plugins.gradle.org/m2/'} mavenLocal() } } @@ -52,7 +52,6 @@ allprojects { maven { url "https://repo.maven.apache.org/maven2" } maven { url "https://cloudant.github.io/cloudant-sync-eap/repository" } maven { url "https://s3.amazonaws.com/repo.commonsware.com" } - //maven { url "https://dl.bintray.com/ibm-watson-health/ibm-fhir-server-releases" } google() jcenter() } @@ -95,18 +94,6 @@ subprojects { } } -/*task clean(type: Delete) { - delete rootProject.buildDir -}*/ - -//jacocoFull { -// excludeProject ":sample", ":opensrp-client-anc" -//} - -coveralls { - jacocoReportPath = "${buildDir}/reports/jacoco/jacocoFullReport/jacocoFullReport.xml" - sourceDirs += ["opensrp-anc/src/main/java/", "reference-app/src/main/java"] -} apply plugin: 'io.codearte.nexus-staging' def isReleaseBuild() { diff --git a/opensrp-anc/build.gradle b/opensrp-anc/build.gradle index 3c4b5bf87..885e18c00 100644 --- a/opensrp-anc/build.gradle +++ b/opensrp-anc/build.gradle @@ -5,7 +5,7 @@ buildscript { } dependencies { classpath 'com.android.tools.build:gradle:4.1.3' - classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.8.3' + classpath 'gradle.plugin.org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.10.2' classpath 'com.google.gms:google-services:4.3.10' } configurations.all { @@ -326,9 +326,9 @@ task javadoc(type: Javadoc) { classpath += configurations.compile } -def jacocoReportPath,sourceDirs +def jacocoReportPath, sourceDirs task coveralls { - jacocoReportPath = "${buildDir}/reports/jacoco/jacocoTestReport/merged.xml" + jacocoReportPath = "${buildDir}/reports/jacoco/jacocoRootReport/merged.xml" sourceDirs = ["$project.projectDir/src/main/java"] } From b558f03045306ac6d321bcd1d363621c13f321cc Mon Sep 17 00:00:00 2001 From: vend Date: Thu, 14 Jul 2022 17:32:37 +0500 Subject: [PATCH 02/17] issue 839 Calculation error in gestational age fixed --- build.gradle | 4 ++-- opensrp-anc/build.gradle | 2 +- .../main/assets/json.form/anc_profile.json | 2 ++ .../assets/rule/profile_calculation_rules.yml | 4 ++-- .../library/activity/MainContactActivity.java | 23 ++++++++++++++++++- .../constants/ANCJsonFormConstants.java | 14 +++++++++++ .../library/interactor/ContactInteractor.java | 9 ++++++++ .../anc/library/util/ANCFormUtils.java | 11 ++++++--- .../anc/library/widget/ANCSpinnerFactory.java | 8 +++++-- reference-app/build.gradle | 4 ++-- .../anc/application/AncApplication.java | 4 ++-- 11 files changed, 70 insertions(+), 15 deletions(-) create mode 100644 opensrp-anc/src/main/java/org/smartregister/anc/library/constants/ANCJsonFormConstants.java diff --git a/build.gradle b/build.gradle index 131b8aa22..6b075da4c 100644 --- a/build.gradle +++ b/build.gradle @@ -78,8 +78,8 @@ subprojects { ext.androidToolsBuildGradle = '30.0.3' ext.androidBuildToolsVersion = '30.0.3' ext.androidMinSdkVersion = 18 - ext.androidCompileSdkVersion = 30 - ext.androidTargetSdkVersion = 30 + ext.androidCompileSdkVersion = 31 + ext.androidTargetSdkVersion = 31 ext.androidAnnotationsVersion = '3.0.1' ext.androidAnnotationsAPIVersion = '3.0.1' ext.jacocoVersion = "0.7.9" diff --git a/opensrp-anc/build.gradle b/opensrp-anc/build.gradle index 3ad80dac7..6fd4a01bb 100644 --- a/opensrp-anc/build.gradle +++ b/opensrp-anc/build.gradle @@ -178,7 +178,7 @@ tasks.withType(Test) { dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' - implementation('org.smartregister:opensrp-client-native-form:2.1.17-SNAPSHOT@aar') { + implementation('org.smartregister:opensrp-client-native-form:3.0.0-PREVIEW-SNAPSHOT@aar') { transitive = true exclude group: 'com.android.support', module: 'recyclerview-v7' exclude group: 'com.android.support', module: 'appcompat-v7' diff --git a/opensrp-anc/src/main/assets/json.form/anc_profile.json b/opensrp-anc/src/main/assets/json.form/anc_profile.json index baa45ddff..978bbbeb7 100644 --- a/opensrp-anc/src/main/assets/json.form/anc_profile.json +++ b/opensrp-anc/src/main/assets/json.form/anc_profile.json @@ -402,6 +402,7 @@ "label_info_title": "{{anc_profile.step2.lmp_known.label_info_title}}", "label_text_style": "bold", "max_date": "today", + "secondary_value_field":"lmp_known_date", "options": [ { "key": "yes", @@ -492,6 +493,7 @@ "label_info_text": "{{anc_profile.step2.ultrasound_done.label_info_text}}", "label_info_title": "{{anc_profile.step2.ultrasound_done.label_info_title}}", "label_text_style": "bold", + "secondary_value_field": "ultrasound_done_date", "options": [ { "key": "yes", diff --git a/opensrp-anc/src/main/assets/rule/profile_calculation_rules.yml b/opensrp-anc/src/main/assets/rule/profile_calculation_rules.yml index 2954e3e63..5d601d933 100644 --- a/opensrp-anc/src/main/assets/rule/profile_calculation_rules.yml +++ b/opensrp-anc/src/main/assets/rule/profile_calculation_rules.yml @@ -12,7 +12,7 @@ description: step2_lmp_known_date priority: 1 condition: "step2_lmp_known == 'yes'" actions: - - "calculation = helper.getDateToday()" + - "calculation = helper.getSecondaryValue(step2_lmp_known_date)" --- name: step2_lmp_edd description: LMP EDD @@ -40,7 +40,7 @@ description: step2_ultrasound_done_date priority: 1 condition: "step2_ultrasound_done == 'yes'" actions: - - "calculation = helper.getDateToday()" + - "calculation = helper.getSecondaryValue(step2_ultrasound_done_date)" --- name: step2_ultrasound_edd description: Ultrasound edd diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/activity/MainContactActivity.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/activity/MainContactActivity.java index e7298ea2c..6412b13f3 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/activity/MainContactActivity.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/activity/MainContactActivity.java @@ -217,7 +217,7 @@ private void process(String[] mainContactForms) { } } //Make profile always complete on second contact onwards - requiredFieldsMap.put(ConstantsUtils.JsonFormUtils.ANC_PROFILE_ENCOUNTER_TYPE, 0); + // requiredFieldsMap.put(ConstantsUtils.JsonFormUtils.ANC_PROFILE_ENCOUNTER_TYPE, 0); requiredFieldsMap.put(ConstantsUtils.JsonFormUtils.ANC_TEST_TASKS_ENCOUNTER_TYPE, 0); } @@ -606,13 +606,21 @@ private void preProcessDefaultValues(JSONObject object) { private void updateDefaultValues(JSONArray stepArray, int i, JSONObject fieldObject) throws JSONException { if (defaultValueFields.contains(fieldObject.getString(JsonFormConstants.KEY))) { + String secondaryValue = null; if (!fieldObject.has(JsonFormConstants.VALUE) || TextUtils.isEmpty(fieldObject.getString(JsonFormConstants.VALUE))) { String defaultKey = fieldObject.getString(JsonFormConstants.KEY); String mapValue = getMapValue(defaultKey); + if(fieldObject.has(ANCJsonFormConstants.KeyConstants.SECONDARY_VALUE_FIELD)) + secondaryValue = getMapValue(fieldObject.getString(ANCJsonFormConstants.KeyConstants.SECONDARY_VALUE_FIELD)); + + if (mapValue != null) { + if(mapValue.startsWith("{")) + fieldObject.put(JsonFormConstants.VALUE, new JSONObject(mapValue)); + else fieldObject.put(JsonFormConstants.VALUE, mapValue); fieldObject.put(JsonFormConstants.EDITABLE, editableFields.contains(defaultKey)); fieldObject.put(JsonFormConstants.READ_ONLY, editableFields.contains(defaultKey)); @@ -623,8 +631,21 @@ private void updateDefaultValues(JSONArray stepArray, int i, JSONObject fieldObj if (fieldObject.has(JsonFormConstants.OPTIONS_FIELD_NAME)) { boolean addDefaults = true; + for (int m = 0; m < fieldObject.getJSONArray(JsonFormConstants.OPTIONS_FIELD_NAME).length(); m++) { String optionValue; + JSONObject optionsObject = fieldObject.getJSONArray(JsonFormConstants.OPTIONS_FIELD_NAME).getJSONObject(m); + if(optionsObject.has(JsonFormConstants.CONTENT_WIDGET) && secondaryValue != null) + { + JSONObject secondaryValueObject = new JSONObject(); + JSONArray secondaryValueArray = new JSONArray(); + secondaryValueArray.put(secondaryValue); + secondaryValueObject.put(JsonFormConstants.KEY, optionsObject.getString(JsonFormConstants.KEY)); + secondaryValueObject.put(JsonFormConstants.VALUES, secondaryValueArray); + secondaryValueObject.put(JsonFormConstants.TYPE, optionsObject.getString(JsonFormConstants.CONTENT_WIDGET)); + optionsObject.put(JsonFormConstants.SECONDARY_VALUE,new JSONArray().put(secondaryValueObject)); + } + if (fieldObject.getJSONArray(JsonFormConstants.OPTIONS_FIELD_NAME).getJSONObject(m) .has(JsonFormConstants.VALUE)) { optionValue = fieldObject.getJSONArray(JsonFormConstants.OPTIONS_FIELD_NAME).getJSONObject(m) diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/constants/ANCJsonFormConstants.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/constants/ANCJsonFormConstants.java new file mode 100644 index 000000000..32cdcbade --- /dev/null +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/constants/ANCJsonFormConstants.java @@ -0,0 +1,14 @@ +package org.smartregister.anc.library.constants; + +import com.vijay.jsonwizard.constants.JsonFormConstants; + +public class ANCJsonFormConstants extends JsonFormConstants { + + public static class KeyConstants { + public static final String OPTIBP_BUTTON = "record_bp_using_optibp_button"; + public static final String OPTIBP_BUTTON_SECOND = "record_bp_using_optibp_2nd_reading_button"; + public static final String SECONDARY_VALUE_FIELD = "secondary_value_field"; + public static final String SPECIFY_WIDGET = "specify_widget"; + } + +} diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/interactor/ContactInteractor.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/interactor/ContactInteractor.java index cce1ca6aa..7c64c6313 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/interactor/ContactInteractor.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/interactor/ContactInteractor.java @@ -46,6 +46,7 @@ */ public class ContactInteractor extends BaseContactInteractor implements ContactContract.Interactor { private Utils utils = new Utils(); + private String edd = null; public ContactInteractor() { this(new AppExecutors()); @@ -130,6 +131,7 @@ public HashMap finalizeContactForm(final Map det addTheContactDate(baseEntityId, details); updateWomanDetails(details, womanDetail); + edd = details.get(DBConstantsUtils.KeyUtils.EDD); if (referral != null && !TextUtils.isEmpty(details.get(DBConstantsUtils.KeyUtils.EDD))) { addReferralGa(baseEntityId, details); } @@ -235,12 +237,19 @@ private PreviousContact preLoadPreviousContact(String baseEntityId, Map previousContactList = getPreviousContactRepository().getPreviousContacts(baseEntityId, null); JSONObject stateObject = null; + String lastContactNo = null; if (previousContactList != null) { stateObject = new JSONObject(); for (PreviousContact previousContact : previousContactList) { + if(lastContactNo == null) + lastContactNo = previousContact.getContactNo(); if(previousContact.getKey().equals(CONTACT_DATE) && stateObject.has(CONTACT_DATE)) continue; + + if(!lastContactNo.equals(previousContact.getContactNo()) && !stateObject.has(GEST_AGE_OPENMRS) && !TextUtils.isEmpty(edd)) + stateObject.put(GEST_AGE_OPENMRS,String.valueOf(Utils.getGestationAgeFromEDDate(edd))); + if(stateObject.has(previousContact.getKey())) continue; stateObject.put(previousContact.getKey(), previousContact.getValue()); diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java index e39f53595..164d31fdd 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java @@ -128,9 +128,14 @@ private static void processRadioButtonsSpecialWidget(JSONObject widget, List Date: Thu, 25 Aug 2022 17:11:45 +0500 Subject: [PATCH 03/17] added correction according to the PR review feedback --- .../library/activity/MainContactActivity.java | 8 ++----- .../anc/library/util/ANCFormUtils.java | 4 ++-- .../anc/library/util/ANCJsonFormUtils.java | 21 +++++++++++++++++++ .../anc/library/widget/ANCSpinnerFactory.java | 2 +- .../library/util/ANCJsonFormUtilsTest.java | 21 +++++++++++++++++++ .../anc/application/AncApplication.java | 4 ++-- 6 files changed, 49 insertions(+), 11 deletions(-) diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/activity/MainContactActivity.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/activity/MainContactActivity.java index 6412b13f3..3ff078e0a 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/activity/MainContactActivity.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/activity/MainContactActivity.java @@ -16,6 +16,7 @@ import org.json.JSONObject; import org.smartregister.anc.library.AncLibrary; import org.smartregister.anc.library.R; +import org.smartregister.anc.library.constants.ANCJsonFormConstants; import org.smartregister.anc.library.contract.ContactContract; import org.smartregister.anc.library.domain.Contact; import org.smartregister.anc.library.model.PartialContact; @@ -637,12 +638,7 @@ private void updateDefaultValues(JSONArray stepArray, int i, JSONObject fieldObj JSONObject optionsObject = fieldObject.getJSONArray(JsonFormConstants.OPTIONS_FIELD_NAME).getJSONObject(m); if(optionsObject.has(JsonFormConstants.CONTENT_WIDGET) && secondaryValue != null) { - JSONObject secondaryValueObject = new JSONObject(); - JSONArray secondaryValueArray = new JSONArray(); - secondaryValueArray.put(secondaryValue); - secondaryValueObject.put(JsonFormConstants.KEY, optionsObject.getString(JsonFormConstants.KEY)); - secondaryValueObject.put(JsonFormConstants.VALUES, secondaryValueArray); - secondaryValueObject.put(JsonFormConstants.TYPE, optionsObject.getString(JsonFormConstants.CONTENT_WIDGET)); + JSONObject secondaryValueObject = ANCJsonFormUtils.populateSecondaryValues(secondaryValue,optionsObject); optionsObject.put(JsonFormConstants.SECONDARY_VALUE,new JSONArray().put(secondaryValueObject)); } diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java index 164d31fdd..9a30efac3 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java @@ -131,10 +131,10 @@ private static void processRadioButtonsSpecialWidget(JSONObject widget, List Date: Thu, 25 Aug 2022 17:40:13 +0500 Subject: [PATCH 04/17] ignore annotation removed from the loginModelTest --- .../org/smartregister/anc/library/model/LoginModelTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opensrp-anc/src/test/java/org/smartregister/anc/library/model/LoginModelTest.java b/opensrp-anc/src/test/java/org/smartregister/anc/library/model/LoginModelTest.java index 556d19766..800f9904e 100644 --- a/opensrp-anc/src/test/java/org/smartregister/anc/library/model/LoginModelTest.java +++ b/opensrp-anc/src/test/java/org/smartregister/anc/library/model/LoginModelTest.java @@ -37,13 +37,13 @@ public void setUp() { // It was transferred from the app module to the lib module // The fix might to add an actual OpenSRP application but again UserService testing should be in the // opensrp-client-core library which provides this data - @Ignore + @Test public void testIsUserLoggedOutShouldReturnTrue() { Assert.assertTrue(model.isUserLoggedOut()); } - @Ignore + @Test public void testGetOpenSRPContextShouldReturnValidValue() { Assert.assertNotNull(model.getOpenSRPContext()); From 9d25aff29f8ec760cb8d12eb54c799df21e5171d Mon Sep 17 00:00:00 2001 From: vend Date: Fri, 26 Aug 2022 12:25:32 +0500 Subject: [PATCH 05/17] upgraded to latest native form version --- opensrp-anc/build.gradle | 2 +- reference-app/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/opensrp-anc/build.gradle b/opensrp-anc/build.gradle index b7510ccfb..dfd5b771e 100644 --- a/opensrp-anc/build.gradle +++ b/opensrp-anc/build.gradle @@ -178,7 +178,7 @@ tasks.withType(Test) { dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' - implementation('org.smartregister:opensrp-client-native-form:3.0.0-PREVIEW-SNAPSHOT@aar') { + implementation('org.smartregister:opensrp-client-native-form:3.0.1-PREVIEW-SNAPSHOT@aar') { transitive = true exclude group: 'com.android.support', module: 'recyclerview-v7' exclude group: 'com.android.support', module: 'appcompat-v7' diff --git a/reference-app/build.gradle b/reference-app/build.gradle index 5f3066446..abd5d285b 100644 --- a/reference-app/build.gradle +++ b/reference-app/build.gradle @@ -230,7 +230,7 @@ dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5' def powerMockVersion = '2.0.7' implementation project(":opensrp-anc") - implementation('org.smartregister:opensrp-client-native-form:2.1.16-PREVIEW-SNAPSHOT@aar') { + implementation('org.smartregister:opensrp-client-native-form:3.0.1-PREVIEW-SNAPSHOT@aar') { transitive = true exclude group: 'com.android.support', module: 'recyclerview-v7' exclude group: 'com.android.support', module: 'appcompat-v7' From e2e1eef2cf172021454605efcf3fb6c60fc1b865 Mon Sep 17 00:00:00 2001 From: vend Date: Thu, 22 Sep 2022 18:05:01 +0500 Subject: [PATCH 06/17] changed StringUtils.isEmpty(widgetValue) to widgetValue != null because isEmpty method does not check for null string --- .../java/org/smartregister/anc/library/util/ANCFormUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java index 9a30efac3..b67494e52 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java @@ -131,7 +131,7 @@ private static void processRadioButtonsSpecialWidget(JSONObject widget, List Date: Thu, 22 Sep 2022 19:06:33 +0500 Subject: [PATCH 07/17] added StringUtils.isNotBlank --- .../java/org/smartregister/anc/library/util/ANCFormUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java index b67494e52..8a176611d 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCFormUtils.java @@ -131,7 +131,7 @@ private static void processRadioButtonsSpecialWidget(JSONObject widget, List Date: Fri, 23 Sep 2022 18:34:30 +0500 Subject: [PATCH 08/17] removed the unused jsonexception import --- .../org/smartregister/anc/library/util/ANCJsonFormUtils.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCJsonFormUtils.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCJsonFormUtils.java index 3153f6468..6844de87f 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCJsonFormUtils.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/util/ANCJsonFormUtils.java @@ -71,9 +71,6 @@ import java.util.Set; import java.util.UUID; -import javax.json.JsonException; -import javax.json.JsonObject; - import timber.log.Timber; /** From 39674fa9922c746d7daee8c89fa9505e61aea150 Mon Sep 17 00:00:00 2001 From: vend Date: Wed, 5 Oct 2022 20:11:51 +0500 Subject: [PATCH 09/17] issue 906 fixed --- opensrp-anc/build.gradle | 3 ++- .../anc/library/repository/PatientRepository.java | 5 +++++ reference-app/build.gradle | 5 +++-- .../org/smartregister/anc/activity/LoginActivity.java | 2 +- .../org/smartregister/anc/application/AncApplication.java | 8 ++++---- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/opensrp-anc/build.gradle b/opensrp-anc/build.gradle index dfd5b771e..8a0fb6688 100644 --- a/opensrp-anc/build.gradle +++ b/opensrp-anc/build.gradle @@ -189,7 +189,7 @@ dependencies { exclude group: 'org.yaml', module: 'snakeyaml' exclude group: 'io.ona.rdt-capture', module: 'lib' } - implementation('org.smartregister:opensrp-client-core:4.3.26-SNAPSHOT@aar') { + implementation('org.smartregister:opensrp-client-core:6.0.0-BETA3-SNAPSHOT@aar') { transitive = true exclude group: 'com.github.bmelnychuk', module: 'atv' exclude group: 'com.google.guava', module: 'guava' @@ -246,6 +246,7 @@ dependencies { } implementation 'androidx.recyclerview:recyclerview:1.2.1' + implementation 'com.android.volley:volley:1.2.1' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.0' implementation group: 'org.yaml', name: 'snakeyaml', version: '1.27' diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/repository/PatientRepository.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/repository/PatientRepository.java index 8088eb22b..198a14e99 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/repository/PatientRepository.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/repository/PatientRepository.java @@ -155,11 +155,16 @@ public static void updateCohabitants(String form, String baseEntityId) { JSONObject jsonObject = new JSONObject(form); JSONArray fields = ANCJsonFormUtils.getSingleStepFormfields(jsonObject); JSONObject cohabitants = ANCJsonFormUtils.getFieldJSONObject(fields, DBConstantsUtils.KeyUtils.COHABITANTS); + JSONObject reminder = ANCJsonFormUtils.getFieldJSONObject(fields, DBConstantsUtils.KeyUtils.REMINDERS); String value = cohabitants.optString(ConstantsUtils.KeyUtils.VALUE, "[]"); + String remindersValue = reminder.optString(ConstantsUtils.KeyUtils.VALUE,"{}"); + + ContentValues contentValues = new ContentValues(); contentValues.put(DBConstantsUtils.KeyUtils.COHABITANTS, value); + contentValues.put(DBConstantsUtils.KeyUtils.REMINDERS,remindersValue); updatePatient(baseEntityId, contentValues, getRegisterQueryProvider().getDetailsTable()); diff --git a/reference-app/build.gradle b/reference-app/build.gradle index abd5d285b..05ad531e1 100644 --- a/reference-app/build.gradle +++ b/reference-app/build.gradle @@ -25,7 +25,7 @@ jacoco { // This variables are used by the version code & name generators ext.versionMajor = 1 ext.versionMinor = 6 -ext.versionPatch = 16 +ext.versionPatch = 17 ext.versionClassifier = null ext.isSnapshot = false ext.minimumSdkVersion = androidMinSdkVersion @@ -242,7 +242,7 @@ dependencies { exclude group: 'io.ona.rdt-capture', module: 'lib' } - implementation('org.smartregister:opensrp-client-core:4.3.26-SNAPSHOT@aar') { + implementation('org.smartregister:opensrp-client-core:6.0.0-BETA3-SNAPSHOT@aar') { transitive = true exclude group: 'com.github.bmelnychuk', module: 'atv' exclude group: 'com.google.guava', module: 'guava' @@ -305,6 +305,7 @@ dependencies { implementation 'com.flurry.android:analytics:11.6.0@aar' implementation 'com.flurry.android:analytics:11.6.0@aar' implementation 'androidx.multidex:multidex:2.0.1' + implementation 'com.android.volley:volley:1.2.1' // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:28.3.1') diff --git a/reference-app/src/main/java/org/smartregister/anc/activity/LoginActivity.java b/reference-app/src/main/java/org/smartregister/anc/activity/LoginActivity.java index c85cf4d14..ea168f2b8 100644 --- a/reference-app/src/main/java/org/smartregister/anc/activity/LoginActivity.java +++ b/reference-app/src/main/java/org/smartregister/anc/activity/LoginActivity.java @@ -63,7 +63,7 @@ protected void initializePresenter() { @Override public void goToHome(boolean remote) { if (remote) { - Utils.startAsyncTask(new SaveTeamLocationsTask(), null); + new SaveTeamLocationsTask().execute(); } if (mLoginPresenter.isServerSettingsSet()) { diff --git a/reference-app/src/main/java/org/smartregister/anc/application/AncApplication.java b/reference-app/src/main/java/org/smartregister/anc/application/AncApplication.java index b63eb5ecf..e2f69974b 100644 --- a/reference-app/src/main/java/org/smartregister/anc/application/AncApplication.java +++ b/reference-app/src/main/java/org/smartregister/anc/application/AncApplication.java @@ -8,8 +8,8 @@ import androidx.annotation.NonNull; -import com.crashlytics.android.Crashlytics; -import com.crashlytics.android.core.CrashlyticsCore; +//import com.crashlytics.android.Crashlytics; +//import com.crashlytics.android.core.CrashlyticsCore; import com.evernote.android.job.JobManager; import com.flurry.android.FlurryAgent; import com.vijay.jsonwizard.NativeFormLibrary; @@ -38,7 +38,7 @@ import org.smartregister.view.activity.DrishtiApplication; import org.smartregister.view.receiver.TimeChangedBroadcastReceiver; -import io.fabric.sdk.android.Fabric; +//import io.fabric.sdk.android.Fabric; import timber.log.Timber; /** @@ -110,7 +110,7 @@ public void onCreate() { TimeChangedBroadcastReceiver.init(this); TimeChangedBroadcastReceiver.getInstance().addOnTimeChangedListener(this); LocationHelper.init(Utils.ALLOWED_LEVELS, Utils.DEFAULT_LOCATION_LEVEL); - Fabric.with(this, new Crashlytics.Builder().core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()).build()); + //Fabric.with(this, new Crashlytics.Builder().core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()).build()); //init Job Manager JobManager.create(this).addJobCreator(new AncJobCreator()); From 068957f97f681af9c856e15fbc7073ad48c4ff8b Mon Sep 17 00:00:00 2001 From: vend Date: Thu, 6 Oct 2022 13:55:11 +0500 Subject: [PATCH 10/17] volley dependency added --- opensrp-anc/build.gradle | 2 +- reference-app/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/opensrp-anc/build.gradle b/opensrp-anc/build.gradle index 8a0fb6688..f2feaf0f1 100644 --- a/opensrp-anc/build.gradle +++ b/opensrp-anc/build.gradle @@ -246,7 +246,7 @@ dependencies { } implementation 'androidx.recyclerview:recyclerview:1.2.1' - implementation 'com.android.volley:volley:1.2.1' + implementation 'com.mcxiaoke.volley:library:1.0.19' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.0' implementation group: 'org.yaml', name: 'snakeyaml', version: '1.27' diff --git a/reference-app/build.gradle b/reference-app/build.gradle index 05ad531e1..06f294cd2 100644 --- a/reference-app/build.gradle +++ b/reference-app/build.gradle @@ -305,7 +305,7 @@ dependencies { implementation 'com.flurry.android:analytics:11.6.0@aar' implementation 'com.flurry.android:analytics:11.6.0@aar' implementation 'androidx.multidex:multidex:2.0.1' - implementation 'com.android.volley:volley:1.2.1' + implementation 'com.mcxiaoke.volley:library:1.0.19' // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:28.3.1') From 83813cbb9cfdd70503b5b506f9fb07d772fee32c Mon Sep 17 00:00:00 2001 From: vend Date: Tue, 11 Oct 2022 12:22:28 +0500 Subject: [PATCH 11/17] upgraded native forms and client core dependency --- opensrp-anc/build.gradle | 2 +- reference-app/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/opensrp-anc/build.gradle b/opensrp-anc/build.gradle index f2feaf0f1..19df40efd 100644 --- a/opensrp-anc/build.gradle +++ b/opensrp-anc/build.gradle @@ -178,7 +178,7 @@ tasks.withType(Test) { dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' - implementation('org.smartregister:opensrp-client-native-form:3.0.1-PREVIEW-SNAPSHOT@aar') { + implementation('org.smartregister:opensrp-client-native-form:3.2.1-PREVIEW-SNAPSHOT@aar') { transitive = true exclude group: 'com.android.support', module: 'recyclerview-v7' exclude group: 'com.android.support', module: 'appcompat-v7' diff --git a/reference-app/build.gradle b/reference-app/build.gradle index 06f294cd2..3df5740bc 100644 --- a/reference-app/build.gradle +++ b/reference-app/build.gradle @@ -25,7 +25,7 @@ jacoco { // This variables are used by the version code & name generators ext.versionMajor = 1 ext.versionMinor = 6 -ext.versionPatch = 17 +ext.versionPatch = 18 ext.versionClassifier = null ext.isSnapshot = false ext.minimumSdkVersion = androidMinSdkVersion @@ -230,7 +230,7 @@ dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5' def powerMockVersion = '2.0.7' implementation project(":opensrp-anc") - implementation('org.smartregister:opensrp-client-native-form:3.0.1-PREVIEW-SNAPSHOT@aar') { + implementation('org.smartregister:opensrp-client-native-form:3.2.1-PREVIEW-SNAPSHOT@aar') { transitive = true exclude group: 'com.android.support', module: 'recyclerview-v7' exclude group: 'com.android.support', module: 'appcompat-v7' From 59e25c6e2c3f59d423e8bdb675e032be43716394 Mon Sep 17 00:00:00 2001 From: vend Date: Fri, 21 Oct 2022 12:58:48 +0500 Subject: [PATCH 12/17] updated the published snapshots for native and core forms --- opensrp-anc/build.gradle | 2 +- reference-app/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/opensrp-anc/build.gradle b/opensrp-anc/build.gradle index 19df40efd..6fc711803 100644 --- a/opensrp-anc/build.gradle +++ b/opensrp-anc/build.gradle @@ -178,7 +178,7 @@ tasks.withType(Test) { dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' - implementation('org.smartregister:opensrp-client-native-form:3.2.1-PREVIEW-SNAPSHOT@aar') { + implementation('org.smartregister:opensrp-client-native-form:3.1.1-PREVIEW-SNAPSHOT@aar') { transitive = true exclude group: 'com.android.support', module: 'recyclerview-v7' exclude group: 'com.android.support', module: 'appcompat-v7' diff --git a/reference-app/build.gradle b/reference-app/build.gradle index 3df5740bc..6f1eceba7 100644 --- a/reference-app/build.gradle +++ b/reference-app/build.gradle @@ -230,7 +230,7 @@ dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5' def powerMockVersion = '2.0.7' implementation project(":opensrp-anc") - implementation('org.smartregister:opensrp-client-native-form:3.2.1-PREVIEW-SNAPSHOT@aar') { + implementation('org.smartregister:opensrp-client-native-form:3.1.1-PREVIEW-SNAPSHOT@aar') { transitive = true exclude group: 'com.android.support', module: 'recyclerview-v7' exclude group: 'com.android.support', module: 'appcompat-v7' From ea62452f591f06bd46b5131d60710c89a7b4ec5b Mon Sep 17 00:00:00 2001 From: vend Date: Tue, 25 Oct 2022 14:56:54 +0500 Subject: [PATCH 13/17] event bus exception thrown in unit tests fixed --- .../main/java/org/smartregister/anc/library/AncLibrary.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/AncLibrary.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/AncLibrary.java index 526626574..b198b8fa7 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/AncLibrary.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/AncLibrary.java @@ -73,7 +73,7 @@ public class AncLibrary { private final ActivityConfiguration activityConfiguration; private AncMetadata ancMetadata = new AncMetadata(); private AppExecutors appExecutors; - + private EventBus eventBus; private AncLibrary(@NonNull Context context, int dbVersion, @NonNull ActivityConfiguration activityConfiguration, @Nullable SubscriberInfoIndex subscriberInfoIndex, @Nullable RegisterQueryProvider registerQueryProvider) { this(context, dbVersion, activityConfiguration, subscriberInfoIndex); @@ -100,6 +100,7 @@ private AncLibrary(@NonNull Context context, int dbVersion, @NonNull ActivityCon //Initialize JsonSpec Helper this.jsonSpecHelper = new JsonSpecHelper(getApplicationContext()); + if(eventBus == null) setUpEventHandling(); //initialize configs processor @@ -166,6 +167,7 @@ public android.content.Context getApplicationContext() { private void setUpEventHandling() { try { + EventBusBuilder eventBusBuilder = EventBus.builder() .addIndex(new ANCEventBusIndex()); @@ -173,7 +175,7 @@ private void setUpEventHandling() { eventBusBuilder.addIndex(subscriberInfoIndex); } - eventBusBuilder.installDefaultEventBus(); + eventBus = eventBusBuilder.installDefaultEventBus(); } catch (Exception e) { Timber.e(e, " --> setUpEventHandling"); } From 3824a2b490dafc99d5b9604adc5296f936436075 Mon Sep 17 00:00:00 2001 From: vend Date: Tue, 25 Oct 2022 15:00:25 +0500 Subject: [PATCH 14/17] event bus exception thrown in unit tests fixed --- .../src/main/java/org/smartregister/anc/library/AncLibrary.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opensrp-anc/src/main/java/org/smartregister/anc/library/AncLibrary.java b/opensrp-anc/src/main/java/org/smartregister/anc/library/AncLibrary.java index b198b8fa7..a88a5439f 100644 --- a/opensrp-anc/src/main/java/org/smartregister/anc/library/AncLibrary.java +++ b/opensrp-anc/src/main/java/org/smartregister/anc/library/AncLibrary.java @@ -73,7 +73,7 @@ public class AncLibrary { private final ActivityConfiguration activityConfiguration; private AncMetadata ancMetadata = new AncMetadata(); private AppExecutors appExecutors; - private EventBus eventBus; + private static EventBus eventBus; private AncLibrary(@NonNull Context context, int dbVersion, @NonNull ActivityConfiguration activityConfiguration, @Nullable SubscriberInfoIndex subscriberInfoIndex, @Nullable RegisterQueryProvider registerQueryProvider) { this(context, dbVersion, activityConfiguration, subscriberInfoIndex); From f9bd803f4ccbcce8da31134279ffabd16f4472e1 Mon Sep 17 00:00:00 2001 From: vend Date: Wed, 26 Oct 2022 12:24:56 +0500 Subject: [PATCH 15/17] fixed the remaining test --- .../CharacteristicsInteractorTest.java | 17 ++++++++++++++ .../library/task/FinalizeContactTaskTest.java | 23 ++++++++++++++++--- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/opensrp-anc/src/test/java/org/smartregister/anc/library/interactor/CharacteristicsInteractorTest.java b/opensrp-anc/src/test/java/org/smartregister/anc/library/interactor/CharacteristicsInteractorTest.java index e33cd7f2d..588914cb0 100644 --- a/opensrp-anc/src/test/java/org/smartregister/anc/library/interactor/CharacteristicsInteractorTest.java +++ b/opensrp-anc/src/test/java/org/smartregister/anc/library/interactor/CharacteristicsInteractorTest.java @@ -1,25 +1,36 @@ package org.smartregister.anc.library.interactor; +import android.content.Context; + import com.google.common.collect.ImmutableMap; import org.json.JSONException; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.ArgumentMatchers; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; import org.robolectric.util.ReflectionHelpers; import org.smartregister.anc.library.AncLibrary; import org.smartregister.anc.library.activity.BaseUnitTest; +import org.smartregister.anc.library.util.ConstantsUtils; import org.smartregister.domain.Setting; import org.smartregister.repository.AllSettings; +import org.smartregister.util.AppProperties; +import org.smartregister.util.Utils; import java.util.Map; /** * Created by ndegwamartin on 30/08/2018. */ +@RunWith(PowerMockRunner.class) +@PrepareForTest({Utils.class}) public class CharacteristicsInteractorTest extends BaseUnitTest { @@ -29,10 +40,16 @@ public class CharacteristicsInteractorTest extends BaseUnitTest { @Mock private AncLibrary ancLibrary; + @Mock + private AppProperties appProperties; + @Before public void setUp() { MockitoAnnotations.initMocks(this); ReflectionHelpers.setStaticField(AncLibrary.class, "instance", ancLibrary); + PowerMockito.mockStatic(Utils.class); + PowerMockito.when(Utils.getProperties(ArgumentMatchers.any())).thenReturn(appProperties); + Mockito.when(appProperties.getProperty(ArgumentMatchers.anyString(),ArgumentMatchers.anyString())).thenReturn("true"); } @Test diff --git a/opensrp-anc/src/test/java/org/smartregister/anc/library/task/FinalizeContactTaskTest.java b/opensrp-anc/src/test/java/org/smartregister/anc/library/task/FinalizeContactTaskTest.java index 66a64de6f..600a7791c 100644 --- a/opensrp-anc/src/test/java/org/smartregister/anc/library/task/FinalizeContactTaskTest.java +++ b/opensrp-anc/src/test/java/org/smartregister/anc/library/task/FinalizeContactTaskTest.java @@ -10,14 +10,21 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; import org.robolectric.RobolectricTestRunner; +import org.smartregister.anc.library.AncLibrary; import org.smartregister.anc.library.activity.BaseUnitTest; import org.smartregister.anc.library.contract.ProfileContract; +import org.smartregister.anc.library.repository.PatientRepository; +import org.smartregister.anc.library.repository.RegisterQueryProvider; +import org.smartregister.anc.library.util.ConstantsUtils; import java.lang.ref.WeakReference; import java.util.HashMap; -@RunWith(RobolectricTestRunner.class) +@RunWith(PowerMockRunner.class) +@PrepareForTest({PatientRepository.class,AncLibrary.class}) public class FinalizeContactTaskTest extends BaseUnitTest { @Mock @@ -26,13 +33,22 @@ public class FinalizeContactTaskTest extends BaseUnitTest { private Context context; public org.smartregister.Context context1; private ProfileContract.Presenter mProfilePresenter; - private Intent intent; + private Intent intent = new Intent(); + @Mock + AncLibrary ancLibrary; + @Mock + RegisterQueryProvider registerQueryProvider; @Before public void setUp() { context = Mockito.mock(Context.class); WeakReference weakReferenceContext = new WeakReference<>(context); + PowerMockito.mockStatic(AncLibrary.class); + PowerMockito.when(AncLibrary.getInstance()).thenReturn(ancLibrary); + intent.putExtra(ConstantsUtils.IntentKeyUtils.BASE_ENTITY_ID,"ID"); + intent.putExtra(ConstantsUtils.IntentKeyUtils.CONTACT_NO,"1"); finalizeContactTask = new FinalizeContactTask(weakReferenceContext, mProfilePresenter, intent); + Mockito.when(ancLibrary.getRegisterQueryProvider()).thenReturn(registerQueryProvider); } @@ -50,8 +66,9 @@ public void setUp() { @Test public void testDoBackground() throws Exception { WeakReference weakReferenceContext = new WeakReference<>(context); + PowerMockito.mockStatic(PatientRepository.class); PowerMockito.whenNew(FinalizeContactTask.class).withArguments(weakReferenceContext, mProfilePresenter, new Intent()).thenReturn(finalizeContactTask); - FinalizeContactTask filter = new FinalizeContactTask(weakReferenceContext, mProfilePresenter, new Intent()) { + FinalizeContactTask filter = new FinalizeContactTask(weakReferenceContext, mProfilePresenter, intent) { public FinalizeContactTask callProtectedMethod() { doInBackground(); return this; From 5758630443086aa4e8afcdcc1d09c358d49bf533 Mon Sep 17 00:00:00 2001 From: vend Date: Wed, 26 Oct 2022 12:37:48 +0500 Subject: [PATCH 16/17] fixed codacy and tests --- .../anc/library/interactor/CharacteristicsInteractorTest.java | 1 - .../org/smartregister/anc/library/model/LoginModelTest.java | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/opensrp-anc/src/test/java/org/smartregister/anc/library/interactor/CharacteristicsInteractorTest.java b/opensrp-anc/src/test/java/org/smartregister/anc/library/interactor/CharacteristicsInteractorTest.java index 588914cb0..4e3662ecf 100644 --- a/opensrp-anc/src/test/java/org/smartregister/anc/library/interactor/CharacteristicsInteractorTest.java +++ b/opensrp-anc/src/test/java/org/smartregister/anc/library/interactor/CharacteristicsInteractorTest.java @@ -1,6 +1,5 @@ package org.smartregister.anc.library.interactor; -import android.content.Context; import com.google.common.collect.ImmutableMap; diff --git a/opensrp-anc/src/test/java/org/smartregister/anc/library/model/LoginModelTest.java b/opensrp-anc/src/test/java/org/smartregister/anc/library/model/LoginModelTest.java index 800f9904e..d81ac4928 100644 --- a/opensrp-anc/src/test/java/org/smartregister/anc/library/model/LoginModelTest.java +++ b/opensrp-anc/src/test/java/org/smartregister/anc/library/model/LoginModelTest.java @@ -37,7 +37,9 @@ public void setUp() { // It was transferred from the app module to the lib module // The fix might to add an actual OpenSRP application but again UserService testing should be in the // opensrp-client-core library which provides this data + // ignoring this test as it is already present in Login presenter + @Ignore @Test public void testIsUserLoggedOutShouldReturnTrue() { Assert.assertTrue(model.isUserLoggedOut()); From 8e86ff30afd4b2a496b8af250d39f77c3a6f8d1f Mon Sep 17 00:00:00 2001 From: vend Date: Wed, 26 Oct 2022 12:53:06 +0500 Subject: [PATCH 17/17] removed unused import --- .../anc/library/interactor/CharacteristicsInteractorTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/opensrp-anc/src/test/java/org/smartregister/anc/library/interactor/CharacteristicsInteractorTest.java b/opensrp-anc/src/test/java/org/smartregister/anc/library/interactor/CharacteristicsInteractorTest.java index 4e3662ecf..f17d08ba7 100644 --- a/opensrp-anc/src/test/java/org/smartregister/anc/library/interactor/CharacteristicsInteractorTest.java +++ b/opensrp-anc/src/test/java/org/smartregister/anc/library/interactor/CharacteristicsInteractorTest.java @@ -17,7 +17,6 @@ import org.robolectric.util.ReflectionHelpers; import org.smartregister.anc.library.AncLibrary; import org.smartregister.anc.library.activity.BaseUnitTest; -import org.smartregister.anc.library.util.ConstantsUtils; import org.smartregister.domain.Setting; import org.smartregister.repository.AllSettings; import org.smartregister.util.AppProperties;