diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 04c159b2..f3b0e221 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,10 +16,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 1.8 + - name: Set up JDK 11 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 11 - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Run unit tests with Gradle diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..006331e8 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,47 @@ +# This workflow will build a Java project with Gradle +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle + +name: Snapshot Release + +on: + push: + tags: + - v[0-9]+.[0-9]+.[0-9]+-SNAPSHOT + - v[0-9]+.[0-9]+.[0-9]+-[0-9a-zA-Z]+-SNAPSHOT + - v[0-9]+.[0-9]+.[0-9]+-[0-9a-zA-Z]+-[0-9a-zA-Z]+-SNAPSHOT +env: + NEXUS_USERNAME: ${{ secrets.NEXUS_USERNAME }} + NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }} + +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: Cancel previous workflow runs + uses: styfle/cancel-workflow-action@0.9.1 + with: + access_token: ${{ github.token }} + + - name: Checkout 🛎️ + uses: actions/checkout@v2 + with: + fetch-depth: 2 + + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: 11 + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Run unit tests with Gradle + run: ./gradlew :opensrp-immunization:clean :opensrp-immunization:testDebugUnitTest --stacktrace + + - name: Generate & upload library snapshot artifact AAR (Android Archive) file + run: ./gradlew :opensrp-immunization:uploadArchives -PmavenLocal=false --stacktrace -PsonatypeUsername=${{ secrets.NEXUS_USERNAME }} -PsonatypePassword=${{ secrets.NEXUS_PASSWORD }} + + - name: Github Release + uses: softprops/action-gh-release@v1 + with: + prerelease: ${{ contains(github.ref, '-alpha') || contains(github.ref, '-beta') }} \ No newline at end of file diff --git a/build.gradle b/build.gradle index 192211e7..55a483b3 100644 --- a/build.gradle +++ b/build.gradle @@ -1,22 +1,20 @@ buildscript { repositories { google() - jcenter() mavenCentral() maven { url "https://maven.google.com" } maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } maven { url "https://repo.maven.apache.org/maven2" } - maven{ url "https://plugins.gradle.org/m2/" } + maven { url "https://plugins.gradle.org/m2/" } } dependencies { - classpath "io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.11.0" - classpath 'gradle.plugin.org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.10.2' + classpath "io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.30.0" + classpath 'gradle.plugin.org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.12.0' classpath 'org.smartregister:gradle-jarjar-plugin:1.0.0-SNAPSHOT' - classpath 'gradle.plugin.org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.10.2' - classpath 'com.android.tools.build:gradle:4.1.3' + classpath 'com.android.tools.build:gradle:4.2.2' } } @@ -30,7 +28,7 @@ configure(allprojects) { project -> jcenter() mavenCentral() maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } - maven{ url "https://plugins.gradle.org/m2/" } + maven { url "https://plugins.gradle.org/m2/" } mavenLocal() } } @@ -42,11 +40,11 @@ subprojects { group = 'org.smartregister' - ext.androidToolsBuildGradle = '4.1.3' - ext.androidBuildToolsVersion = '29.0.2' - ext.androidMinSdkVersion = 18 - ext.androidCompileSdkVersion = 29 - ext.androidTargetSdkVersion = 29 + ext.androidToolsBuildGradle = '4.2.2' + ext.androidBuildToolsVersion = '30.0.2' + ext.androidMinSdkVersion = 18 + ext.androidCompileSdkVersion = 31 + ext.androidTargetSdkVersion = 31 ext.androidAnnotationsVersion = '3.0.1' ext.androidAnnotationsAPIVersion = '3.0.1' @@ -56,9 +54,8 @@ subprojects { jcenter() mavenCentral() maven { url 'https://jitpack.io' } - maven { url "http://acra.googlecode.com/svn/repository/releases" } + maven { url "https://acra.googlecode.com/svn/repository/releases" } maven { url "https://repo.maven.apache.org/maven2" } - maven { url "http://cloudant.github.io/cloudant-sync-eap/repository" } mavenLocal() } diff --git a/gradle.properties b/gradle.properties index cb1b6b0c..865d31e1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -VERSION_NAME=4.0.7-SNAPSHOT +VERSION_NAME=5.0.0-SNAPSHOT VERSION_CODE=3 GROUP=org.smartregister POM_SETTING_DESCRIPTION=OpenSRP Client Immunization @@ -13,5 +13,5 @@ POM_SETTING_DEVELOPER_ID=opensrp POM_SETTING_DEVELOPER_NAME=OpenSRP Onadev android.useAndroidX=true android.enableJetifier=true -android.jetifier.blacklist=shadows +android.jetifier.ignorelist=shadows,bcprov-jdk15on org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 80505b0a..7e9a9181 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -4,7 +4,7 @@ zipStorePath=wrapper/dists org.gradle.parallel=true zipStoreBase=GRADLE_USER_HOME org.gradle.jvmargs=-Xmx2048m -XX\:MaxPermSize\=512m -XX\:+HeapDumpOnOutOfMemoryError -Dfile.encoding\=UTF-8 -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip org.gradle.configureondemand=true distributionPath=wrapper/dists distributionBase=GRADLE_USER_HOME diff --git a/opensrp-immunization/build.gradle b/opensrp-immunization/build.gradle index 2139ecf7..50a7944e 100644 --- a/opensrp-immunization/build.gradle +++ b/opensrp-immunization/build.gradle @@ -3,11 +3,11 @@ description = 'OpenSRP immunization client library' buildscript { repositories { google() - jcenter() + mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:$androidToolsBuildGradle" - classpath 'org.apache.commons:commons-lang3:3.10' + classpath 'org.apache.commons:commons-lang3:3.12.0' } } @@ -16,7 +16,7 @@ apply plugin: 'jacoco' apply plugin: 'com.github.kt3k.coveralls' jacoco { - toolVersion = "0.8.6" + toolVersion = "0.8.8" } allprojects { @@ -110,9 +110,10 @@ android { dependencies { - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9' + testImplementation 'junit:junit:4.13.2' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.0' - implementation('org.smartregister:opensrp-client-core:4.3.26-SNAPSHOT@aar') { + implementation('org.smartregister:opensrp-client-core:6.0.0-SNAPSHOT@aar') { transitive = true exclude group: 'com.github.bmelnychuk', module: 'atv' exclude group: 'jakarta.annotation', module: 'jakarta.annotation-api' @@ -120,13 +121,13 @@ dependencies { exclude group: 'com.ibm.fhir', module: 'fhir-path' } - implementation('org.smartregister:opensrp-client-native-form:1.14.8.5-SNAPSHOT@aar') { + implementation('org.smartregister:opensrp-client-native-form:3.1.1-SNAPSHOT@aar') { transitive = true exclude group: 'com.android.support', module: 'recyclerview-v7' exclude group: 'com.google.code.gson', module: 'gson' } - testImplementation 'com.ibm.fhir:fhir-model:4.7.0' - testImplementation 'com.ibm.fhir:fhir-path:4.7.0' + testImplementation 'com.ibm.fhir:fhir-model:4.7.1' + testImplementation 'com.ibm.fhir:fhir-path:4.7.1' testImplementation 'junit:junit:4.13.2' @@ -139,22 +140,25 @@ dependencies { exclude group: 'com.google.auto.service', module: 'auto-service' exclude group: 'com.android.support' } - testImplementation "org.robolectric:shadows-multidex:$robolectricVersion" - testImplementation "org.robolectric:shadows-support-v4:3.3.2" + testImplementation ("org.robolectric:shadows-multidex:$robolectricVersion") { + exclude group: 'com.google.guava', module: 'guava' + } + testImplementation "org.robolectric:shadows-support-v4:3.4-rc2" - androidTestImplementation('androidx.test.espresso:espresso-core:3.2.0') { + androidTestImplementation('androidx.test.espresso:espresso-core:3.4.0') { exclude group: 'com.android.support', module: 'support-annotations' exclude group: 'junit', module: 'junit' } // PowerMock - def powerMockVersion = '2.0.7' + def powerMockVersion = '2.0.9' testImplementation "org.powermock:powermock-module-junit4:$powerMockVersion" testImplementation "org.powermock:powermock-module-junit4-rule:$powerMockVersion" testImplementation "org.powermock:powermock-api-mockito2:$powerMockVersion" testImplementation("org.powermock:powermock-classloading-xstream:$powerMockVersion") testImplementation 'org.apache.maven:maven-ant-tasks:2.1.3' - testImplementation group: 'org.skyscreamer', name: 'jsonassert', version: '1.2.3' + testImplementation group: 'org.skyscreamer', name: 'jsonassert', version: '1.5.1' + testImplementation "org.json:json:20220320" } tasks.withType(Test) { diff --git a/opensrp-immunization/src/main/java/org/smartregister/immunization/ImmunizationLibrary.java b/opensrp-immunization/src/main/java/org/smartregister/immunization/ImmunizationLibrary.java index 6b877fc1..ad2bf979 100644 --- a/opensrp-immunization/src/main/java/org/smartregister/immunization/ImmunizationLibrary.java +++ b/opensrp-immunization/src/main/java/org/smartregister/immunization/ImmunizationLibrary.java @@ -33,9 +33,14 @@ */ public class ImmunizationLibrary { + public static List COMBINED_VACCINES = new ArrayList<>(); + public static Map COMBINED_VACCINES_MAP = new HashMap<>(); private static ImmunizationLibrary instance; + private static boolean allowExpiredVaccineEntry; + private static Map vaccineCacheMap = new HashMap<>(); private final Repository repository; private final Context context; + private final Map conditionalVaccinesMap = new HashMap<>(); private EventClientRepository eventClientRepository; private VaccineRepository vaccineRepository; private RecurringServiceRecordRepository recurringServiceRecordRepository; @@ -45,13 +50,8 @@ public class ImmunizationLibrary { private CommonFtsObject commonFtsObject; private int applicationVersion; private int databaseVersion; + private String applicationVersionName; private Map jsonMap = new HashMap<>(); - private static boolean allowExpiredVaccineEntry; - private static Map vaccineCacheMap = new HashMap<>(); - - public static List COMBINED_VACCINES = new ArrayList<>(); - public static Map COMBINED_VACCINES_MAP = new HashMap<>(); - private final Map conditionalVaccinesMap = new HashMap<>(); private String currentConditionalVaccine; private boolean allowSyncImmediately = false; private List skippableVaccines = new ArrayList<>(); @@ -59,19 +59,20 @@ public class ImmunizationLibrary { private long vaccineSyncTime = -1; - private ImmunizationLibrary(Context context, Repository repository, CommonFtsObject commonFtsObject, int applicationVersion, int databaseVersion) { + private ImmunizationLibrary(Context context, Repository repository, CommonFtsObject commonFtsObject, int applicationVersion, String applicationVersionName, int databaseVersion) { this.repository = repository; this.context = context; this.commonFtsObject = commonFtsObject; this.applicationVersion = applicationVersion; + this.applicationVersionName = applicationVersionName; this.databaseVersion = databaseVersion; setCurrentConditionalVaccine(null); setSkippableVaccines(Arrays.asList(VaccineRepo.Vaccine.bcg2, VaccineRepo.Vaccine.measles1)); } - public static void init(Context context, Repository repository, CommonFtsObject commonFtsObject, int applicationVersion, int databaseVersion) { + public static void init(Context context, Repository repository, CommonFtsObject commonFtsObject, int applicationVersion, String applicationVersionName, int databaseVersion) { if (instance == null) { - instance = new ImmunizationLibrary(context, repository, commonFtsObject, applicationVersion, databaseVersion); + instance = new ImmunizationLibrary(context, repository, commonFtsObject, applicationVersion, applicationVersionName, databaseVersion); allowExpiredVaccineEntry = instance.getProperties().isTrue(IMConstants.APP_PROPERTIES.VACCINE_EXPIRED_ENTRY_ALLOW); @@ -85,6 +86,37 @@ public static void init(Context context, Repository repository, CommonFtsObject } } + /** + * This init method is deprecated, use {@link #init(Context context, Repository repository, CommonFtsObject commonFtsObject, int applicationVersion, String applicationVersionName, int databaseVersion. + */ + @Deprecated + public static void init(Context context, Repository repository, CommonFtsObject commonFtsObject, int applicationVersion, int databaseVersion) { + init(context, repository, commonFtsObject, applicationVersion, null, databaseVersion); + } + + public static T assetJsonToJava(Map jsonMap, android.content.Context context, String fileName, Class clazz, Type type) { + return AssetHandler.assetJsonToJava(jsonMap, context, fileName, clazz, type); + } + + public static ImmunizationLibrary getInstance() { + if (instance == null) { + throw new IllegalStateException(" Instance does not exist!!! Call " + ImmunizationLibrary.class + .getName() + ".init method in the onCreate method of your Application class "); + } + return instance; + } + + public static Map getVaccineCacheMap() { + return vaccineCacheMap; + } + + /** + * Public method to clear the instance/destroy useful for testing + */ + public static void destroy() { + instance = null; + } + public Map getConditionalVaccinesMap() { return conditionalVaccinesMap; } @@ -93,10 +125,6 @@ public T assetJsonToJava(String fileName, Class clazz, Type type) { return AssetHandler.assetJsonToJava(jsonMap, context.applicationContext(), fileName, clazz, type); } - public static T assetJsonToJava(Map jsonMap, android.content.Context context, String fileName, Class clazz, Type type) { - return AssetHandler.assetJsonToJava(jsonMap, context, fileName, clazz, type); - } - public EventClientRepository eventClientRepository() { if (eventClientRepository == null) { eventClientRepository = new EventClientRepository(); @@ -163,6 +191,10 @@ public int getApplicationVersion() { return applicationVersion; } + public String getApplicationVersionName() { + return applicationVersionName; + } + public int getDatabaseVersion() { return databaseVersion; } @@ -171,14 +203,6 @@ public Locale getLocale() { return ImmunizationLibrary.getInstance().context().applicationContext().getResources().getConfiguration().locale; } - public static ImmunizationLibrary getInstance() { - if (instance == null) { - throw new IllegalStateException(" Instance does not exist!!! Call " + ImmunizationLibrary.class - .getName() + ".init method in the onCreate method of your Application class "); - } - return instance; - } - public Map getVaccinesConfigJsonMap() { return jsonMap; } @@ -208,10 +232,6 @@ public boolean isAllowExpiredVaccineEntry() { return allowExpiredVaccineEntry; } - public static Map getVaccineCacheMap() { - return vaccineCacheMap; - } - public boolean isExpiredVaccineCardRed() { return getProperties().isTrue(IMConstants.APP_PROPERTIES.EXPIRED_CARD_AS_RED); } diff --git a/opensrp-immunization/src/main/java/org/smartregister/immunization/domain/VaccinateFormSubmissionWrapper.java b/opensrp-immunization/src/main/java/org/smartregister/immunization/domain/VaccinateFormSubmissionWrapper.java index 82504afe..86329712 100644 --- a/opensrp-immunization/src/main/java/org/smartregister/immunization/domain/VaccinateFormSubmissionWrapper.java +++ b/opensrp-immunization/src/main/java/org/smartregister/immunization/domain/VaccinateFormSubmissionWrapper.java @@ -3,7 +3,6 @@ import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.json.JSONObject; -import org.json.XML; import org.smartregister.immunization.db.VaccineRepo; import org.smartregister.immunization.util.VaccinateActionUtils; @@ -70,7 +69,7 @@ public String updateFormSubmission() { parent = "Woman_TT_Followup_Form"; } - JSONObject formSubmission = XML.toJSONObject(formData); + JSONObject formSubmission = new JSONObject(formData); JSONObject encounterJson = VaccinateActionUtils.find(formSubmission, parent); @@ -136,7 +135,7 @@ public String updateFormSubmission() { VaccinateActionUtils.updateJson(encounterJson, "phonenumber", "no phonenumber property in enketo"); - String data = XML.toString(formSubmission); + String data = formSubmission.toString(); return data; } catch (Exception e) { Timber.e(e); diff --git a/opensrp-immunization/src/main/java/org/smartregister/immunization/domain/VaccineSchedule.java b/opensrp-immunization/src/main/java/org/smartregister/immunization/domain/VaccineSchedule.java index 9696db9e..9e7ce9da 100644 --- a/opensrp-immunization/src/main/java/org/smartregister/immunization/domain/VaccineSchedule.java +++ b/opensrp-immunization/src/main/java/org/smartregister/immunization/domain/VaccineSchedule.java @@ -336,7 +336,7 @@ public static Calendar addOffsetToCalendar(Calendar calendar, String offset) { } public static VaccineSchedule getVaccineSchedule(String vaccineCategory, String vaccineName) { - if (vaccineSchedules != null && vaccineSchedules.containsKey(vaccineCategory) && vaccineSchedules.get(vaccineCategory) + if (vaccineSchedules != null && vaccineName != null && vaccineSchedules.containsKey(vaccineCategory) && vaccineSchedules.get(vaccineCategory) .containsKey(vaccineName.toUpperCase())) { return vaccineSchedules.get(vaccineCategory).get(vaccineName.toUpperCase()); } diff --git a/opensrp-immunization/src/main/java/org/smartregister/immunization/service/intent/RecurringIntentService.java b/opensrp-immunization/src/main/java/org/smartregister/immunization/service/intent/RecurringIntentService.java index bf13111f..33449c3a 100644 --- a/opensrp-immunization/src/main/java/org/smartregister/immunization/service/intent/RecurringIntentService.java +++ b/opensrp-immunization/src/main/java/org/smartregister/immunization/service/intent/RecurringIntentService.java @@ -149,8 +149,7 @@ protected void onHandleIntent(Intent intent) { jsonArray.put(jsonObject); } - JsonFormUtils - .createServiceEvent(getApplicationContext(), serviceRecord, EVENT_TYPE, ENTITY_TYPE, jsonArray); + JsonFormUtils.createServiceEvent(serviceRecord, EVENT_TYPE, ENTITY_TYPE, jsonArray, ImmunizationLibrary.getInstance().context()); recurringServiceRecordRepository.close(serviceRecord.getId()); } } diff --git a/opensrp-immunization/src/main/java/org/smartregister/immunization/service/intent/VaccineIntentService.java b/opensrp-immunization/src/main/java/org/smartregister/immunization/service/intent/VaccineIntentService.java index 824c5f8d..a28da17f 100644 --- a/opensrp-immunization/src/main/java/org/smartregister/immunization/service/intent/VaccineIntentService.java +++ b/opensrp-immunization/src/main/java/org/smartregister/immunization/service/intent/VaccineIntentService.java @@ -135,10 +135,10 @@ protected void onHandleIntent(Intent intent) { jsonObject.put(JsonFormUtils.VALUE, vaccine.getCalculation()); jsonArray.put(jsonObject); - JsonFormUtils.createVaccineEvent(getApplicationContext(), vaccine, getEventType(), getEntityType(), jsonArray); + JsonFormUtils.createVaccineEvent(vaccine, getEventType(), getEntityType(), jsonArray, ImmunizationLibrary.getInstance().context()); //log out of catchment service since this is required in some of the hia2 report indicators if (vaccine.getBaseEntityId() == null || vaccine.getBaseEntityId().isEmpty() || new Integer(1).equals(vaccine.getOutOfCatchment())) { - JsonFormUtils.createVaccineEvent(getApplicationContext(), vaccine, getEventTypeOutOfCatchment(), getEntityType(), jsonArray); + JsonFormUtils.createVaccineEvent(vaccine, getEventTypeOutOfCatchment(), getEntityType(), jsonArray, ImmunizationLibrary.getInstance().context()); } vaccineRepository.close(vaccine.getId()); diff --git a/opensrp-immunization/src/main/java/org/smartregister/immunization/util/JsonFormUtils.java b/opensrp-immunization/src/main/java/org/smartregister/immunization/util/JsonFormUtils.java index 5c62a118..65c5d852 100644 --- a/opensrp-immunization/src/main/java/org/smartregister/immunization/util/JsonFormUtils.java +++ b/opensrp-immunization/src/main/java/org/smartregister/immunization/util/JsonFormUtils.java @@ -4,8 +4,11 @@ import org.apache.commons.lang3.StringUtils; import org.json.JSONArray; +import org.json.JSONException; import org.json.JSONObject; +import org.smartregister.AllConstants; import org.smartregister.clientandeventmodel.Event; +import org.smartregister.domain.Observation; import org.smartregister.immunization.ImmunizationLibrary; import org.smartregister.immunization.domain.ServiceRecord; import org.smartregister.immunization.domain.Vaccine; @@ -20,10 +23,19 @@ */ public class JsonFormUtils extends org.smartregister.util.JsonFormUtils { - public static void createVaccineEvent(Context context, Vaccine vaccine, String eventType, String entityType, - JSONArray fields) { + /** + * This createVaccineEvent method is deprecated, use {@link #createVaccineEvent(Vaccine vaccine, String eventType, String entityType, JSONArray fields, org.smartregister.Context context)} instead which adds application version name. + */ + @Deprecated + public static void createVaccineEvent(Context context, Vaccine vaccine, String eventType, String entityType, JSONArray fields) { + + org.smartregister.Context openSRPContext = ImmunizationLibrary.getInstance().context(); + createVaccineEvent(vaccine, eventType, entityType, fields, openSRPContext); + } + + public static void createVaccineEvent(Vaccine vaccine, String eventType, String entityType, JSONArray fields, org.smartregister.Context context) { try { - EventClientRepository db = ImmunizationLibrary.getInstance().eventClientRepository(); + EventClientRepository db = context.getEventClientRepository(); Event event = (Event) new Event() .withBaseEntityId(vaccine.getBaseEntityId()) @@ -41,8 +53,16 @@ public static void createVaccineEvent(Context context, Vaccine vaccine, String e event.setTeamId(vaccine.getTeamId()); event.setChildLocationId(vaccine.getChildLocationId()); event.addDetails(IMConstants.VaccineEvent.PROGRAM_CLIENT_ID, vaccine.getProgramClientId()); + event.addDetails(AllConstants.DATA_STRATEGY, context.allSharedPreferences().fetchCurrentDataStrategy()); + + try { + addFormSubmissionFieldObservation(AllConstants.DATA_STRATEGY, context.allSharedPreferences().fetchCurrentDataStrategy(), Observation.TYPE.TEXT, event); + } catch (JSONException jsonException) { + Timber.e(jsonException); + } event.setClientApplicationVersion(ImmunizationLibrary.getInstance().getApplicationVersion()); + event.setClientApplicationVersionName(ImmunizationLibrary.getInstance().getApplicationVersionName()); event.setClientDatabaseVersion(ImmunizationLibrary.getInstance().getDatabaseVersion()); if (fields != null && fields.length() != 0) @@ -73,10 +93,19 @@ public static void createVaccineEvent(Context context, Vaccine vaccine, String e } } - public static void createServiceEvent(Context context, ServiceRecord serviceRecord, String eventType, String entityType, - JSONArray fields) { + /** + * This createServiceEvent method is deprecated, use {@link #createServiceEvent(ServiceRecord serviceRecord, String eventType, String entityType, JSONArray fields, org.smartregister.Context context)} instead which adds application version name. + */ + @Deprecated + public static void createServiceEvent(Context context, ServiceRecord serviceRecord, String eventType, String entityType, JSONArray fields) { + + org.smartregister.Context openSRPContext = ImmunizationLibrary.getInstance().context(); + createServiceEvent(serviceRecord, eventType, entityType, fields, openSRPContext); + } + + public static void createServiceEvent(ServiceRecord serviceRecord, String eventType, String entityType, JSONArray fields, org.smartregister.Context context) { try { - EventClientRepository db = ImmunizationLibrary.getInstance().eventClientRepository(); + EventClientRepository db = context.getEventClientRepository(); Event event = (Event) new Event() .withBaseEntityId(serviceRecord.getBaseEntityId()) @@ -95,8 +124,16 @@ public static void createServiceEvent(Context context, ServiceRecord serviceReco event.setTeamId(serviceRecord.getTeamId()); event.setChildLocationId(serviceRecord.getChildLocationId()); event.addDetails(IMConstants.VaccineEvent.PROGRAM_CLIENT_ID, serviceRecord.getProgramClientId()); + event.addDetails(AllConstants.DATA_STRATEGY, context.allSharedPreferences().fetchCurrentDataStrategy()); + + try { + addFormSubmissionFieldObservation(AllConstants.DATA_STRATEGY, context.allSharedPreferences().fetchCurrentDataStrategy(), Observation.TYPE.TEXT, event); + } catch (JSONException jsonException) { + Timber.e(jsonException); + } event.setClientApplicationVersion(ImmunizationLibrary.getInstance().getApplicationVersion()); + event.setClientApplicationVersionName(ImmunizationLibrary.getInstance().getApplicationVersionName()); event.setClientDatabaseVersion(ImmunizationLibrary.getInstance().getDatabaseVersion()); if (fields != null && fields.length() != 0) @@ -108,7 +145,6 @@ public static void createServiceEvent(Context context, ServiceRecord serviceReco } } - if (event != null) { JSONObject eventJson = new JSONObject(JsonFormUtils.gson.toJson(event)); diff --git a/opensrp-immunization/src/main/java/org/smartregister/immunization/util/VaccinateActionUtils.java b/opensrp-immunization/src/main/java/org/smartregister/immunization/util/VaccinateActionUtils.java index ced155d7..f653ffe6 100644 --- a/opensrp-immunization/src/main/java/org/smartregister/immunization/util/VaccinateActionUtils.java +++ b/opensrp-immunization/src/main/java/org/smartregister/immunization/util/VaccinateActionUtils.java @@ -1,12 +1,5 @@ package org.smartregister.immunization.util; -import static org.smartregister.AllConstants.ENTITY_ID_PARAM; -import static org.smartregister.AllConstants.FORM_NAME_PARAM; -import static org.smartregister.AllConstants.INSTANCE_ID_PARAM; -import static org.smartregister.AllConstants.SYNC_STATUS; -import static org.smartregister.AllConstants.VERSION_PARAM; -import static org.smartregister.domain.SyncStatus.PENDING; -import static org.smartregister.util.EasyMap.create; import static org.smartregister.util.Utils.convertDateFormat; import android.content.Context; @@ -21,19 +14,13 @@ import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentTransaction; -import com.google.gson.Gson; - import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.json.JSONException; import org.json.JSONObject; import org.smartregister.clientandeventmodel.DateUtil; -import org.smartregister.commonregistry.AllCommonsRepository; -import org.smartregister.commonregistry.CommonFtsObject; import org.smartregister.domain.Alert; import org.smartregister.domain.AlertStatus; -import org.smartregister.domain.form.FormSubmission; -import org.smartregister.immunization.ImmunizationLibrary; import org.smartregister.immunization.R; import org.smartregister.immunization.db.VaccineRepo; import org.smartregister.immunization.domain.ServiceRecord; @@ -44,7 +31,6 @@ import org.smartregister.immunization.domain.jsonmapping.VaccineGroup; import org.smartregister.immunization.fragment.VaccinationDialogFragment; import org.smartregister.service.AlertService; -import org.smartregister.service.ZiggyService; import org.smartregister.util.FormUtils; import java.util.ArrayList; @@ -180,48 +166,6 @@ public void onClick(View view) { } - public static void saveFormSubmission(Context appContext, String formSubmission, String id, String formName, - JSONObject fieldOverrides) { - - Timber.d("fieldoverride %s", fieldOverrides.toString()); - - // save the form - try { - FormUtils formUtils = FormUtils.getInstance(appContext); - FormSubmission submission = formUtils - .generateFormSubmisionFromXMLString(id, formSubmission, formName, fieldOverrides); - - org.smartregister.Context context = ImmunizationLibrary.getInstance().context(); - ZiggyService ziggyService = context.ziggyService(); - ziggyService.saveForm(getParams(submission), submission.instance()); - - // Update Fts Tables - CommonFtsObject commonFtsObject = context.commonFtsObject(); - if (commonFtsObject != null) { - String[] ftsTables = commonFtsObject.getTables(); - for (String ftsTable : ftsTables) { - AllCommonsRepository allCommonsRepository = context.allCommonsRepositoryobjects(ftsTable); - boolean updated = allCommonsRepository.updateSearch(submission.entityId()); - if (updated) { - break; - } - } - } - } catch (Exception e) { - Timber.e(e); - } - } - - private static String getParams(FormSubmission submission) { - return new Gson().toJson( - create(INSTANCE_ID_PARAM, submission.instanceId()) - .put(ENTITY_ID_PARAM, submission.entityId()) - .put(FORM_NAME_PARAM, submission.formName()) - .put(VERSION_PARAM, submission.version()) - .put(SYNC_STATUS, PENDING.value()) - .map()); - } - public static JSONObject retrieveFieldOverides(String overrides) { try { //get the field overrides map diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/BaseUnitTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/BaseUnitTest.java index 1216c5c5..a88d6375 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/BaseUnitTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/BaseUnitTest.java @@ -1,9 +1,9 @@ package org.smartregister.immunization; -import android.os.Build; import androidx.annotation.NonNull; import org.junit.runner.RunWith; +import org.mockito.ArgumentMatchers; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.modules.junit4.PowerMockRunner; @@ -24,7 +24,7 @@ @RunWith(PowerMockRunner.class) @PowerMockRunnerDelegate(RobolectricTestRunner.class) -@Config(shadows = {FontTextViewShadow.class}, sdk = Build.VERSION_CODES.P) +@Config(shadows = {FontTextViewShadow.class}) @PowerMockIgnore({"org.mockito.*", "org.robolectric.*", "android.*", "androidx.*", "javax.xml.*", "org.xml.sax.*" , "org.w3c.dom.*", "org.springframework.context.*", "org.apache.log4j.*", "com.android.internal.policy.*" , "org.xmlpull.v1.*", "org.smartregister.immunization.view.ExpandableHeightGridView"}) @@ -50,7 +50,7 @@ public void mockImmunizationLibrary(@NonNull ImmunizationLibrary immunizationLib PowerMockito.when(ImmunizationLibrary.getInstance().getVaccines(IMConstants.VACCINE_TYPE.CHILD)).thenReturn(VaccineRepo.Vaccine.values()); PowerMockito.when(ImmunizationLibrary.getInstance().getVaccines(IMConstants.VACCINE_TYPE.WOMAN)).thenReturn(VaccineRepo.Vaccine.values()); - PowerMockito.when(ImmunizationLibrary.getInstance().vaccineRepository().findByEntityId(org.mockito.ArgumentMatchers.anyString())).thenReturn(null); + PowerMockito.when(ImmunizationLibrary.getInstance().vaccineRepository().findByEntityId(ArgumentMatchers.anyString())).thenReturn(null); PowerMockito.when(ImmunizationLibrary.getInstance().context().alertService()).thenReturn(alertService); PowerMockito.when(ImmunizationLibrary.getInstance().getProperties()).thenReturn(appProperties); } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/ImmunizationRowAdapterTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/ImmunizationRowAdapterTest.java index 0934cd5d..9ed3cd62 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/ImmunizationRowAdapterTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/ImmunizationRowAdapterTest.java @@ -14,7 +14,7 @@ import org.mockito.Mockito; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; import org.smartregister.commonregistry.CommonPersonObjectClient; @@ -65,7 +65,7 @@ public class ImmunizationRowAdapterTest extends BaseUnitTest { @Before public void setUp() { org.mockito.MockitoAnnotations.initMocks(this); - view = new ImmunizationRowGroup(RuntimeEnvironment.application, false); + view = new ImmunizationRowGroup(ApplicationProvider.getApplicationContext(), false); setDataForTest(magicDate); } @@ -148,7 +148,7 @@ public void assertGetCountTestReturnsCount() throws Exception { @Test public void assertGetViewReturnsVaccineGroup() { - ImmunizationRowAdapter immunizationRowAdapter = new ImmunizationRowAdapter(RuntimeEnvironment.application, view, + ImmunizationRowAdapter immunizationRowAdapter = new ImmunizationRowAdapter(ApplicationProvider.getApplicationContext(), view, true, vaccinelist, alertlist); Assert.assertNotNull(immunizationRowAdapter.getView(0, null, null)); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/ServiceCardAdapterTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/ServiceCardAdapterTest.java index 12929591..6058a214 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/ServiceCardAdapterTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/ServiceCardAdapterTest.java @@ -4,14 +4,14 @@ import android.view.View; import android.view.ViewGroup; -import junit.framework.Assert; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.Mockito; import org.powermock.reflect.Whitebox; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.annotation.Config; import org.smartregister.commonregistry.CommonPersonObjectClient; import org.smartregister.domain.Alert; @@ -71,9 +71,9 @@ public static List getServiceTypeKeys(HashMap> @Before public void setUp() { - view = new ServiceGroup(RuntimeEnvironment.application); + view = new ServiceGroup(ApplicationProvider.getApplicationContext()); setDataForTest(magicDate); - serviceCardAdapter = new ServiceCardAdapter(RuntimeEnvironment.application, view, serviceTypeList, serviceRecordList, + serviceCardAdapter = new ServiceCardAdapter(ApplicationProvider.getApplicationContext(), view, serviceTypeList, serviceRecordList, alertList); org.mockito.MockitoAnnotations.initMocks(this); } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/ServiceRowAdapterTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/ServiceRowAdapterTest.java index 5c42acc1..56fcda96 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/ServiceRowAdapterTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/ServiceRowAdapterTest.java @@ -4,12 +4,12 @@ import android.view.View; import android.view.ViewGroup; -import junit.framework.Assert; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.annotation.Config; import org.smartregister.commonregistry.CommonPersonObjectClient; import org.smartregister.domain.Alert; @@ -56,9 +56,9 @@ public class ServiceRowAdapterTest extends BaseUnitTest { @Before public void setUp() throws Exception { - view = new ServiceRowGroup(RuntimeEnvironment.application, true); + view = new ServiceRowGroup(ApplicationProvider.getApplicationContext(), true); setDataForTest(magicDate); - serviceRowAdapter = new ServiceRowAdapter(RuntimeEnvironment.application, view, true, serviceTypeList, + serviceRowAdapter = new ServiceRowAdapter(ApplicationProvider.getApplicationContext(), view, true, serviceTypeList, serviceRecordList, alertList); org.mockito.MockitoAnnotations.initMocks(this); } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/VaccineCardAdapterTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/VaccineCardAdapterTest.java index 4b3e26f4..dbce8f2a 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/VaccineCardAdapterTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/adapter/VaccineCardAdapterTest.java @@ -12,7 +12,7 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.powermock.reflect.Whitebox; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.annotation.Config; import org.smartregister.commonregistry.CommonPersonObjectClient; import org.smartregister.domain.Alert; @@ -70,9 +70,9 @@ public class VaccineCardAdapterTest extends BaseUnitTest { @Before public void setUp() { - view = new VaccineGroup(RuntimeEnvironment.application); + view = new VaccineGroup(ApplicationProvider.getApplicationContext()); setDataForTest(magicDate); - vaccineCardAdapter = new VaccineCardAdapter(RuntimeEnvironment.application, view, "child", vaccineList, alertList); + vaccineCardAdapter = new VaccineCardAdapter(ApplicationProvider.getApplicationContext(), view, "child", vaccineList, alertList); org.mockito.MockitoAnnotations.initMocks(this); } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/customshadows/ShadowJsonFormUtils.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/customshadows/ShadowJsonFormUtils.java index 9c7b3177..4203f65e 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/customshadows/ShadowJsonFormUtils.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/customshadows/ShadowJsonFormUtils.java @@ -1,12 +1,12 @@ package org.smartregister.immunization.customshadows; -import android.content.Context; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import org.json.JSONArray; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; +import org.smartregister.Context; import org.smartregister.immunization.domain.ServiceRecord; import org.smartregister.immunization.domain.Vaccine; import org.smartregister.immunization.util.JsonFormUtils; @@ -23,9 +23,9 @@ public class ShadowJsonFormUtils { private static HashMap>> methodCalls = new HashMap<>(); @Implementation - public static void createVaccineEvent(Context context, Vaccine vaccine, String eventType, String entityType, JSONArray fields) { + public static void createVaccineEvent( Vaccine vaccine, String eventType, String entityType, JSONArray fields,Context context) { // TODO: Make this dynamic and reusable for other instances - String methodName = "createVaccineEvent(Context, Vaccine, String, String, JSONArray)"; + String methodName = "createVaccineEvent(Vaccine, String, String, JSONArray, Context)"; int count = 0; @@ -47,9 +47,9 @@ public static void createVaccineEvent(Context context, Vaccine vaccine, String e } @Implementation - public static void createServiceEvent(Context context, ServiceRecord serviceRecord, String eventType, String entityType, JSONArray fields) { + public static void createServiceEvent(ServiceRecord serviceRecord, String eventType, String entityType, JSONArray fields, Context context) { // TODO: Make this dynamic and reusable for other instances - String methodName = "createServiceEvent(Context, ServiceRecord, String, String, JSONArray)"; + String methodName = "createServiceEvent(ServiceRecord, String, String, JSONArray, Context)"; int count = 0; diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/ActivateChildStatusDialogFragmentTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/ActivateChildStatusDialogFragmentTest.java index ae7d5871..fde323dc 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/ActivateChildStatusDialogFragmentTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/ActivateChildStatusDialogFragmentTest.java @@ -14,7 +14,7 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.smartregister.immunization.BaseUnitTest; import org.smartregister.immunization.R; @@ -65,7 +65,7 @@ public void testSetFilterTouchesWhenObscuredSetsFlagToTrue() { Mockito.doReturn(activity).when(activateChildStatusDialogFragment).getActivity(); - Mockito.doReturn(RuntimeEnvironment.application.getResources().getString(R.string.activate_child_status_dialog_title)).when(activity).getString(R.string.activate_child_status_dialog_title); + Mockito.doReturn(ApplicationProvider.getApplicationContext().getResources().getString(R.string.activate_child_status_dialog_title)).when(activity).getString(R.string.activate_child_status_dialog_title); Mockito.doReturn(layoutInflater).when(activity).getLayoutInflater(); Mockito.doReturn(view).when(layoutInflater).inflate(R.layout.dialog_fragment_activate_child_status, viewGroup, false); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/ServiceDialogFragmentTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/ServiceDialogFragmentTest.java index 987419b8..a2cf318f 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/ServiceDialogFragmentTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/ServiceDialogFragmentTest.java @@ -13,7 +13,7 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.robolectric.Robolectric; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.android.controller.ActivityController; import org.robolectric.annotation.Config; import org.smartregister.CoreLibrary; @@ -100,7 +100,7 @@ public void assertThatCallToNewInstanceCreatesAFragment() { @Test public void assertOnCreateViewTestSetsUpTheActivity() { destroyController(); - Intent intent = new Intent(RuntimeEnvironment.application, ServiceDialogFragmentTestActivity.class); + Intent intent = new Intent(ApplicationProvider.getApplicationContext(), ServiceDialogFragmentTestActivity.class); controller = Robolectric.buildActivity(ServiceDialogFragmentTestActivity.class, intent); activity = controller.get(); controller.setup(); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/ServiceEditDialogFragmentTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/ServiceEditDialogFragmentTest.java index c14c95c9..c4358796 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/ServiceEditDialogFragmentTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/ServiceEditDialogFragmentTest.java @@ -15,7 +15,7 @@ import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.android.controller.ActivityController; import org.robolectric.annotation.Config; import org.smartregister.CoreLibrary; @@ -108,7 +108,7 @@ public void assertThatCallToNewInstanceCreatesAFragment() { @Test public void assertOnCreateViewTestSetsUpTheActivity() throws Exception { destroyController(); - Intent intent = new Intent(RuntimeEnvironment.application, FragmentUtilActivityUsingServiceActionListener.class); + Intent intent = new Intent(ApplicationProvider.getApplicationContext(), FragmentUtilActivityUsingServiceActionListener.class); controller = Robolectric.buildActivity(FragmentUtilActivityUsingServiceActionListener.class, intent); activity = controller.get(); controller.setup(); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/UndoServiceDialogFragmentTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/UndoServiceDialogFragmentTest.java index fb70c00f..194b8a67 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/UndoServiceDialogFragmentTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/UndoServiceDialogFragmentTest.java @@ -12,7 +12,7 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.robolectric.Robolectric; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.android.controller.ActivityController; import org.robolectric.annotation.Config; import org.smartregister.immunization.BaseUnitTest; @@ -82,7 +82,7 @@ public void assertThatCallToNewInstanceCreatesAFragment() { @Test public void assertOnCreateViewTestSetsUpTheActivity() throws Exception { destroyController(); - Intent intent = new Intent(RuntimeEnvironment.application, UndoServiceDialogFragmentTestActivity.class); + Intent intent = new Intent(ApplicationProvider.getApplicationContext(), UndoServiceDialogFragmentTestActivity.class); controller = Robolectric.buildActivity(UndoServiceDialogFragmentTestActivity.class, intent); activity = controller.get(); controller.setup(); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/UndoVaccinationDialogFragmentTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/UndoVaccinationDialogFragmentTest.java index d55afd60..8a306663 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/UndoVaccinationDialogFragmentTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/UndoVaccinationDialogFragmentTest.java @@ -12,7 +12,7 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.robolectric.Robolectric; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.android.controller.ActivityController; import org.smartregister.CoreLibrary; import org.smartregister.immunization.BaseUnitTest; @@ -88,7 +88,7 @@ private void destroyController() { @Test public void assertOnCreateViewTestSetsUpTheActivity() { destroyController(); - Intent intent = new Intent(RuntimeEnvironment.application, UndoVaccinationDialogFragmentTestActivity.class); + Intent intent = new Intent(ApplicationProvider.getApplicationContext(), UndoVaccinationDialogFragmentTestActivity.class); controller = Robolectric.buildActivity(UndoVaccinationDialogFragmentTestActivity.class, intent); activity = controller.get(); controller.setup(); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/VaccinationDialogFragmentTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/VaccinationDialogFragmentTest.java index 8417b312..b92346c8 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/VaccinationDialogFragmentTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/VaccinationDialogFragmentTest.java @@ -10,7 +10,7 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.robolectric.Robolectric; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.android.controller.ActivityController; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; @@ -102,7 +102,7 @@ private void destroyController() { @Test public void assertOnCreateViewTestSetsUpTheActivity() { destroyController(); - Intent intent = new Intent(RuntimeEnvironment.application, VaccinationDialogFragmentTestActivity.class); + Intent intent = new Intent(ApplicationProvider.getApplicationContext(), VaccinationDialogFragmentTestActivity.class); controller = Robolectric.buildActivity(VaccinationDialogFragmentTestActivity.class, intent); activity = controller.get(); controller.setup(); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/mock/VaccinationDialogFragmentMock.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/mock/VaccinationDialogFragmentMock.java index 1a2463ab..245f5396 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/mock/VaccinationDialogFragmentMock.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/fragment/mock/VaccinationDialogFragmentMock.java @@ -12,7 +12,7 @@ import com.google.gson.reflect.TypeToken; import org.mockito.Mockito; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.smartregister.immunization.R; import org.smartregister.immunization.domain.Vaccine; import org.smartregister.immunization.domain.VaccineData; @@ -97,11 +97,11 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa .spy((LinearLayout) dialogView.findViewById(R.id.vaccination_name_layout)); Mockito.doReturn(vaccinationNameLayout).when(dialogView).findViewById(R.id.vaccination_name_layout); - LinearLayout vaccineName = Mockito.spy(new LinearLayout(RuntimeEnvironment.application)); + LinearLayout vaccineName = Mockito.spy(new LinearLayout(ApplicationProvider.getApplicationContext())); CheckBoxMock checkBox = Mockito.mock(CheckBoxMock.class); RadioButtonMock radioButton = Mockito - .mock(RadioButtonMock.class);//new RadioButtonMock(RuntimeEnvironment.application); - TextView textView = new TextView(RuntimeEnvironment.application); + .mock(RadioButtonMock.class);//new RadioButtonMock(ApplicationProvider.getApplicationContext()); + TextView textView = new TextView(ApplicationProvider.getApplicationContext()); Mockito.doReturn(vaccineName).when(this.inflater).inflate(R.layout.vaccination_name, null); Mockito.doReturn(radioButton).when(vaccineName).findViewById(R.id.radio); Mockito.doReturn(textView).when(vaccineName).findViewById(R.id.vaccine); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/RecurringServiceRecordRepositoryTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/RecurringServiceRecordRepositoryTest.java index 401f2008..2ed3a9b8 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/RecurringServiceRecordRepositoryTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/RecurringServiceRecordRepositoryTest.java @@ -1,9 +1,5 @@ package org.smartregister.immunization.repository; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.ArgumentMatchers.isNull; import static org.smartregister.immunization.repository.RecurringServiceRecordRepository.BASE_ENTITY_ID; import static org.smartregister.immunization.repository.RecurringServiceRecordRepository.CHILD_LOCATION_ID; import static org.smartregister.immunization.repository.RecurringServiceRecordRepository.CREATED_AT; @@ -16,7 +12,6 @@ import static org.smartregister.immunization.repository.RecurringServiceRecordRepository.RECURRING_SERVICE_ID; import static org.smartregister.immunization.repository.RecurringServiceRecordRepository.SYNC_STATUS; import static org.smartregister.immunization.repository.RecurringServiceRecordRepository.TABLE_COLUMNS; -import static org.smartregister.immunization.repository.RecurringServiceRecordRepository.TABLE_NAME; import static org.smartregister.immunization.repository.RecurringServiceRecordRepository.TEAM; import static org.smartregister.immunization.repository.RecurringServiceRecordRepository.TEAM_ID; import static org.smartregister.immunization.repository.RecurringServiceRecordRepository.UPDATED_AT_COLUMN; @@ -29,6 +24,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.mockito.ArgumentMatchers; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -111,7 +107,7 @@ public void assertInstantiatesSuccessfullyOnConstructorCall() { @Test public void verifyCreateTableCallsExecuteSQLMethod() { RecurringServiceRecordRepository.createTable(sqliteDatabase); - Mockito.verify(sqliteDatabase, Mockito.times(8)).execSQL(anyString()); + Mockito.verify(sqliteDatabase, Mockito.times(8)).execSQL(ArgumentMatchers.anyString()); } @Test @@ -119,7 +115,8 @@ public void verifyAddCallsDatabaseDatabaseMethod1TimesInCaseOfNonNullVaccineNull Mockito.when(recurringServiceRecordRepository.getWritableDatabase()).thenReturn(sqliteDatabase); recurringServiceRecordRepository.add(new ServiceRecord()); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .insert(anyString(), isNull(), any(ContentValues.class)); + .insert(ArgumentMatchers.anyString(), ArgumentMatchers.isNull(), + ArgumentMatchers.any(ContentValues.class)); } @Test @@ -129,19 +126,19 @@ public void verifyAddCallsDatabaseDatabaseMethod1TimesInCaseOfNonNullVaccineNotN serviceRecord.setId(0l); recurringServiceRecordRepository.add(serviceRecord); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .update(anyString(), any(ContentValues.class), - anyString(), any(String[].class)); + .update(ArgumentMatchers.anyString(), ArgumentMatchers.any(ContentValues.class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class)); } @Test public void verifyAddCallsDatabaseDatabaseMethod0TimesInCaseOfNullVaccine() { recurringServiceRecordRepository.add(null); Mockito.verify(sqliteDatabase, Mockito.times(0)) - .insert(anyString(), (String) isNull(), - any(ContentValues.class)); + .insert(ArgumentMatchers.anyString(), (String) ArgumentMatchers.isNull(), + ArgumentMatchers.any(ContentValues.class)); Mockito.verify(sqliteDatabase, Mockito.times(0)) - .update(anyString(), any(ContentValues.class), - anyString(), any(String[].class)); + .update(ArgumentMatchers.anyString(), ArgumentMatchers.any(ContentValues.class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class)); } @Test @@ -154,12 +151,12 @@ public void verifyFindbyEntityIDcallsDatabaseQueryMethod1Times() { cursor.addRow(new Object[]{1l, "", "", 1l, "", magicNumber, "", "", "", "", "", 1l, "", ""}); Mockito.when(sqliteDatabase - .rawQuery(anyString(), any(String[].class))) + .rawQuery(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class))) .thenReturn(cursor); Mockito.when(recurringServiceRecordRepositoryspy.getReadableDatabase()).thenReturn(sqliteDatabase); recurringServiceRecordRepositoryspy.findByEntityId("entityID"); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .rawQuery(anyString(), any(String[].class)); + .rawQuery(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class)); } @Test @@ -185,17 +182,19 @@ public void verifyFindbyUniqueIDcallsDatabaseQueryMethod1Times() { serviceRecord.setEventId(EVENTID); recurringServiceRecordRepository.findUnique(null, serviceRecord); Mockito.when(sqliteDatabase - .query(anyString(), any(String[].class), - anyString(), any(String[].class), - isNull(), isNull(), anyString(), isNull())) + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.anyString(), ArgumentMatchers.isNull())) .thenReturn(cursor); Mockito.when(recurringServiceRecordRepository.getReadableDatabase()).thenReturn(sqliteDatabase); recurringServiceRecordRepository.findUnique(sqliteDatabase, serviceRecord); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .query(anyString(), any(String[].class), - anyString(), any(String[].class), - isNull(), isNull(), anyString(), isNull()); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.anyString(), ArgumentMatchers.isNull()); recurringServiceRecordRepository.findUnique(sqliteDatabase, null); } @@ -207,16 +206,19 @@ public void assertAndVerifyFindbyCaseIDcallsDatabaseQueryMethod1Times() { cursor.addRow(new Object[]{1l, "", "", 1l, "", magicNumber, "", "", "", "", "", 1l, magicType, magicNAME}); Assert.assertNull(recurringServiceRecordRepository.find(0l)); Mockito.when(sqliteDatabase - .query(anyString(), any(String[].class), - anyString(), any(String[].class), - isNull(), isNull(), isNull(), - isNull())).thenReturn(cursor); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull())).thenReturn(cursor); Mockito.when(recurringServiceRecordRepository.getReadableDatabase()).thenReturn(sqliteDatabase); recurringServiceRecordRepository.find(0l); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .query(anyString(), any(String[].class), - anyString(), any(String[].class), - isNull(), isNull(), isNull(), isNull()); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull()); } @Test @@ -229,7 +231,8 @@ public void verifyUpdateCallsDatabaseUpdateMethod1Times() { recurringServiceRecordRepository.update(null, serviceRecord); recurringServiceRecordRepository.update(sqliteDatabase, serviceRecord); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .update(anyString(), any(ContentValues.class), anyString(), any(String[].class)); + .update(ArgumentMatchers.anyString(), ArgumentMatchers.any(ContentValues.class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class)); } @Test @@ -245,7 +248,8 @@ public void verifyDeleteCallsDatabaseDeleteMethod1Times() { Mockito.when(recurringServiceRecordRepositoryspy.getWritableDatabase()).thenReturn(sqliteDatabase); recurringServiceRecordRepositoryspy.deleteServiceRecord(0l); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .delete(anyString(), anyString(), any(String[].class)); + .delete(ArgumentMatchers.anyString(), ArgumentMatchers.anyString(), + ArgumentMatchers.any(String[].class)); } @Test @@ -253,7 +257,9 @@ public void verifyCloseMethodCallsInternalMethodsWithCorrectParams() { Mockito.when(recurringServiceRecordRepository.getWritableDatabase()).thenReturn(sqliteDatabase); recurringServiceRecordRepository.close(5l); Mockito.verify(recurringServiceRecordRepository.getWritableDatabase(), Mockito.times(1)) - .update(eq(TABLE_NAME), (ContentValues) any(), anyString(), eq(new String[]{"5"})); + .update(ArgumentMatchers.eq(RecurringServiceRecordRepository.TABLE_NAME), + (ContentValues) ArgumentMatchers.any(), ArgumentMatchers.anyString(), + ArgumentMatchers.eq(new String[]{"5"})); } @Test @@ -261,8 +267,8 @@ public void verifyCloseMethodFailsSilentlyWithNullParams() { Mockito.when(recurringServiceRecordRepository.getWritableDatabase()).thenReturn(sqliteDatabase); recurringServiceRecordRepository.close(null); Mockito.verify(recurringServiceRecordRepository.getWritableDatabase(), Mockito.times(0)) - .update(anyString(), (ContentValues) any(), - anyString(), eq(new String[]{"5"})); + .update(ArgumentMatchers.anyString(), (ContentValues) ArgumentMatchers.any(), + ArgumentMatchers.anyString(), ArgumentMatchers.eq(new String[]{"5"})); } @Test @@ -279,10 +285,11 @@ public void assertFindUnSyncedBeforeTimeTest() { cursor.addRow(new Object[]{1l, "", "", 1l, "", magicNumber, "", "", "", "", "", 1l, magicType, magicNAME}); Mockito.when(recurringServiceRecordRepository.getReadableDatabase()).thenReturn(sqliteDatabase); Mockito.when(sqliteDatabase - .query(anyString(), any(String[].class), - anyString(), any(String[].class), - isNull(), isNull(), isNull(), - isNull())).thenReturn(cursor); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull())).thenReturn(cursor); Assert.assertNotNull(recurringServiceRecordRepository.findUnSyncedBeforeTime(magicNumber10)); } @@ -292,22 +299,22 @@ public void testFindByBaseEntityIdAndRecurringServiceIdInvokesDBQueryAndReturnsC cursor.addRow(new Object[]{1L, "base-entity-id", "", 1L, "", magicNumber, "", "", "", "", "", "", "", "", 1L, magicDate}); Mockito.when(sqliteDatabase.query( - eq(tableName), - eq(TABLE_COLUMNS), - eq(String.format("%s = ? AND %s = ?", BASE_ENTITY_ID, RECURRING_SERVICE_ID)), - eq(new String[]{"base-entity-id", String.valueOf(1L)}), - isNull(), isNull(), isNull(), isNull() + ArgumentMatchers.eq(tableName), + ArgumentMatchers.eq(TABLE_COLUMNS), + ArgumentMatchers.eq(String.format("%s = ? AND %s = ?", BASE_ENTITY_ID, RECURRING_SERVICE_ID)), + ArgumentMatchers.eq(new String[]{"base-entity-id", String.valueOf(1L)}), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), ArgumentMatchers.isNull() )).thenReturn(cursor); Mockito.when(recurringServiceRecordRepository.getReadableDatabase()).thenReturn(sqliteDatabase); ServiceRecord serviceRecord = recurringServiceRecordRepository.findByBaseEntityIdAndRecurringServiceId("base-entity-id", 1L); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .query(eq(tableName), - eq(TABLE_COLUMNS), - eq(String.format("%s = ? AND %s = ?", BASE_ENTITY_ID, RECURRING_SERVICE_ID)), - eq(new String[]{"base-entity-id", String.valueOf(1L)}), - isNull(), isNull(), isNull(), isNull()); + .query(ArgumentMatchers.eq(tableName), + ArgumentMatchers.eq(TABLE_COLUMNS), + ArgumentMatchers.eq(String.format("%s = ? AND %s = ?", BASE_ENTITY_ID, RECURRING_SERVICE_ID)), + ArgumentMatchers.eq(new String[]{"base-entity-id", String.valueOf(1L)}), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), ArgumentMatchers.isNull()); Assert.assertNotNull(serviceRecord); Assert.assertEquals(Long.valueOf(1), serviceRecord.getRecurringServiceId()); @@ -317,21 +324,21 @@ public void testFindByBaseEntityIdAndRecurringServiceIdInvokesDBQueryAndReturnsC @Test public void testFindByBaseEntityIdAndRecurringServiceIdReturnsNullVaccineWhenExceptionThrown() { Mockito.when(sqliteDatabase.query( - eq(tableName), - eq(TABLE_COLUMNS), - eq(String.format("%s = ? AND %s = ?", BASE_ENTITY_ID, RECURRING_SERVICE_ID)), - eq(new String[]{"base-entity-id", String.valueOf(1L)}), - isNull(), isNull(), isNull(), isNull()) + ArgumentMatchers.eq(tableName), + ArgumentMatchers.eq(TABLE_COLUMNS), + ArgumentMatchers.eq(String.format("%s = ? AND %s = ?", BASE_ENTITY_ID, RECURRING_SERVICE_ID)), + ArgumentMatchers.eq(new String[]{"base-entity-id", String.valueOf(1L)}), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), ArgumentMatchers.isNull()) ).thenThrow(new RuntimeException()); ServiceRecord serviceRecord = recurringServiceRecordRepository.findByBaseEntityIdAndRecurringServiceId("base-entity-id", 1L); Mockito.verify(sqliteDatabase, Mockito.times(0)) - .query(eq(tableName), - eq(TABLE_COLUMNS), - eq(String.format("%s = ? AND %s = ?", BASE_ENTITY_ID, RECURRING_SERVICE_ID)), - eq(new String[]{"base-entity-id", String.valueOf(1L)}), - isNull(), isNull(), isNull(), isNull()); + .query(ArgumentMatchers.eq(tableName), + ArgumentMatchers.eq(TABLE_COLUMNS), + ArgumentMatchers.eq(String.format("%s = ? AND %s = ?", BASE_ENTITY_ID, RECURRING_SERVICE_ID)), + ArgumentMatchers.eq(new String[]{"base-entity-id", String.valueOf(1L)}), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), ArgumentMatchers.isNull()); Assert.assertNull(serviceRecord); } } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/RecurringServiceTypeRepositoryTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/RecurringServiceTypeRepositoryTest.java index 977ef96f..f3fa9af0 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/RecurringServiceTypeRepositoryTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/RecurringServiceTypeRepositoryTest.java @@ -1,14 +1,17 @@ package org.smartregister.immunization.repository; +import static org.mockito.Mockito.times; + import android.content.ContentValues; -import junit.framework.Assert; +import org.junit.Assert; import net.sqlcipher.MatrixCursor; import net.sqlcipher.database.SQLiteDatabase; import org.junit.Before; import org.junit.Test; +import org.mockito.ArgumentMatchers; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -18,8 +21,6 @@ import org.smartregister.repository.Repository; import org.smartregister.view.activity.DrishtiApplication; -import static org.mockito.Mockito.times; - /** * Created by onaio on 29/08/2017. */ @@ -57,7 +58,7 @@ public void assertInstantiatesSuccessfullyOnConstructorCall() { @Test public void verifyCreateTableCallsExecuteSQLMethod() { RecurringServiceTypeRepository.createTable(sqliteDatabase); - Mockito.verify(sqliteDatabase, times(4)).execSQL(org.mockito.ArgumentMatchers.anyString()); + Mockito.verify(sqliteDatabase, times(4)).execSQL(ArgumentMatchers.anyString()); } @Test @@ -66,8 +67,8 @@ public void verifyAddCallsDatabaseDatabaseMethod1TimesInCaseOfNonNullVaccineNull ServiceType serviceType = Mockito.spy(new ServiceType()); recurringServiceTypeRepository.add(serviceType, sqliteDatabase); Mockito.verify(sqliteDatabase, times(1)) - .insert(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.any(ContentValues.class)); + .insert(ArgumentMatchers.anyString(), ArgumentMatchers.isNull(), + ArgumentMatchers.any(ContentValues.class)); } @Test @@ -76,19 +77,19 @@ public void assertAndVerifySearchByNamecallsDatabaseQueryMethod1Times() { MatrixCursor cursor = new MatrixCursor(columns); cursor.addRow(new Object[]{1l, "", "", "", "", "", "", "", "", "", "", "", "", 1l}); Mockito.when(sqliteDatabase - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class))).thenReturn(cursor); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull())).thenReturn(cursor); Mockito.when(recurringServiceTypeRepository.getReadableDatabase()).thenReturn(sqliteDatabase); recurringServiceTypeRepository.searchByName("Name"); Mockito.verify(sqliteDatabase, times(1)) - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class)); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull()); Assert.assertNotNull(recurringServiceTypeRepository.searchByName("")); } @@ -98,20 +99,20 @@ public void assertAndVerifyGetByNameCallsDatabaseQueryMethod1Times() { MatrixCursor cursor = new MatrixCursor(columns); cursor.addRow(new Object[]{1l, "", "Name", "", "", "", "", "", "", "", "", "", "", 1l}); Mockito.when(sqliteDatabase - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class))).thenReturn(cursor); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull())).thenReturn(cursor); Mockito.when(recurringServiceTypeRepository.getReadableDatabase()).thenReturn(sqliteDatabase); recurringServiceTypeRepository.getByName("Vitamin A1"); Mockito.verify(sqliteDatabase, times(1)) - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class)); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull()); } @Test @@ -120,19 +121,19 @@ public void assertAndVerifySearchByTypecallsDatabaseQueryMethod1Times() { MatrixCursor cursor = new MatrixCursor(columns); cursor.addRow(new Object[]{1l, "", "", "", "", "", "", "", "", "", "", "", "", 1l}); Mockito.when(sqliteDatabase - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class))).thenReturn(cursor); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull())).thenReturn(cursor); Mockito.when(recurringServiceTypeRepository.getReadableDatabase()).thenReturn(sqliteDatabase); recurringServiceTypeRepository.findByType("Type"); Mockito.verify(sqliteDatabase, times(1)) - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class)); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull()); Assert.assertNotNull(recurringServiceTypeRepository.findByType("")); } @@ -143,40 +144,40 @@ public void verifyFindcallsDatabaseQueryMethod1Times() { cursor.addRow(new Object[]{1l, "", "", "", "", "", "", "", "", "", "", "", "", 1l}); Mockito.when(sqliteDatabase - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class))).thenReturn(cursor); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull())).thenReturn(cursor); Mockito.when(recurringServiceTypeRepository.getReadableDatabase()).thenReturn(sqliteDatabase); recurringServiceTypeRepository.find(1l, sqliteDatabase); Mockito.verify(sqliteDatabase, times(1)) - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class)); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull()); } @Test public void assertAndVerifyAddCallsDatabaseDatabaseMethod0TimesInCaseOfNullVaccine() { recurringServiceTypeRepository.add(null, sqliteDatabase); Mockito.verify(sqliteDatabase, times(0)) - .insert(org.mockito.ArgumentMatchers.anyString(), (String) org.mockito.ArgumentMatchers.isNull(), - org.mockito.ArgumentMatchers.any(ContentValues.class)); + .insert(ArgumentMatchers.anyString(), (String) ArgumentMatchers.isNull(), + ArgumentMatchers.any(ContentValues.class)); Mockito.verify(sqliteDatabase, times(0)) - .update(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(ContentValues.class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class)); + .update(ArgumentMatchers.anyString(), ArgumentMatchers.any(ContentValues.class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class)); ServiceType serviceType = new ServiceType(); serviceType.setId(1l); RecurringServiceTypeRepository spy = Mockito.spy(recurringServiceTypeRepository); Mockito.doReturn(serviceType).when(spy) - .find(org.mockito.ArgumentMatchers.anyLong(), org.mockito.ArgumentMatchers.any(SQLiteDatabase.class)); + .find(ArgumentMatchers.anyLong(), ArgumentMatchers.any(SQLiteDatabase.class)); spy.add(serviceType); Mockito.verify(sqliteDatabase, times(0)) - .update(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(ContentValues.class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class)); + .update(ArgumentMatchers.anyString(), ArgumentMatchers.any(ContentValues.class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class)); Assert.assertNull(recurringServiceTypeRepository.find(0l)); } @@ -189,19 +190,19 @@ public void verifyFetchAllTypecallsDatabaseQueryMethod1Times() { cursor.addRow(new Object[]{1l, "", "a_b", "", "", "", "", "", "", "", "", "", "", 1l}); Mockito.when(sqliteDatabase - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.anyString())).thenReturn(cursor); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.anyString())).thenReturn(cursor); Mockito.when(recurringServiceTypeRepository.getReadableDatabase()).thenReturn(sqliteDatabase); recurringServiceTypeRepository.fetchAll(); Mockito.verify(sqliteDatabase, times(1)) - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.anyString()); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.anyString()); } @Test @@ -211,12 +212,12 @@ public void verifyFetchTypescallsDatabaseQueryMethod1Times() { cursor.addRow(new Object[]{1l, "", "", "", "", "", "", "", "", "", "", "", "", 1l}); Mockito.when(sqliteDatabase - .rawQuery(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.isNull(String[].class))) + .rawQuery(ArgumentMatchers.anyString(), ArgumentMatchers.isNull())) .thenReturn(cursor); Mockito.when(recurringServiceTypeRepository.getReadableDatabase()).thenReturn(sqliteDatabase); recurringServiceTypeRepository.fetchTypes(); Mockito.verify(sqliteDatabase, times(1)) - .rawQuery(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.isNull(String[].class)); + .rawQuery(ArgumentMatchers.anyString(), ArgumentMatchers.isNull()); } @Test @@ -227,8 +228,8 @@ public void verifyDeletecallsDatabaseDeleteMethod1Times() { Mockito.when(recurringServiceTypeRepositoryspy.getWritableDatabase()).thenReturn(sqliteDatabase); recurringServiceTypeRepositoryspy.deleteServiceType(0l); Mockito.verify(sqliteDatabase, times(1)) - .delete(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.anyString(), - org.mockito.ArgumentMatchers.any(String[].class)); + .delete(ArgumentMatchers.anyString(), ArgumentMatchers.anyString(), + ArgumentMatchers.any(String[].class)); } @Test @@ -255,7 +256,7 @@ public void verifyFetchTypesOverrideCallTheSameMethod() throws Exception { cursor.addRow(new Object[]{1l, "", "", "", "", "", "", "", "", "", "", "", "", 1l}); Mockito.when(sqliteDatabase - .rawQuery(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.isNull(String[].class))) + .rawQuery(ArgumentMatchers.anyString(), ArgumentMatchers.isNull())) .thenReturn(cursor); recurringServiceTypeRepositoryspy.fetchTypes(); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/VaccineNameRepositoryTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/VaccineNameRepositoryTest.java index 892ad092..352a383a 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/VaccineNameRepositoryTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/VaccineNameRepositoryTest.java @@ -6,6 +6,7 @@ import org.junit.Before; import org.junit.Test; +import org.mockito.ArgumentMatchers; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -60,7 +61,7 @@ public void assertInstantiatesSuccessfullyOnConstructorCall() { @Test public void verifyCreateTableCallsExecuteSQLMethod() { VaccineNameRepository.createTable(sqliteDatabase); - Mockito.verify(sqliteDatabase, Mockito.times(1)).execSQL(org.mockito.ArgumentMatchers.anyString()); + Mockito.verify(sqliteDatabase, Mockito.times(1)).execSQL(ArgumentMatchers.anyString()); } @Test @@ -69,8 +70,8 @@ public void verifyAddCallsDatabaseDatabaseMethod1TimesInCaseOfNonNullVaccineNull VaccineName vaccineName = new VaccineName(0l, "", "", "", "", "", ""); vaccineNameRepository.add(vaccineName); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .insert(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.any(ContentValues.class)); + .insert(ArgumentMatchers.anyString(), ArgumentMatchers.isNull(), + ArgumentMatchers.any(ContentValues.class)); } @Test @@ -79,19 +80,19 @@ public void verifyAddCallsDatabaseDatabaseMethod1TimesInCaseOfNonNullVaccineNotN VaccineName vaccineName = new VaccineName(1l, "", "", "", "", "", ""); vaccineNameRepository.add(vaccineName); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .update(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(ContentValues.class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class)); + .update(ArgumentMatchers.anyString(), ArgumentMatchers.any(ContentValues.class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class)); } @Test public void verifyAddCallsDatabaseDatabaseMethod0TimesInCaseOfNullVaccine() { vaccineNameRepository.add(null); Mockito.verify(sqliteDatabase, Mockito.times(0)) - .insert(org.mockito.ArgumentMatchers.anyString(), (String) org.mockito.ArgumentMatchers.isNull(), - org.mockito.ArgumentMatchers.any(ContentValues.class)); + .insert(ArgumentMatchers.anyString(), (String) ArgumentMatchers.isNull(), + ArgumentMatchers.any(ContentValues.class)); Mockito.verify(sqliteDatabase, Mockito.times(0)) - .update(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(ContentValues.class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class)); + .update(ArgumentMatchers.anyString(), ArgumentMatchers.any(ContentValues.class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class)); } } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/VaccineRepositoryTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/VaccineRepositoryTest.java index 82b2efe6..53046cbd 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/VaccineRepositoryTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/VaccineRepositoryTest.java @@ -95,11 +95,11 @@ public void assertFindUnSyncedBeforeTimeTest() { org.junit.Assert.assertNotNull(vaccineRepository.findUnSyncedBeforeTime(magic10)); Mockito.when(vaccineRepository.getReadableDatabase()).thenReturn(sqliteDatabase); Mockito.when(sqliteDatabase - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class))).thenReturn(cursor); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull())).thenReturn(cursor); org.junit.Assert.assertNotNull(vaccineRepository.findUnSyncedBeforeTime(magic10)); } @@ -122,7 +122,7 @@ public void verifyUpdateHia2StatusTest() { @Test public void verifyCreateTableTest() { VaccineRepository.createTable(sqliteDatabase); - Mockito.verify(sqliteDatabase, Mockito.times(3)).execSQL(org.mockito.ArgumentMatchers.anyString()); + Mockito.verify(sqliteDatabase, Mockito.times(3)).execSQL(ArgumentMatchers.anyString()); } @Test @@ -135,26 +135,26 @@ public void verifyaddTestShouldCallInsertAndUpdate1Time() { //null vaccine vaccineRepository.add(null); Mockito.verify(sqliteDatabase, Mockito.times(0)) - .insert(org.mockito.ArgumentMatchers.anyString(), (String) org.mockito.ArgumentMatchers.isNull(), - org.mockito.ArgumentMatchers.any(ContentValues.class)); + .insert(ArgumentMatchers.anyString(), (String) ArgumentMatchers.isNull(), + ArgumentMatchers.any(ContentValues.class)); Mockito.verify(sqliteDatabase, Mockito.times(0)) - .update(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(ContentValues.class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class)); + .update(ArgumentMatchers.anyString(), ArgumentMatchers.any(ContentValues.class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class)); //notnull vaccine Mockito.when(vaccineRepository.getWritableDatabase()).thenReturn(sqliteDatabase); Vaccine vaccine = new Vaccine(); vaccine.setId(0l); vaccineRepository.add(vaccine); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .update(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(ContentValues.class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class)); + .update(ArgumentMatchers.anyString(), ArgumentMatchers.any(ContentValues.class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class)); //null id vaccineRepository.add(new Vaccine()); Mockito.when(vaccineRepository.getWritableDatabase()).thenReturn(sqliteDatabase); vaccineRepository.add(new Vaccine()); Mockito.verify(sqliteDatabase, Mockito.times(2)) - .insert(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.any(ContentValues.class)); + .insert(ArgumentMatchers.anyString(), ArgumentMatchers.isNull(), + ArgumentMatchers.any(ContentValues.class)); Vaccine newVaccine = new Vaccine(0l, VaccineTest.BASEENTITYID, VaccineTest.PROGRAMCLIENTID, VaccineTest.NAME, 0, new Date(), VaccineTest.ANMID, VaccineTest.LOCATIONID, VaccineTest.SYNCSTATUS, VaccineTest.HIA2STATUS, 0l, @@ -162,12 +162,12 @@ public void verifyaddTestShouldCallInsertAndUpdate1Time() { VaccineRepository vaccineRepositoryspy = Mockito.spy(vaccineRepository); Vaccine vaccineToReturn = Mockito.mock(Vaccine.class); - Mockito.when(vaccineRepositoryspy.findUnique(org.mockito.ArgumentMatchers.any(SQLiteDatabase.class), - org.mockito.ArgumentMatchers.any(Vaccine.class))).thenReturn(vaccineToReturn); + Mockito.when(vaccineRepositoryspy.findUnique(ArgumentMatchers.any(SQLiteDatabase.class), + ArgumentMatchers.any(Vaccine.class))).thenReturn(vaccineToReturn); vaccineRepositoryspy.add(newVaccine); Mockito.verify(sqliteDatabase, Mockito.times(2)) - .update(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(ContentValues.class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class)); + .update(ArgumentMatchers.anyString(), ArgumentMatchers.any(ContentValues.class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class)); } @Test @@ -209,15 +209,15 @@ public void verifyUpdateTestCallsDatabaseUpdate1Time() { //exception test database null vaccineRepository.update(null, vaccine); Mockito.verify(sqliteDatabase, Mockito.times(0)) - .update(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(ContentValues.class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class)); + .update(ArgumentMatchers.anyString(), ArgumentMatchers.any(ContentValues.class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class)); //vaccine null test vaccineRepository.update(sqliteDatabase, null); //vaccine and database not null vaccineRepository.update(sqliteDatabase, vaccine); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .update(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(ContentValues.class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class)); + .update(ArgumentMatchers.anyString(), ArgumentMatchers.any(ContentValues.class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class)); } @Test @@ -227,19 +227,19 @@ public void verifyFindbyEntityIdTestCallsDatabaseQuery1Time() { cursor.addRow(new Object[]{1l, "", "", magicName, magic10, magicTime, "", "", "", "", 1l, "", "", 1}); Mockito.when(sqliteDatabase - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class))).thenReturn(cursor); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull())).thenReturn(cursor); Mockito.when(vaccineRepository.getReadableDatabase()).thenReturn(sqliteDatabase); vaccineRepository.findByEntityId(ENTITYID); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class)); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull()); } @Test @@ -249,19 +249,19 @@ public void verifyFindTwentyFourTestCallsDatabaseQuery1Time() { cursor.addRow(new Object[]{1l, "", "", magicName, magic10, magicTime, "", "", "", "", 1l, "", "", 1}); Mockito.when(sqliteDatabase - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class))).thenReturn(cursor); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull())).thenReturn(cursor); Mockito.when(vaccineRepository.getReadableDatabase()).thenReturn(sqliteDatabase); vaccineRepository.findLatestTwentyFourHoursByEntityId(ENTITYID); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class)); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull()); } @Test @@ -272,19 +272,19 @@ public void verifyFindTestCallsDatabaseQuery1Time() { cursor.addRow(new Object[]{1l, "", "", magicName, magic10, magicTime, "", "", "", "", 1l, "", "", 1}); Mockito.when(sqliteDatabase - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class))).thenReturn(cursor); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull())).thenReturn(cursor); Mockito.when(vaccineRepository.getReadableDatabase()).thenReturn(sqliteDatabase); vaccineRepository.find(1l); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class)); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull()); } @@ -299,20 +299,20 @@ public void findbyUniqueTest() { vaccine.setFormSubmissionId(FORMSUBMISSIONID); vaccine.setEventId(EVENTID); Mockito.when(sqliteDatabase - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.isNull(String.class))) + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.anyString(), ArgumentMatchers.isNull())) .thenReturn(cursor); Mockito.when(vaccineRepository.getReadableDatabase()).thenReturn(sqliteDatabase); vaccineRepository.findUnique(null, vaccine); vaccineRepository.findUnique(sqliteDatabase, null); vaccineRepository.findUnique(sqliteDatabase, vaccine); Mockito.verify(sqliteDatabase, Mockito.times(2)) - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.isNull(String.class)); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.anyString(), ArgumentMatchers.isNull()); } @Test @@ -327,8 +327,8 @@ public void deleteVaccineTest() { Mockito.when(vaccineRepositoryspy.getWritableDatabase()).thenReturn(sqliteDatabase); vaccineRepositoryspy.deleteVaccine(0l); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .delete(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.anyString(), - org.mockito.ArgumentMatchers.any(String[].class)); + .delete(ArgumentMatchers.anyString(), ArgumentMatchers.anyString(), + ArgumentMatchers.any(String[].class)); } @Test @@ -337,8 +337,8 @@ public void deleteVaccineByBaseEntityIdAndName() { Mockito.when(vaccineRepositoryspy.getWritableDatabase()).thenReturn(sqliteDatabase); vaccineRepositoryspy.deleteVaccine("baseEntityID", "opv_1"); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .delete(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.anyString(), - org.mockito.ArgumentMatchers.any(String[].class)); + .delete(ArgumentMatchers.anyString(), ArgumentMatchers.anyString(), + ArgumentMatchers.any(String[].class)); } @Test @@ -355,15 +355,15 @@ public void closeTest() { Mockito.when(vaccineRepository.getWritableDatabase()).thenReturn(sqliteDatabase); vaccineRepository.close(null); Mockito.verify(vaccineRepository.getWritableDatabase(), Mockito.times(0)) - .update(org.mockito.ArgumentMatchers.anyString(), (ContentValues) org.mockito.ArgumentMatchers.any(), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.eq(new String[]{"5"})); + .update(ArgumentMatchers.anyString(), (ContentValues) ArgumentMatchers.any(), + ArgumentMatchers.anyString(), ArgumentMatchers.eq(new String[]{"5"})); Mockito.when(vaccineRepository.getWritableDatabase()).thenReturn(sqliteDatabase); vaccineRepository.close(5l); Mockito.verify(vaccineRepository.getWritableDatabase(), Mockito.times(1)) - .update(org.mockito.ArgumentMatchers.eq(VaccineRepository.VACCINE_TABLE_NAME), - (ContentValues) org.mockito.ArgumentMatchers.any(), org.mockito.ArgumentMatchers.anyString(), - org.mockito.ArgumentMatchers.eq(new String[]{"5"})); + .update(ArgumentMatchers.eq(VaccineRepository.VACCINE_TABLE_NAME), + (ContentValues) ArgumentMatchers.any(), ArgumentMatchers.anyString(), + ArgumentMatchers.eq(new String[]{"5"})); } @Test diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/VaccineTypeRepositoryTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/VaccineTypeRepositoryTest.java index f14b78ed..40ebcf42 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/VaccineTypeRepositoryTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/repository/VaccineTypeRepositoryTest.java @@ -2,7 +2,7 @@ import android.content.ContentValues; -import junit.framework.Assert; +import org.junit.Assert; import net.sqlcipher.Cursor; import net.sqlcipher.MatrixCursor; @@ -10,6 +10,7 @@ import org.junit.Before; import org.junit.Test; +import org.mockito.ArgumentMatchers; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -65,7 +66,7 @@ public void assertGetDosesPerVialTest() { VaccineTypeRepository vaccineTypeRepository = new VaccineTypeRepository(commonFtsObject, alertService); // Mockito.when(vaccineTypeRepository.getReadableDatabase()).thenReturn(sqliteDatabase); VaccineTypeRepository spy = Mockito.spy(vaccineTypeRepository); - PowerMockito.doReturn(list).when(spy).findIDByName(org.mockito.ArgumentMatchers.anyString()); + PowerMockito.doReturn(list).when(spy).findIDByName(ArgumentMatchers.anyString()); Assert.assertEquals(spy.getDosesPerVial(""), magic10); } @@ -78,7 +79,7 @@ public void assertInstantiatesSuccessfullyOnConstructorCall() { @Test public void verifyCreateTableCallsExecuteSQLMethod() { VaccineTypeRepository.createTable(sqliteDatabase); - Mockito.verify(sqliteDatabase, Mockito.times(1)).execSQL(org.mockito.ArgumentMatchers.anyString()); + Mockito.verify(sqliteDatabase, Mockito.times(1)).execSQL(ArgumentMatchers.anyString()); } @Test @@ -87,8 +88,8 @@ public void verifyAddCallsDatabaseDatabaseMethod1TimesInCaseOfNonNullVaccineNull VaccineType vaccineType = new VaccineType(null, 0, "", "", "", ""); vaccineTypeRepository.add(vaccineType, sqliteDatabase); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .insert(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.any(ContentValues.class)); + .insert(ArgumentMatchers.anyString(), ArgumentMatchers.isNull(), + ArgumentMatchers.any(ContentValues.class)); } @Test @@ -97,38 +98,38 @@ public void verifyAddCallsDatabaseDatabaseMethod1TimesInCaseOfNonNullVaccineNotN VaccineType vaccineType = new VaccineType(0l, 0, "", "", "", ""); vaccineTypeRepository.add(vaccineType, sqliteDatabase); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .update(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(ContentValues.class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class)); + .update(ArgumentMatchers.anyString(), ArgumentMatchers.any(ContentValues.class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class)); } @Test public void verifyAddCallsDatabaseDatabaseMethod0TimesInCaseOfNullVaccine() { vaccineTypeRepository.add(null, sqliteDatabase); Mockito.verify(sqliteDatabase, Mockito.times(0)) - .insert(org.mockito.ArgumentMatchers.anyString(), (String) org.mockito.ArgumentMatchers.isNull(), - org.mockito.ArgumentMatchers.any(ContentValues.class)); + .insert(ArgumentMatchers.anyString(), (String) ArgumentMatchers.isNull(), + ArgumentMatchers.any(ContentValues.class)); Mockito.verify(sqliteDatabase, Mockito.times(0)) - .update(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(ContentValues.class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class)); + .update(ArgumentMatchers.anyString(), ArgumentMatchers.any(ContentValues.class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class)); } @Test public void verifyFindbyEntityIDcallsDatabaseQueryMethod1Times() { Cursor cursor = PowerMockito.mock(Cursor.class); Mockito.when(sqliteDatabase - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class))).thenReturn(cursor); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull())).thenReturn(cursor); Mockito.when(vaccineTypeRepository.getReadableDatabase()).thenReturn(sqliteDatabase); vaccineTypeRepository.findIDByName("Name"); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class)); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull()); } @Test @@ -139,21 +140,21 @@ public void verifyFindallVaccineTypcallsDatabaseQueryMethod1Times() { cursor.addRow(new Object[]{1l, 1, "", "", "", ""}); Mockito.when(sqliteDatabase - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class))).thenReturn(cursor); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull())).thenReturn(cursor); Mockito.when(vaccineTypeRepository.getReadableDatabase()).thenReturn(sqliteDatabase); vaccineTypeRepository.getAllVaccineTypes(sqliteDatabase); Mockito.verify(sqliteDatabase, Mockito.times(1)) - .query(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.any(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String[].class), - org.mockito.ArgumentMatchers.isNull(String.class), org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class), - org.mockito.ArgumentMatchers.isNull(String.class)); + .query(ArgumentMatchers.anyString(), ArgumentMatchers.any(String[].class), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), ArgumentMatchers.isNull(), + ArgumentMatchers.isNull(), + ArgumentMatchers.isNull()); } } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/RecurringIntentServiceTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/RecurringIntentServiceTest.java index bbf01c82..07e564ce 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/RecurringIntentServiceTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/RecurringIntentServiceTest.java @@ -16,7 +16,7 @@ import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.rule.PowerMockRule; import org.powermock.reflect.Whitebox; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.smartregister.immunization.BaseUnitTest; import org.smartregister.immunization.ImmunizationLibrary; import org.smartregister.immunization.domain.ServiceRecord; @@ -64,9 +64,8 @@ public void setUp() { @Test public void onHandleIntentTest() { - Application application = RuntimeEnvironment.application; + Application application = ApplicationProvider.getApplicationContext(); Intent intent = new Intent(application, RecurringIntentService.class); - //List spyServiceRecordList = Mockito.spy(serviceRecordList); RecurringIntentService recurringIntentService = Mockito.spy(new RecurringIntentService()); PowerMockito.mockStatic(ImmunizationLibrary.class); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/ServiceIntentServiceRoboTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/ServiceIntentServiceRoboTest.java index d2271a30..f2346fde 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/ServiceIntentServiceRoboTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/ServiceIntentServiceRoboTest.java @@ -1,7 +1,5 @@ package org.smartregister.immunization.service.intent; -import android.os.Build; - import org.junit.Assert; import org.junit.Rule; import org.junit.Test; @@ -34,7 +32,7 @@ * Created by onaio on 30/08/2017. */ @RunWith(RobolectricTestRunner.class) -@Config(shadows = {ShadowJsonFormUtils.class}, sdk = Build.VERSION_CODES.P) +@Config(shadows = {ShadowJsonFormUtils.class}) public class ServiceIntentServiceRoboTest { @Rule @@ -46,7 +44,7 @@ public void onHandleIntentShouldGenerateValidJsonFieldsForEventCreation() { org.smartregister.Context context = Mockito.mock(org.smartregister.Context.class); Mockito.doReturn(new AppProperties()).when(context).getAppProperties(); - ImmunizationLibrary.init(context, Mockito.mock(Repository.class), Mockito.mock(CommonFtsObject.class), 1, 1); + ImmunizationLibrary.init(context, Mockito.mock(Repository.class), Mockito.mock(CommonFtsObject.class), 1, "1.0.0", 1); RecurringServiceRecordRepository recurringServiceRecordRepository = Mockito.mock(RecurringServiceRecordRepository.class); RecurringServiceTypeRepository recurringServiceTypeRepository = Mockito.mock(RecurringServiceTypeRepository.class); @@ -88,6 +86,6 @@ public void onHandleIntentShouldGenerateValidJsonFieldsForEventCreation() { recurringIntentService.onHandleIntent(null); HashMap>> methodCalls = ShadowJsonFormUtils.getMethodCalls(); - Assert.assertEquals(2, methodCalls.get("createServiceEvent(Context, ServiceRecord, String, String, JSONArray)").size()); + Assert.assertEquals(2, methodCalls.get("createServiceEvent(ServiceRecord, String, String, JSONArray, Context)").size()); } } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/VaccineIntentServiceRoboTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/VaccineIntentServiceRoboTest.java index 20abf7e3..67b0511a 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/VaccineIntentServiceRoboTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/VaccineIntentServiceRoboTest.java @@ -1,7 +1,5 @@ package org.smartregister.immunization.service.intent; -import android.os.Build; - import org.junit.Assert; import org.junit.Rule; import org.junit.Test; @@ -32,7 +30,7 @@ * Created by onaio on 30/08/2017. */ @RunWith(RobolectricTestRunner.class) -@Config(shadows = {ShadowJsonFormUtils.class}, sdk = Build.VERSION_CODES.P) +@Config(shadows = {ShadowJsonFormUtils.class}) public class VaccineIntentServiceRoboTest { @@ -47,7 +45,7 @@ public void onHandleIntentShouldGenerateValidJsonFieldsForEventCreation() { org.smartregister.Context context = Mockito.mock(org.smartregister.Context.class); Mockito.doReturn(new AppProperties()).when(context).getAppProperties(); - ImmunizationLibrary.init(context, Mockito.mock(Repository.class), Mockito.mock(CommonFtsObject.class), 1, 1); + ImmunizationLibrary.init(context, Mockito.mock(Repository.class), Mockito.mock(CommonFtsObject.class), 1, "1.0.0", 1); VaccineRepository vaccineRepository = Mockito.mock(VaccineRepository.class); ReflectionHelpers.setField(vaccineIntentService, "vaccineRepository", vaccineRepository); @@ -71,6 +69,6 @@ public void onHandleIntentShouldGenerateValidJsonFieldsForEventCreation() { vaccineIntentService.onHandleIntent(null); HashMap>> methodCalls = ShadowJsonFormUtils.getMethodCalls(); - Assert.assertEquals(2, methodCalls.get("createVaccineEvent(Context, Vaccine, String, String, JSONArray)").size()); + Assert.assertEquals(2, methodCalls.get("createVaccineEvent(Vaccine, String, String, JSONArray, Context)").size()); } } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/VaccineIntentServiceTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/VaccineIntentServiceTest.java index 6d32ba06..81148bb6 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/VaccineIntentServiceTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/VaccineIntentServiceTest.java @@ -4,11 +4,14 @@ import android.content.Context; import android.content.Intent; +import androidx.test.core.app.ApplicationProvider; + import org.jetbrains.annotations.NotNull; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; +import org.mockito.ArgumentMatchers; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; @@ -17,7 +20,6 @@ import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.rule.PowerMockRule; import org.powermock.reflect.Whitebox; -import org.robolectric.RuntimeEnvironment; import org.smartregister.immunization.BaseUnitTest; import org.smartregister.immunization.ImmunizationLibrary; import org.smartregister.immunization.domain.Vaccine; @@ -39,8 +41,6 @@ import java.util.List; import java.util.Map; -import static org.mockito.ArgumentMatchers.any; - /** * Created by onaio on 30/08/2017. */ @@ -76,7 +76,7 @@ public void assertDefaultConstructorsCreateNonNullObjectOnInstantiation() { @Test public void onHandleIntentTest() { - Application application = RuntimeEnvironment.application; + Application application = ApplicationProvider.getApplicationContext(); Intent intent = new Intent(application, VaccineIntentService.class); VaccineIntentService vaccineIntentService = Mockito.spy(new VaccineIntentService()); @@ -91,8 +91,8 @@ public void onHandleIntentTest() { PowerMockito.when(ImmunizationLibrary.getInstance().vaccineRepository()).thenReturn(vaccineRepository); Assert.assertNotNull(vaccineRepository); - PowerMockito.when(VaccinatorUtils.getSupportedVaccines(any(Context.class))).thenReturn(availableVaccines); - PowerMockito.when(VaccinatorUtils.getSpecialVaccines(any(Context.class))).thenReturn(specialJsonMappingVaccines); + PowerMockito.when(VaccinatorUtils.getSupportedVaccines(ArgumentMatchers.any(Context.class))).thenReturn(availableVaccines); + PowerMockito.when(VaccinatorUtils.getSpecialVaccines(ArgumentMatchers.any(Context.class))).thenReturn(specialJsonMappingVaccines); Assert.assertNotNull(availableVaccines); Assert.assertNotNull(specialJsonMappingVaccines); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/VaccineSchedulesUpdateIntentServiceTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/VaccineSchedulesUpdateIntentServiceTest.java index f5a1ed0a..29c34f20 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/VaccineSchedulesUpdateIntentServiceTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/service/intent/VaccineSchedulesUpdateIntentServiceTest.java @@ -1,7 +1,5 @@ package org.smartregister.immunization.service.intent; -import android.os.Build; - import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -11,7 +9,6 @@ import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; -import org.robolectric.annotation.Config; import org.smartregister.immunization.domain.VaccinationClient; import org.smartregister.immunization.util.IMConstants; @@ -22,7 +19,6 @@ */ @RunWith(RobolectricTestRunner.class) -@Config(sdk = Build.VERSION_CODES.P) public class VaccineSchedulesUpdateIntentServiceTest { @Rule diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/util/JsonFormUtilsTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/util/JsonFormUtilsTest.java new file mode 100644 index 00000000..9b1f249c --- /dev/null +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/util/JsonFormUtilsTest.java @@ -0,0 +1,195 @@ +package org.smartregister.immunization.util; + +import org.json.JSONArray; +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.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; +import org.robolectric.RobolectricTestRunner; +import org.smartregister.AllConstants; +import org.smartregister.Context; +import org.smartregister.clientandeventmodel.Event; +import org.smartregister.commonregistry.CommonFtsObject; +import org.smartregister.immunization.ImmunizationLibrary; +import org.smartregister.immunization.db.VaccineRepo; +import org.smartregister.immunization.domain.ServiceRecord; +import org.smartregister.immunization.domain.Vaccine; +import org.smartregister.immunization.service.intent.RecurringIntentService; +import org.smartregister.immunization.service.intent.VaccineIntentService; +import org.smartregister.repository.AllSharedPreferences; +import org.smartregister.repository.EventClientRepository; +import org.smartregister.repository.Repository; +import org.smartregister.util.AppProperties; + +import java.util.Locale; + + +@RunWith(RobolectricTestRunner.class) +public class JsonFormUtilsTest { + + protected static final String TEST_BASE_ENTITY_ID = "test-base-entity-id"; + protected static final String TEST_STRING = "test-string-param"; + + @Rule + public MockitoRule mockitoRule = MockitoJUnit.rule(); + + @Mock + private EventClientRepository eventClientRepository; + + @Mock + private AllSharedPreferences allSharedPreferences; + + @Mock + private Context openSRPContext; + + @Mock + private AppProperties appProperties; + + @Before + public void setUp() { + ImmunizationLibrary.destroy();//Clear any static instance + + Mockito.doReturn(appProperties).when(openSRPContext).getAppProperties(); + ImmunizationLibrary.init(openSRPContext, Mockito.mock(Repository.class), Mockito.mock(CommonFtsObject.class), 4, "4.0.0", 2); + } + + @After + public void tearDown() { + ImmunizationLibrary.destroy(); + } + + @Test + public void testCreateVaccineEventAddsCorrectEventToRepository() throws JSONException { + + Mockito.doReturn(eventClientRepository).when(openSRPContext).getEventClientRepository(); + Mockito.doReturn(allSharedPreferences).when(openSRPContext).allSharedPreferences(); + Mockito.doReturn(AllConstants.DATA_CAPTURE_STRATEGY.NORMAL).when(allSharedPreferences).fetchCurrentDataStrategy(); + + Vaccine vaccine = new Vaccine(); + vaccine.setAnmId("demo"); + vaccine.setName(VaccineRepo.Vaccine.bcg.name().toLowerCase(Locale.ENGLISH)); + vaccine.setBaseEntityId(TEST_BASE_ENTITY_ID); + vaccine.setChildLocationId(TEST_STRING); + vaccine.setTeam(TEST_STRING); + vaccine.setTeamId(TEST_STRING); + vaccine.setLocationId(TEST_STRING); + + JSONArray jsonArray = new JSONArray(); + + String entityId = "1410AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + String dateDataType = "date"; + String concept = "concept"; + + JSONObject vaccineJsonObject = new JSONObject(); + vaccineJsonObject.put(JsonFormUtils.KEY, vaccine.getName()); + vaccineJsonObject.put(JsonFormUtils.OPENMRS_ENTITY, concept); + vaccineJsonObject.put(JsonFormUtils.OPENMRS_ENTITY_ID, entityId); + vaccineJsonObject.put(JsonFormUtils.OPENMRS_ENTITY_PARENT, TEST_STRING); + vaccineJsonObject.put(JsonFormUtils.OPENMRS_DATA_TYPE, dateDataType); + vaccineJsonObject.put(JsonFormUtils.VALUE, "2022-07-10"); + jsonArray.put(vaccineJsonObject); + + JsonFormUtils.createVaccineEvent(vaccine, VaccineIntentService.EVENT_TYPE, VaccineIntentService.ENTITY_TYPE, jsonArray, openSRPContext); + + ArgumentCaptor stringArgumentCaptor = ArgumentCaptor.forClass(String.class); + ArgumentCaptor jsonObjectArgumentCaptor = ArgumentCaptor.forClass(JSONObject.class); + + Mockito.verify(eventClientRepository).addEvent(stringArgumentCaptor.capture(), jsonObjectArgumentCaptor.capture()); + + Assert.assertNotNull(stringArgumentCaptor.getValue()); + Assert.assertEquals(TEST_BASE_ENTITY_ID, stringArgumentCaptor.getValue()); + JSONObject jsonObject = jsonObjectArgumentCaptor.getValue(); + Assert.assertNotNull(jsonObject); + + Event event = org.smartregister.util.JsonFormUtils.gson.fromJson(jsonObject.toString(), Event.class); + Assert.assertNotNull(event); + Assert.assertEquals(TEST_BASE_ENTITY_ID, event.getBaseEntityId()); + Assert.assertEquals(TEST_STRING, event.getChildLocationId()); + Assert.assertEquals(TEST_STRING, event.getLocationId()); + Assert.assertEquals(VaccineIntentService.EVENT_TYPE, event.getEventType()); + Assert.assertEquals("demo", event.getProviderId()); + Assert.assertEquals(VaccineIntentService.ENTITY_TYPE, event.getEntityType()); + Assert.assertEquals(4, event.getClientApplicationVersion().intValue()); + Assert.assertEquals("4.0.0", event.getClientApplicationVersionName()); + Assert.assertEquals(2, event.getClientDatabaseVersion().intValue()); + Assert.assertEquals(AllConstants.DATA_STRATEGY, event.getObs().get(0).getFormSubmissionField()); + Assert.assertEquals(AllConstants.DATA_CAPTURE_STRATEGY.NORMAL, event.getObs().get(0).getValue()); + Assert.assertEquals(1, event.getDetails().size()); + Assert.assertTrue(event.getDetails().containsKey(AllConstants.DATA_STRATEGY)); + Assert.assertEquals(AllConstants.DATA_CAPTURE_STRATEGY.NORMAL, event.getDetails().get(AllConstants.DATA_STRATEGY)); + Assert.assertEquals("bcg", event.getObs().get(1).getFormSubmissionField()); + Assert.assertEquals("2022-07-10", event.getObs().get(1).getValue()); + + } + + @Test + public void testCreateServiceEventAddsCorrectEventToRepository() throws JSONException { + Mockito.doReturn(eventClientRepository).when(openSRPContext).getEventClientRepository(); + Mockito.doReturn(allSharedPreferences).when(openSRPContext).allSharedPreferences(); + Mockito.doReturn(AllConstants.DATA_CAPTURE_STRATEGY.ADVANCED).when(allSharedPreferences).fetchCurrentDataStrategy(); + + ServiceRecord service = new ServiceRecord(); + service.setAnmId("demo"); + service.setName("VitaminA"); + service.setBaseEntityId(TEST_BASE_ENTITY_ID); + service.setChildLocationId(TEST_STRING); + service.setTeam(TEST_STRING); + service.setTeamId(TEST_STRING); + service.setLocationId(TEST_STRING); + + JSONArray jsonArray = new JSONArray(); + + String entityId = "1639AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + String dateDataType = "date"; + String concept = "concept"; + + JSONObject serviceJsonObject = new JSONObject(); + serviceJsonObject.put(JsonFormUtils.KEY, service.getName()); + serviceJsonObject.put(JsonFormUtils.OPENMRS_ENTITY, concept); + serviceJsonObject.put(JsonFormUtils.OPENMRS_ENTITY_ID, entityId); + serviceJsonObject.put(JsonFormUtils.OPENMRS_ENTITY_PARENT, TEST_STRING); + serviceJsonObject.put(JsonFormUtils.OPENMRS_DATA_TYPE, dateDataType); + serviceJsonObject.put(JsonFormUtils.VALUE, "2022-05-10"); + jsonArray.put(serviceJsonObject); + + JsonFormUtils.createServiceEvent(service, RecurringIntentService.EVENT_TYPE, RecurringIntentService.ENTITY_TYPE, jsonArray, openSRPContext); + + ArgumentCaptor stringArgumentCaptor = ArgumentCaptor.forClass(String.class); + ArgumentCaptor jsonObjectArgumentCaptor = ArgumentCaptor.forClass(JSONObject.class); + + Mockito.verify(eventClientRepository).addEvent(stringArgumentCaptor.capture(), jsonObjectArgumentCaptor.capture()); + + Assert.assertNotNull(stringArgumentCaptor.getValue()); + Assert.assertEquals(TEST_BASE_ENTITY_ID, stringArgumentCaptor.getValue()); + JSONObject jsonObject = jsonObjectArgumentCaptor.getValue(); + Assert.assertNotNull(jsonObject); + + Event event = org.smartregister.util.JsonFormUtils.gson.fromJson(jsonObject.toString(), Event.class); + Assert.assertNotNull(event); + Assert.assertEquals(TEST_BASE_ENTITY_ID, event.getBaseEntityId()); + Assert.assertEquals(TEST_STRING, event.getChildLocationId()); + Assert.assertEquals(TEST_STRING, event.getLocationId()); + Assert.assertEquals(RecurringIntentService.EVENT_TYPE, event.getEventType()); + Assert.assertEquals("demo", event.getProviderId()); + Assert.assertEquals(RecurringIntentService.ENTITY_TYPE, event.getEntityType()); + Assert.assertEquals(4, event.getClientApplicationVersion().intValue()); + Assert.assertEquals("4.0.0", event.getClientApplicationVersionName()); + Assert.assertEquals(2, event.getClientDatabaseVersion().intValue()); + Assert.assertEquals(AllConstants.DATA_STRATEGY, event.getObs().get(0).getFormSubmissionField()); + Assert.assertEquals(AllConstants.DATA_CAPTURE_STRATEGY.ADVANCED, event.getObs().get(0).getValue()); + Assert.assertEquals(1, event.getDetails().size()); + Assert.assertTrue(event.getDetails().containsKey(AllConstants.DATA_STRATEGY)); + Assert.assertEquals(AllConstants.DATA_CAPTURE_STRATEGY.ADVANCED, event.getDetails().get(AllConstants.DATA_STRATEGY)); + Assert.assertEquals("VitaminA", event.getObs().get(1).getFormSubmissionField()); + Assert.assertEquals("2022-05-10", event.getObs().get(1).getValue()); + } +} \ No newline at end of file diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/IMDatabaseUtilsTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/IMDatabaseUtilsTest.java index c1280ccd..fedd5817 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/IMDatabaseUtilsTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/IMDatabaseUtilsTest.java @@ -5,6 +5,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; +import org.mockito.ArgumentMatchers; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -65,8 +66,8 @@ public void accessAssetsAndFillDataBaseForVaccineTypesTest() throws Exception { PowerMockito.when(ImmunizationLibrary.getInstance()).thenReturn(immunizationLibrary); PowerMockito.when(immunizationLibrary.vaccineTypeRepository()).thenReturn(vaccineTypeRepository); PowerMockito.when(vaccineTypeRepository.getAllVaccineTypes(null)).thenReturn(new ArrayList()); - PowerMockito.when(Utils.readAssetContents(org.mockito.ArgumentMatchers.any(Context.class), - org.mockito.ArgumentMatchers.any(String.class))).thenReturn(VaccineData.vaccine_type); + PowerMockito.when(Utils.readAssetContents(ArgumentMatchers.any(Context.class), + ArgumentMatchers.any(String.class))).thenReturn(VaccineData.vaccine_type); IMDatabaseUtils.accessAssetsAndFillDataBaseForVaccineTypes(context, null); org.junit.Assert.assertNotNull(imDatabaseUtils); } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/ImageUtilsTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/ImageUtilsTest.java index 4445363a..60cd7d75 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/ImageUtilsTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/ImageUtilsTest.java @@ -5,6 +5,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; +import org.mockito.ArgumentMatchers; import org.mockito.Mock; import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; @@ -101,7 +102,7 @@ public void assertProfilePhotoByClientReturnsDefaultInfantBoyPhoto() { PowerMockito.when(ImmunizationLibrary.getInstance()).thenReturn(immunizationLibrary); PowerMockito.when(ImmunizationLibrary.getInstance().context()).thenReturn(context); PowerMockito.when(ImmunizationLibrary.getInstance().context().imageRepository()).thenReturn(imageRepository); - PowerMockito.when(ImmunizationLibrary.getInstance().context().imageRepository().findByEntityId(org.mockito.ArgumentMatchers.anyString())).thenReturn(null); + PowerMockito.when(ImmunizationLibrary.getInstance().context().imageRepository().findByEntityId(ArgumentMatchers.anyString())).thenReturn(null); Mockito.doReturn("test-base-entity-id").when(commonPersonObjectClient).entityId(); Photo photo = ImageUtils.profilePhotoByClient(commonPersonObjectClient); org.junit.Assert.assertNotNull(photo); @@ -135,7 +136,7 @@ public void assertProfilePhotoByClientReturnsGirlPhotoForFemaleGender() { PowerMockito.when(ImmunizationLibrary.getInstance()).thenReturn(immunizationLibrary); PowerMockito.when(ImmunizationLibrary.getInstance().context()).thenReturn(context); PowerMockito.when(ImmunizationLibrary.getInstance().context().imageRepository()).thenReturn(imageRepository); - PowerMockito.when(ImmunizationLibrary.getInstance().context().imageRepository().findByEntityId(org.mockito.ArgumentMatchers.anyString())).thenReturn(null); + PowerMockito.when(ImmunizationLibrary.getInstance().context().imageRepository().findByEntityId(ArgumentMatchers.anyString())).thenReturn(null); Map childDetails = ImmutableMap.of(IMConstants.KEY.GENDER, "female"); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/RecurringServiceUtilsTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/RecurringServiceUtilsTest.java index d3fdf524..6686466e 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/RecurringServiceUtilsTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/RecurringServiceUtilsTest.java @@ -11,7 +11,7 @@ import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.rule.PowerMockRule; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.smartregister.immunization.BaseUnitTest; import org.smartregister.immunization.ImmunizationLibrary; import org.smartregister.immunization.R; @@ -50,17 +50,17 @@ public void setUp() { public void testGetLastOpenedServiceViewReturnsCorrectView() { List serviceGroups = new ArrayList<>(); - ServiceGroup serviceGroup = new ServiceGroup(RuntimeEnvironment.application); + ServiceGroup serviceGroup = new ServiceGroup(ApplicationProvider.getApplicationContext()); serviceGroup.setModalOpen(false); serviceGroup.setTag(R.id.key, "SG Alpha"); serviceGroups.add(serviceGroup); - serviceGroup = new ServiceGroup(RuntimeEnvironment.application); + serviceGroup = new ServiceGroup(ApplicationProvider.getApplicationContext()); serviceGroup.setModalOpen(true); serviceGroup.setTag(R.id.key, SG_BETA); serviceGroups.add(serviceGroup); - serviceGroup = new ServiceGroup(RuntimeEnvironment.application); + serviceGroup = new ServiceGroup(ApplicationProvider.getApplicationContext()); serviceGroup.setModalOpen(false); serviceGroup.setTag(R.id.key, "SG Gamma"); serviceGroups.add(serviceGroup); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/UtilsTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/UtilsTest.java index ce2e1bfa..f0462b1a 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/UtilsTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/UtilsTest.java @@ -12,7 +12,7 @@ import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.rule.PowerMockRule; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.smartregister.Context; import org.smartregister.immunization.BaseUnitTest; import org.smartregister.immunization.ImmunizationLibrary; @@ -149,12 +149,12 @@ public void testProcessVaccineCacheFunctionsCorrectly() { PowerMockito.when(VaccinatorUtils.getSpecialVaccines(androidContext)).thenReturn(specialVaccines); PowerMockito.spy(VaccinatorUtils.class); - PowerMockito.when(VaccinatorUtils.getSupportedVaccinesByCategory(RuntimeEnvironment.application, "child")).thenReturn(vaccines); + PowerMockito.when(VaccinatorUtils.getSupportedVaccinesByCategory(ApplicationProvider.getApplicationContext(), "child")).thenReturn(vaccines); Map vaccineCacheMap = new HashMap<>(); PowerMockito.when( ImmunizationLibrary.getVaccineCacheMap()).thenReturn(vaccineCacheMap); - Utils.processVaccineCache(RuntimeEnvironment.application, "child"); + Utils.processVaccineCache(ApplicationProvider.getApplicationContext(), "child"); VaccineCache childVaccineCache = vaccineCacheMap.get("child"); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinateActionUtilsTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinateActionUtilsTest.java index 7999cd73..09867a3a 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinateActionUtilsTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinateActionUtilsTest.java @@ -3,30 +3,27 @@ import android.widget.TableLayout; import android.widget.TableRow; +import androidx.test.core.app.ApplicationProvider; + import com.google.gson.reflect.TypeToken; import org.joda.time.DateTime; -import org.json.JSONArray; -import org.json.JSONException; import org.json.JSONObject; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; +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.rule.PowerMockRule; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.util.ReflectionHelpers; -import org.smartregister.AllConstants; +import androidx.test.core.app.ApplicationProvider; import org.smartregister.Context; import org.smartregister.domain.Alert; import org.smartregister.domain.AlertStatus; -import org.smartregister.domain.SyncStatus; -import org.smartregister.domain.form.FormSubmission; import org.smartregister.immunization.BaseUnitTest; import org.smartregister.immunization.ImmunizationLibrary; import org.smartregister.immunization.db.VaccineRepo; @@ -103,10 +100,10 @@ public void assertFormDataTestWithTestData() throws Exception { android.content.Context context = Mockito.mock(android.content.Context.class); PowerMockito.mockStatic(FormUtils.class); Assert.assertNull(VaccinateActionUtils.formData(context, "", "", "")); - PowerMockito.when(FormUtils.getInstance(org.mockito.ArgumentMatchers.any(android.content.Context.class))) + PowerMockito.when(FormUtils.getInstance(ArgumentMatchers.any(android.content.Context.class))) .thenReturn(formUtils); - PowerMockito.when(formUtils.generateXMLInputForFormWithEntityId(org.mockito.ArgumentMatchers.anyString(), - org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.anyString())).thenReturn(magicData); + PowerMockito.when(formUtils.generateXMLInputForFormWithEntityId(ArgumentMatchers.anyString(), + ArgumentMatchers.anyString(), ArgumentMatchers.anyString())).thenReturn(magicData); Assert.assertEquals(VaccinateActionUtils.formData(context, "", "", ""), magicData); } @@ -150,8 +147,8 @@ public void assertFindRowTestReturnsTableRow() { String tag = "TAG"; String wrong_tag = "WRONG TAG"; Set tables = new HashSet<>(); - TableLayout tableLayout = new TableLayout(RuntimeEnvironment.application); - TableRow row = new TableRow(RuntimeEnvironment.application); + TableLayout tableLayout = new TableLayout(ApplicationProvider.getApplicationContext()); + TableRow row = new TableRow(ApplicationProvider.getApplicationContext()); row.setTag(tag); tableLayout.addView(row); tables.add(tableLayout); @@ -245,12 +242,12 @@ public void assertAddBcg2SpecialVaccineTestReturnsSpecialVaccinesOnHasVaccineAnd .fromJson(VaccineData.special_vacines, listType); PowerMockito - .when(VaccinatorUtils.getSpecialVaccines(org.mockito.ArgumentMatchers.any(android.content.Context.class))) + .when(VaccinatorUtils.getSpecialVaccines(ArgumentMatchers.any(android.content.Context.class))) .thenReturn(specialVaccines); VaccinateActionUtils.addBcg2SpecialVaccine(Mockito.mock(android.content.Context.class), vaccines.get(0), list); PowerMockito - .when(VaccinatorUtils.getSpecialVaccines(org.mockito.ArgumentMatchers.any(android.content.Context.class))) + .when(VaccinatorUtils.getSpecialVaccines(ArgumentMatchers.any(android.content.Context.class))) .thenReturn(null); VaccinateActionUtils.addBcg2SpecialVaccine(Mockito.mock(android.content.Context.class), vaccines.get(0), list); @@ -387,20 +384,4 @@ public void assertLessThanThreeMonthsReturnsTrueForCreatedAtServiceRecordDatesLe Assert.assertFalse(VaccinateActionUtils.lessThanThreeMonths(serviceRecord)); } - @Test - public void getParamsShouldProvideJsonStringWith5properties() throws JSONException { - FormSubmission formSubmission = new FormSubmission("instance-id", "entity-id", "form-name", "{}", "client-version", SyncStatus.SYNCED, "synced"); - String jsonString = ReflectionHelpers.callStaticMethod(VaccinateActionUtils.class, "getParams", ReflectionHelpers.ClassParameter.from(FormSubmission.class, formSubmission)); - - JSONObject jsonObject = new JSONObject(jsonString); - JSONArray keys = jsonObject.names(); - - Assert.assertEquals(5, keys.length()); - Assert.assertEquals("instance-id", jsonObject.getString(AllConstants.INSTANCE_ID_PARAM)); - Assert.assertEquals("entity-id", jsonObject.getString(AllConstants.ENTITY_ID_PARAM)); - Assert.assertEquals("form-name", jsonObject.getString(AllConstants.FORM_NAME_PARAM)); - Assert.assertEquals("client-version", jsonObject.getString(AllConstants.VERSION_PARAM)); - Assert.assertEquals(SyncStatus.PENDING.value(), jsonObject.getString(AllConstants.SYNC_STATUS)); - } - } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinatorUtilsRobolectricTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinatorUtilsRobolectricTest.java index 5a9d48ed..1088434d 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinatorUtilsRobolectricTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinatorUtilsRobolectricTest.java @@ -1,7 +1,5 @@ package org.smartregister.immunization.utils; -import android.os.Build; - import com.google.gson.reflect.TypeToken; import org.junit.Assert; @@ -12,7 +10,7 @@ import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; import org.smartregister.immunization.ImmunizationLibrary; @@ -31,11 +29,11 @@ */ @RunWith(RobolectricTestRunner.class) -@Config(sdk = {Build.VERSION_CODES.O_MR1}, shadows = {ShadowAssetHandler.class}) +@Config(shadows = {ShadowAssetHandler.class}) public class VaccinatorUtilsRobolectricTest { @Rule - public MockitoRule mockitoRule = MockitoJUnit.rule(); + public MockitoRule mockitoRule = MockitoJUnit.rule(); @Test public void getVaccineFromVaccineConfigFileShouldReturnSpecialVaccinesAndAddThemToConfigJsonMapping() { @@ -46,7 +44,7 @@ public void getVaccineFromVaccineConfigFileShouldReturnSpecialVaccinesAndAddThem Mockito.doReturn(jsonMap).when(immunizationLibrary).getVaccinesConfigJsonMap(); // Mock calls to AssetHandler.readFileFromAssetsFolder(String filename, Context context) - List specialVaccines = VaccinatorUtils.getVaccineFromVaccineConfigFile(RuntimeEnvironment.application, "special_vaccines.json"); + List specialVaccines = VaccinatorUtils.getVaccineFromVaccineConfigFile(ApplicationProvider.getApplicationContext(), "special_vaccines.json"); Assert.assertEquals(1, specialVaccines.size()); @@ -58,10 +56,11 @@ public void getVaccineFromVaccineConfigFileShouldReturnSpecialVaccinesAndAddThem @Test public void testThatSpecialVaccinesFileIsAvailableAndCanBeRead() { Class> classType = (Class) List.class; - Type listType = new TypeToken>() {}.getType(); + Type listType = new TypeToken>() { + }.getType(); Map jsonMap = new HashMap<>(); - List specialVaccinesList = AssetHandler.assetJsonToJava(jsonMap, RuntimeEnvironment.application, "special_vaccines.json", classType,listType); + List specialVaccinesList = AssetHandler.assetJsonToJava(jsonMap, ApplicationProvider.getApplicationContext(), "special_vaccines.json", classType, listType); Assert.assertEquals(1, specialVaccinesList.size()); } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinatorUtilsTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinatorUtilsTest.java index 5f44c6d3..5e05a284 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinatorUtilsTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinatorUtilsTest.java @@ -63,8 +63,6 @@ import java.util.Locale; import java.util.Map; -import static org.mockito.ArgumentMatchers.eq; - /** * Created by onaio on 29/08/2017. */ @@ -107,7 +105,7 @@ public void verifygetwastedcallssqlmethodonce() { VaccinatorUtils.getWasted("", "", ""); VaccinatorUtils.getWasted("", "", "", ""); Mockito.verify(commonRepository, Mockito.times(1)) - .rawQuery(org.mockito.ArgumentMatchers.anyString(), eq(new String[]{})); + .rawQuery(ArgumentMatchers.anyString(), ArgumentMatchers.eq(new String[]{})); } @Test @@ -116,11 +114,11 @@ public void verifyGetUsedcallssqlmethodonce() { PowerMockito.when(ImmunizationLibrary.getInstance()).thenReturn(immunizationLibrary); PowerMockito.when(ImmunizationLibrary.getInstance().context()).thenReturn(context); PowerMockito - .when(ImmunizationLibrary.getInstance().context().commonrepository(org.mockito.ArgumentMatchers.anyString())) + .when(ImmunizationLibrary.getInstance().context().commonrepository(ArgumentMatchers.anyString())) .thenReturn(commonRepository); VaccinatorUtils.getUsed("", "", "", "", ""); Mockito.verify(commonRepository, Mockito.times(1)) - .rawQuery(org.mockito.ArgumentMatchers.anyString(), eq(new String[]{})); + .rawQuery(ArgumentMatchers.anyString(), ArgumentMatchers.eq(new String[]{})); } @Test @@ -131,13 +129,13 @@ public void assertVaccinatorUtilsTest() { PowerMockito.when(ImmunizationLibrary.getInstance()).thenReturn(immunizationLibrary); PowerMockito.when(ImmunizationLibrary.getInstance().context()).thenReturn(context); PowerMockito - .when(ImmunizationLibrary.getInstance().context().commonrepository(org.mockito.ArgumentMatchers.anyString())) + .when(ImmunizationLibrary.getInstance().context().commonrepository(ArgumentMatchers.anyString())) .thenReturn(commonRepository); android.content.Context ctx = Mockito.mock(android.content.Context.class); Resources resources = Mockito.mock(Resources.class); PowerMockito.when(ctx.getResources()).thenReturn(resources); - PowerMockito.when(resources.getColor(org.mockito.ArgumentMatchers.anyInt())).thenReturn(magicColor); + PowerMockito.when(resources.getColor(ArgumentMatchers.anyInt())).thenReturn(magicColor); //get file name with prefix Assert.assertEquals(VaccinatorUtils.getFileName("vaccines.json", "tz"), "tz_vaccines.json"); @@ -243,8 +241,8 @@ public void assertGetVaccineCalculationTestReturnsCalculation() throws Exception JsonFormUtils.gson.toJson(VaccinatorUtils.getSpecialVaccines(context), listType2), JSONCompareMode.NON_EXTENSIBLE); //readrecurringservices - PowerMockito.when(Utils.readAssetContents(org.mockito.ArgumentMatchers.any(android.content.Context.class), - org.mockito.ArgumentMatchers.anyString())).thenReturn(ServiceData.recurringservice); + PowerMockito.when(Utils.readAssetContents(ArgumentMatchers.any(android.content.Context.class), + ArgumentMatchers.anyString())).thenReturn(ServiceData.recurringservice); Assert.assertEquals(VaccinatorUtils.getSupportedRecurringServices(context), ServiceData.recurringservice); } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinatorUtilsTestMock.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinatorUtilsTestMock.java index 7b2cca86..e203810c 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinatorUtilsTestMock.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/utils/VaccinatorUtilsTestMock.java @@ -2,13 +2,14 @@ import android.content.Intent; +import androidx.test.core.app.ApplicationProvider; + import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; -import org.robolectric.RuntimeEnvironment; import org.robolectric.android.controller.ActivityController; import org.smartregister.immunization.BaseUnitTest; @@ -26,7 +27,7 @@ public class VaccinatorUtilsTestMock extends BaseUnitTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); - Intent intent = new Intent(RuntimeEnvironment.application, VaccinatorUtilsTestMockActivity.class); + Intent intent = new Intent(ApplicationProvider.getApplicationContext(), VaccinatorUtilsTestMockActivity.class); controller = Robolectric.buildActivity(VaccinatorUtilsTestMockActivity.class, intent); activity = controller.get(); controller.setup(); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ImmunizationRowCardTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ImmunizationRowCardTest.java index 85261191..1bf83067 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ImmunizationRowCardTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ImmunizationRowCardTest.java @@ -8,6 +8,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; +import org.mockito.ArgumentMatchers; import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PowerMockIgnore; @@ -15,7 +16,7 @@ import org.powermock.modules.junit4.rule.PowerMockRule; import org.powermock.reflect.Whitebox; import org.robolectric.Robolectric; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.annotation.Config; import org.smartregister.commonregistry.CommonFtsObject; import org.smartregister.domain.Alert; @@ -57,7 +58,7 @@ public class ImmunizationRowCardTest extends BaseUnitTest { @Before public void setUp() throws Exception { org.mockito.MockitoAnnotations.initMocks(this); - view = new ImmunizationRowCard(RuntimeEnvironment.application); + view = new ImmunizationRowCard(ApplicationProvider.getApplicationContext()); EventClientRepository eventClientRepository = Mockito.mock(EventClientRepository.class); Vaccine vaccine = new Vaccine(0l, VaccineTest.BASEENTITYID, VaccineTest.PROGRAMCLIENTID, VaccineTest.NAME, 0, @@ -75,21 +76,21 @@ public void setUp() throws Exception { Mockito.mock(CommonFtsObject.class), 0, 0); PowerMockito.when(ImmunizationLibrary.getInstance()).thenReturn(immunizationLibrary); PowerMockito.when(immunizationLibrary.vaccineRepository()).thenReturn(vaccineRepository); - PowerMockito.when(vaccineRepository.find(org.mockito.ArgumentMatchers.anyLong())).thenReturn(vaccine); + PowerMockito.when(vaccineRepository.find(ArgumentMatchers.anyLong())).thenReturn(vaccine); PowerMockito.when(immunizationLibrary.eventClientRepository()).thenReturn(eventClientRepository); PowerMockito.when(eventClientRepository - .convert(org.mockito.ArgumentMatchers.any(JSONObject.class), org.mockito.ArgumentMatchers.any(Class.class))) + .convert(ArgumentMatchers.any(JSONObject.class), ArgumentMatchers.any(Class.class))) .thenReturn(event); } @Test public void testConstructors() { - Assert.assertNotNull(new ImmunizationRowCard(RuntimeEnvironment.application)); - Assert.assertNotNull(new ImmunizationRowCard(RuntimeEnvironment.application, true)); - Assert.assertNotNull(new ImmunizationRowCard(RuntimeEnvironment.application, Robolectric.buildAttributeSet().build())); - Assert.assertNotNull(new ImmunizationRowCard(RuntimeEnvironment.application, Robolectric.buildAttributeSet().build(), 0)); - Assert.assertNotNull(new ImmunizationRowCard(RuntimeEnvironment.application, Robolectric.buildAttributeSet().build(), 0, 0)); + Assert.assertNotNull(new ImmunizationRowCard(ApplicationProvider.getApplicationContext())); + Assert.assertNotNull(new ImmunizationRowCard(ApplicationProvider.getApplicationContext(), true)); + Assert.assertNotNull(new ImmunizationRowCard(ApplicationProvider.getApplicationContext(), Robolectric.buildAttributeSet().build())); + Assert.assertNotNull(new ImmunizationRowCard(ApplicationProvider.getApplicationContext(), Robolectric.buildAttributeSet().build(), 0)); + Assert.assertNotNull(new ImmunizationRowCard(ApplicationProvider.getApplicationContext(), Robolectric.buildAttributeSet().build(), 0, 0)); } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ImmunizationRowGroupTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ImmunizationRowGroupTest.java index dc0bdca3..0768274c 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ImmunizationRowGroupTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ImmunizationRowGroupTest.java @@ -11,12 +11,13 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.mockito.ArgumentMatchers; import org.mockito.Mock; import org.mockito.Mockito; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.robolectric.Robolectric; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.android.controller.ActivityController; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; @@ -89,7 +90,7 @@ public class ImmunizationRowGroupTest extends BaseUnitTest { @Before public void setUp() { org.mockito.MockitoAnnotations.initMocks(this); - Intent intent = new Intent(RuntimeEnvironment.application, ImmunizationRowGroupTestActivity.class); + Intent intent = new Intent(ApplicationProvider.getApplicationContext(), ImmunizationRowGroupTestActivity.class); controller = Robolectric.buildActivity(ImmunizationRowGroupTestActivity.class, intent); activity = controller.start().resume().get(); ReflectionHelpers.setStaticField(CoreLibrary.class, "instance", coreLibrary); @@ -214,8 +215,8 @@ public void assertOnClickCallsOnRecordAllClickListenerAndOnVaccineClickedListene view.setOnRecordAllClickListener(onRecordAllClickListener); view.onClick(view.findViewById(R.id.record_all_tv)); - Mockito.verify(onRecordAllClickListener).onClick(org.mockito.ArgumentMatchers.any(ImmunizationRowGroup.class), - org.mockito.ArgumentMatchers.any(ArrayList.class)); + Mockito.verify(onRecordAllClickListener).onClick(ArgumentMatchers.any(ImmunizationRowGroup.class), + ArgumentMatchers.any(ArrayList.class)); // Vaccine Clicked ImmunizationRowGroup.OnVaccineClickedListener onVaccineClickListener = Mockito @@ -225,7 +226,7 @@ public void assertOnClickCallsOnRecordAllClickListenerAndOnVaccineClickedListene ExpandableHeightGridView expandableHeightGridView = view.getVaccinesGV(); ImmunizationRowAdapter adapter = view.getVaccineCardAdapter(); - ImmunizationRowCard immunizationRowCard = new ImmunizationRowCard(RuntimeEnvironment.application); + ImmunizationRowCard immunizationRowCard = new ImmunizationRowCard(ApplicationProvider.getApplicationContext()); wrapper = new VaccineWrapper(); wrapper.setVaccine(VaccineRepo.Vaccine.bcg); wrapper.setVaccineDate(DateTime.now()); @@ -234,26 +235,26 @@ public void assertOnClickCallsOnRecordAllClickListenerAndOnVaccineClickedListene immunizationRowCard.setState(State.NOT_DUE); expandableHeightGridView.performItemClick(immunizationRowCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineClickListener, Mockito.never()) - .onClick(org.mockito.ArgumentMatchers.any(ImmunizationRowGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onClick(ArgumentMatchers.any(ImmunizationRowGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); immunizationRowCard.setState(State.DONE_CAN_BE_UNDONE); expandableHeightGridView.performItemClick(immunizationRowCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineClickListener, Mockito.never()) - .onClick(org.mockito.ArgumentMatchers.any(ImmunizationRowGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onClick(ArgumentMatchers.any(ImmunizationRowGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); immunizationRowCard.setState(State.DONE_CAN_NOT_BE_UNDONE); expandableHeightGridView.performItemClick(immunizationRowCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineClickListener, Mockito.never()) - .onClick(org.mockito.ArgumentMatchers.any(ImmunizationRowGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onClick(ArgumentMatchers.any(ImmunizationRowGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); immunizationRowCard.setState(State.EXPIRED); expandableHeightGridView.performItemClick(immunizationRowCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineClickListener, Mockito.never()) - .onClick(org.mockito.ArgumentMatchers.any(ImmunizationRowGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onClick(ArgumentMatchers.any(ImmunizationRowGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); immunizationRowCard.setState(State.DUE); expandableHeightGridView.performItemClick(immunizationRowCard, 0, adapter.getItemId(0)); @@ -271,26 +272,26 @@ public void assertOnClickCallsOnRecordAllClickListenerAndOnVaccineClickedListene immunizationRowCard.setState(State.DUE); expandableHeightGridView.performItemClick(immunizationRowCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ImmunizationRowGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ImmunizationRowGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); immunizationRowCard.setState(State.OVERDUE); expandableHeightGridView.performItemClick(immunizationRowCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ImmunizationRowGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ImmunizationRowGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); immunizationRowCard.setState(State.EXPIRED); expandableHeightGridView.performItemClick(immunizationRowCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ImmunizationRowGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ImmunizationRowGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); immunizationRowCard.setState(State.NOT_DUE); expandableHeightGridView.performItemClick(immunizationRowCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ImmunizationRowGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ImmunizationRowGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); immunizationRowCard.setState(State.DONE_CAN_BE_UNDONE); expandableHeightGridView.performItemClick(immunizationRowCard, 0, adapter.getItemId(0)); @@ -316,8 +317,8 @@ public void assertOnClickCallsUndoClickedListener() throws Exception { view.setOnRecordAllClickListener(onRecordAllClickListener); view.onClick(view.findViewById(R.id.record_all_tv)); - Mockito.verify(onRecordAllClickListener).onClick(org.mockito.ArgumentMatchers.any(ImmunizationRowGroup.class), - org.mockito.ArgumentMatchers.any(ArrayList.class)); + Mockito.verify(onRecordAllClickListener).onClick(ArgumentMatchers.any(ImmunizationRowGroup.class), + ArgumentMatchers.any(ArrayList.class)); // Vaccine Clicked ImmunizationRowGroup.OnVaccineClickedListener onVaccineClickListener = Mockito @@ -327,7 +328,7 @@ public void assertOnClickCallsUndoClickedListener() throws Exception { ExpandableHeightGridView expandableHeightGridView = view.getVaccinesGV(); ImmunizationRowAdapter adapter = view.getVaccineCardAdapter(); - ImmunizationRowCard immunizationRowCard = new ImmunizationRowCard(RuntimeEnvironment.application, true); + ImmunizationRowCard immunizationRowCard = new ImmunizationRowCard(ApplicationProvider.getApplicationContext(), true); wrapper = new VaccineWrapper(); wrapper.setVaccine(VaccineRepo.Vaccine.bcg); wrapper.setVaccineDate(DateTime.now()); @@ -340,26 +341,26 @@ public void assertOnClickCallsUndoClickedListener() throws Exception { immunizationRowCard.setState(State.DUE); expandableHeightGridView.performItemClick(immunizationRowCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ImmunizationRowGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ImmunizationRowGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); immunizationRowCard.setState(State.OVERDUE); expandableHeightGridView.performItemClick(immunizationRowCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ImmunizationRowGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ImmunizationRowGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); immunizationRowCard.setState(State.EXPIRED); expandableHeightGridView.performItemClick(immunizationRowCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ImmunizationRowGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ImmunizationRowGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); immunizationRowCard.setState(State.NOT_DUE); expandableHeightGridView.performItemClick(immunizationRowCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ImmunizationRowGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ImmunizationRowGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); immunizationRowCard.setState(State.DONE_CAN_BE_UNDONE); expandableHeightGridView.performItemClick(immunizationRowCard, 0, adapter.getItemId(0)); @@ -412,13 +413,13 @@ public void asertConstructorsNotNull() { Assert.assertNotNull(activity.getInstance()); - ImmunizationRowGroup instance1 = new ImmunizationRowGroup(RuntimeEnvironment.application, attrs); + ImmunizationRowGroup instance1 = new ImmunizationRowGroup(ApplicationProvider.getApplicationContext(), attrs); Assert.assertNotNull(instance1); - ImmunizationRowGroup instance2 = new ImmunizationRowGroup(RuntimeEnvironment.application, attrs, 0); + ImmunizationRowGroup instance2 = new ImmunizationRowGroup(ApplicationProvider.getApplicationContext(), attrs, 0); Assert.assertNotNull(instance2); - ImmunizationRowGroup instance3 = new ImmunizationRowGroup(RuntimeEnvironment.application, attrs, 0, 0); + ImmunizationRowGroup instance3 = new ImmunizationRowGroup(ApplicationProvider.getApplicationContext(), attrs, 0, 0); Assert.assertNotNull(instance3); } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceCardTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceCardTest.java index 2f63c620..53e90e23 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceCardTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceCardTest.java @@ -12,7 +12,7 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.robolectric.Robolectric; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.android.controller.ActivityController; import org.robolectric.util.ReflectionHelpers; import org.smartregister.CoreLibrary; @@ -58,7 +58,7 @@ public class ServiceCardTest extends BaseUnitTest { @Before public void setUp() { org.mockito.MockitoAnnotations.initMocks(this); - Intent intent = new Intent(RuntimeEnvironment.application, ServiceCardTestActivity.class); + Intent intent = new Intent(ApplicationProvider.getApplicationContext(), ServiceCardTestActivity.class); controller = Robolectric.buildActivity(ServiceCardTestActivity.class, intent); activity = controller.start().resume().get(); ReflectionHelpers.setStaticField(CoreLibrary.class, "instance", coreLibrary); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceGroupTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceGroupTest.java index 625ddea2..e694c0ee 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceGroupTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceGroupTest.java @@ -6,12 +6,13 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.mockito.ArgumentMatchers; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.powermock.reflect.Whitebox; import org.robolectric.Robolectric; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.android.controller.ActivityController; import org.robolectric.util.ReflectionHelpers; import org.smartregister.CoreLibrary; @@ -72,7 +73,7 @@ public class ServiceGroupTest extends BaseUnitTest { @Before public void setUp() { org.mockito.MockitoAnnotations.initMocks(this); - Intent intent = new Intent(RuntimeEnvironment.application, ServiceGroupTestActivity.class); + Intent intent = new Intent(ApplicationProvider.getApplicationContext(), ServiceGroupTestActivity.class); controller = Robolectric.buildActivity(ServiceGroupTestActivity.class, intent); activity = controller.start().resume().get(); ReflectionHelpers.setStaticField(CoreLibrary.class, "instance", coreLibrary); @@ -117,7 +118,7 @@ public void verifyOnClickCallsOnUndoServiceAllClickListenerAndOnServiceClickedLi ExpandableHeightGridView expandableHeightGridView = view.getServicesGV(); ServiceCardAdapter adapter = view.getServiceCardAdapter(); - ServiceCard serviceCard = new ServiceCard(RuntimeEnvironment.application); + ServiceCard serviceCard = new ServiceCard(ApplicationProvider.getApplicationContext()); wrapper = new ServiceWrapper(); wrapper.setDefaultName(ServiceWrapperTest.DEFAULTNAME); serviceCard.setServiceWrapper(wrapper); @@ -125,26 +126,26 @@ public void verifyOnClickCallsOnUndoServiceAllClickListenerAndOnServiceClickedLi serviceCard.setState(State.NOT_DUE); expandableHeightGridView.performItemClick(serviceCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceClickedListener, Mockito.never()) - .onClick(org.mockito.ArgumentMatchers.any(ServiceGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onClick(ArgumentMatchers.any(ServiceGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceCard.setState(State.DONE_CAN_BE_UNDONE); expandableHeightGridView.performItemClick(serviceCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceClickedListener, Mockito.never()) - .onClick(org.mockito.ArgumentMatchers.any(ServiceGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onClick(ArgumentMatchers.any(ServiceGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceCard.setState(State.DONE_CAN_NOT_BE_UNDONE); expandableHeightGridView.performItemClick(serviceCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceClickedListener, Mockito.never()) - .onClick(org.mockito.ArgumentMatchers.any(ServiceGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onClick(ArgumentMatchers.any(ServiceGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceCard.setState(State.EXPIRED); expandableHeightGridView.performItemClick(serviceCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceClickedListener, Mockito.never()) - .onClick(org.mockito.ArgumentMatchers.any(ServiceGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onClick(ArgumentMatchers.any(ServiceGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceCard.setState(State.DUE); expandableHeightGridView.performItemClick(serviceCard, 0, adapter.getItemId(0)); @@ -162,32 +163,32 @@ public void verifyOnClickCallsOnUndoServiceAllClickListenerAndOnServiceClickedLi serviceCard.setState(State.DONE_CAN_NOT_BE_UNDONE); expandableHeightGridView.performItemClick(serviceCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ServiceGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ServiceGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceCard.setState(State.DUE); expandableHeightGridView.performItemClick(serviceCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ServiceGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ServiceGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceCard.setState(State.OVERDUE); expandableHeightGridView.performItemClick(serviceCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ServiceGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ServiceGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceCard.setState(State.EXPIRED); expandableHeightGridView.performItemClick(serviceCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ServiceGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ServiceGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceCard.setState(State.NOT_DUE); expandableHeightGridView.performItemClick(serviceCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ServiceGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ServiceGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceCard.setState(State.DONE_CAN_BE_UNDONE); expandableHeightGridView.performItemClick(serviceCard, 0, adapter.getItemId(0)); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceRowCardTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceRowCardTest.java index ee4f03cc..01514179 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceRowCardTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceRowCardTest.java @@ -10,6 +10,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; +import org.mockito.ArgumentMatchers; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -19,7 +20,7 @@ import org.powermock.modules.junit4.rule.PowerMockRule; import org.powermock.reflect.Whitebox; import org.robolectric.Robolectric; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.android.controller.ActivityController; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; @@ -93,7 +94,7 @@ public void setUp() { Mockito.doReturn(5).when(allSharedPreferences).getDBEncryptionVersion(); Mockito.doReturn(allSharedPreferences).when(openSRPContext).allSharedPreferences(); - Intent intent = new Intent(RuntimeEnvironment.application, ServiceRowCardTestActivity.class); + Intent intent = new Intent(ApplicationProvider.getApplicationContext(), ServiceRowCardTestActivity.class); controller = Robolectric.buildActivity(ServiceRowCardTestActivity.class, intent); activity = controller.start().resume().get(); ReflectionHelpers.setStaticField(CoreLibrary.class, "instance", coreLibrary); @@ -122,14 +123,14 @@ public void setUp() { PowerMockito.when(ImmunizationLibrary.getInstance()).thenReturn(immunizationLibrary); PowerMockito.when(immunizationLibrary.recurringServiceRecordRepository()) .thenReturn(recurringServiceRecordRepository); - PowerMockito.when(recurringServiceRecordRepository.find(org.mockito.ArgumentMatchers.anyLong())) + PowerMockito.when(recurringServiceRecordRepository.find(ArgumentMatchers.anyLong())) .thenReturn(serviceRecord); PowerMockito.when(immunizationLibrary.eventClientRepository()).thenReturn(eventClientRepository); PowerMockito.when(eventClientRepository - .convert(org.mockito.ArgumentMatchers.any(JSONObject.class), org.mockito.ArgumentMatchers.any(Class.class))) + .convert(ArgumentMatchers.any(JSONObject.class), ArgumentMatchers.any(Class.class))) .thenReturn(event); // controller.setup(); - view = new ServiceRowCard(RuntimeEnvironment.application); + view = new ServiceRowCard(ApplicationProvider.getApplicationContext()); // view = activity.getInstance(); } diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceRowGroupTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceRowGroupTest.java index d7a2ba85..c7076548 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceRowGroupTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/ServiceRowGroupTest.java @@ -6,11 +6,12 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.mockito.ArgumentMatchers; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.robolectric.Robolectric; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.android.controller.ActivityController; import org.robolectric.util.ReflectionHelpers; import org.smartregister.CoreLibrary; @@ -70,7 +71,7 @@ public class ServiceRowGroupTest extends BaseUnitTest { @Before public void setUp() { org.mockito.MockitoAnnotations.initMocks(this); - Intent intent = new Intent(RuntimeEnvironment.application, ServiceRowGroupTestActivity.class); + Intent intent = new Intent(ApplicationProvider.getApplicationContext(), ServiceRowGroupTestActivity.class); controller = Robolectric.buildActivity(ServiceRowGroupTestActivity.class, intent); activity = controller.start().resume().get(); ReflectionHelpers.setStaticField(CoreLibrary.class, "instance", coreLibrary); @@ -118,7 +119,7 @@ public void assertOnClickCallsOnUndoServiceAllClickListenerAndOnServiceClickedLi ExpandableHeightGridView expandableHeightGridView = view.getServicesGV(); ServiceRowAdapter adapter = view.getServiceRowAdapter(); - ServiceRowCard serviceRowCard = new ServiceRowCard(RuntimeEnvironment.application); + ServiceRowCard serviceRowCard = new ServiceRowCard(ApplicationProvider.getApplicationContext()); wrapper = new ServiceWrapper(); wrapper.setDefaultName(ServiceWrapperTest.DEFAULTNAME); serviceRowCard.setServiceWrapper(wrapper); @@ -126,26 +127,26 @@ public void assertOnClickCallsOnUndoServiceAllClickListenerAndOnServiceClickedLi serviceRowCard.setState(State.NOT_DUE); expandableHeightGridView.performItemClick(serviceRowCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceClickedListener, Mockito.never()) - .onClick(org.mockito.ArgumentMatchers.any(ServiceRowGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onClick(ArgumentMatchers.any(ServiceRowGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceRowCard.setState(State.DONE_CAN_BE_UNDONE); expandableHeightGridView.performItemClick(serviceRowCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceClickedListener, Mockito.never()) - .onClick(org.mockito.ArgumentMatchers.any(ServiceRowGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onClick(ArgumentMatchers.any(ServiceRowGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceRowCard.setState(State.DONE_CAN_NOT_BE_UNDONE); expandableHeightGridView.performItemClick(serviceRowCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceClickedListener, Mockito.never()) - .onClick(org.mockito.ArgumentMatchers.any(ServiceRowGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onClick(ArgumentMatchers.any(ServiceRowGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceRowCard.setState(State.EXPIRED); expandableHeightGridView.performItemClick(serviceRowCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceClickedListener, Mockito.never()) - .onClick(org.mockito.ArgumentMatchers.any(ServiceRowGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onClick(ArgumentMatchers.any(ServiceRowGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceRowCard.setState(State.DUE); expandableHeightGridView.performItemClick(serviceRowCard, 0, adapter.getItemId(0)); @@ -163,26 +164,26 @@ public void assertOnClickCallsOnUndoServiceAllClickListenerAndOnServiceClickedLi serviceRowCard.setState(State.DUE); expandableHeightGridView.performItemClick(serviceRowCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ServiceRowGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ServiceRowGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceRowCard.setState(State.OVERDUE); expandableHeightGridView.performItemClick(serviceRowCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ServiceRowGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ServiceRowGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceRowCard.setState(State.EXPIRED); expandableHeightGridView.performItemClick(serviceRowCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ServiceRowGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ServiceRowGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceRowCard.setState(State.NOT_DUE); expandableHeightGridView.performItemClick(serviceRowCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ServiceRowGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ServiceRowGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceRowCard.setState(State.DONE_CAN_BE_UNDONE); expandableHeightGridView.performItemClick(serviceRowCard, 0, adapter.getItemId(0)); @@ -262,7 +263,7 @@ public void assertOnClickCallsOnUndoServiceAllClickListener() throws Exception { ExpandableHeightGridView expandableHeightGridView = view.getServicesGV(); ServiceRowAdapter adapter = view.getServiceRowAdapter(); - ServiceRowCard serviceRowCard = new ServiceRowCard(RuntimeEnvironment.application, true); + ServiceRowCard serviceRowCard = new ServiceRowCard(ApplicationProvider.getApplicationContext(), true); wrapper = new ServiceWrapper(); wrapper.setDefaultName(ServiceWrapperTest.DEFAULTNAME); serviceRowCard.setServiceWrapper(wrapper); @@ -275,26 +276,26 @@ public void assertOnClickCallsOnUndoServiceAllClickListener() throws Exception { serviceRowCard.setState(State.DUE); expandableHeightGridView.performItemClick(serviceRowCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ServiceRowGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ServiceRowGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceRowCard.setState(State.OVERDUE); expandableHeightGridView.performItemClick(serviceRowCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ServiceRowGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ServiceRowGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceRowCard.setState(State.EXPIRED); expandableHeightGridView.performItemClick(serviceRowCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ServiceRowGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ServiceRowGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceRowCard.setState(State.NOT_DUE); expandableHeightGridView.performItemClick(serviceRowCard, 0, adapter.getItemId(0)); Mockito.verify(onServiceUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(ServiceRowGroup.class), - org.mockito.ArgumentMatchers.any(ServiceWrapper.class)); + .onUndoClick(ArgumentMatchers.any(ServiceRowGroup.class), + ArgumentMatchers.any(ServiceWrapper.class)); serviceRowCard.setState(State.DONE_CAN_BE_UNDONE); expandableHeightGridView.performItemClick(serviceRowCard, 0, adapter.getItemId(0)); diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/VaccineCardTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/VaccineCardTest.java index 2bea7f86..ac0adea2 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/VaccineCardTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/VaccineCardTest.java @@ -12,7 +12,7 @@ import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; import org.robolectric.Robolectric; -import org.robolectric.RuntimeEnvironment; +import androidx.test.core.app.ApplicationProvider; import org.robolectric.android.controller.ActivityController; import org.robolectric.util.ReflectionHelpers; import org.smartregister.CoreLibrary; @@ -65,7 +65,7 @@ public void setUp() { Mockito.doReturn(5).when(allSharedPreferences).getDBEncryptionVersion(); Mockito.doReturn(allSharedPreferences).when(context_).allSharedPreferences(); - Intent intent = new Intent(RuntimeEnvironment.application, VaccineCardTestActivity.class); + Intent intent = new Intent(ApplicationProvider.getApplicationContext(), VaccineCardTestActivity.class); controller = Robolectric.buildActivity(VaccineCardTestActivity.class, intent); activity = controller.start().resume().get(); CoreLibrary.init(context_); @@ -80,10 +80,10 @@ public void assertGetUndoBNotNull() { @Test public void testConstructors() { - Assert.assertNotNull(new VaccineCard(RuntimeEnvironment.application)); - Assert.assertNotNull(new VaccineCard(RuntimeEnvironment.application, Robolectric.buildAttributeSet().build())); - Assert.assertNotNull(new VaccineCard(RuntimeEnvironment.application, Robolectric.buildAttributeSet().build(), 0)); - Assert.assertNotNull(new VaccineCard(RuntimeEnvironment.application, Robolectric.buildAttributeSet().build(), 0, 0)); + Assert.assertNotNull(new VaccineCard(ApplicationProvider.getApplicationContext())); + Assert.assertNotNull(new VaccineCard(ApplicationProvider.getApplicationContext(), Robolectric.buildAttributeSet().build())); + Assert.assertNotNull(new VaccineCard(ApplicationProvider.getApplicationContext(), Robolectric.buildAttributeSet().build(), 0)); + Assert.assertNotNull(new VaccineCard(ApplicationProvider.getApplicationContext(), Robolectric.buildAttributeSet().build(), 0, 0)); } @Test diff --git a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/VaccineGroupTest.java b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/VaccineGroupTest.java index b57c9c24..d26f5001 100644 --- a/opensrp-immunization/src/test/java/org/smartregister/immunization/view/VaccineGroupTest.java +++ b/opensrp-immunization/src/test/java/org/smartregister/immunization/view/VaccineGroupTest.java @@ -2,16 +2,18 @@ import android.util.AttributeSet; +import androidx.test.core.app.ApplicationProvider; + import com.google.gson.reflect.TypeToken; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.mockito.ArgumentMatchers; import org.mockito.Mock; import org.mockito.Mockito; import org.robolectric.Robolectric; -import org.robolectric.RuntimeEnvironment; import org.robolectric.util.ReflectionHelpers; import org.smartregister.commonregistry.CommonPersonObjectClient; import org.smartregister.domain.Alert; @@ -61,7 +63,7 @@ public class VaccineGroupTest extends BaseUnitTest { @Before public void setUp() { org.mockito.MockitoAnnotations.initMocks(this); - view = new VaccineGroup(RuntimeEnvironment.application); + view = new VaccineGroup(ApplicationProvider.getApplicationContext()); Mockito.doReturn(properties).when(immunizationLibrary).getProperties(); view.setImmunizationLibraryInstance(immunizationLibrary); @@ -69,10 +71,10 @@ public void setUp() { @Test public void testConstructors() { - Assert.assertNotNull(new VaccineGroup(RuntimeEnvironment.application)); - Assert.assertNotNull(new VaccineGroup(RuntimeEnvironment.application, Robolectric.buildAttributeSet().build())); - Assert.assertNotNull(new VaccineGroup(RuntimeEnvironment.application, Robolectric.buildAttributeSet().build(), 0)); - Assert.assertNotNull(new VaccineGroup(RuntimeEnvironment.application, Robolectric.buildAttributeSet().build(), 0, 0)); + Assert.assertNotNull(new VaccineGroup(ApplicationProvider.getApplicationContext())); + Assert.assertNotNull(new VaccineGroup(ApplicationProvider.getApplicationContext(), Robolectric.buildAttributeSet().build())); + Assert.assertNotNull(new VaccineGroup(ApplicationProvider.getApplicationContext(), Robolectric.buildAttributeSet().build(), 0)); + Assert.assertNotNull(new VaccineGroup(ApplicationProvider.getApplicationContext(), Robolectric.buildAttributeSet().build(), 0, 0)); } @Test @@ -188,8 +190,8 @@ public void verifyOnClickCallsOnRecordAllClickListenerAndOnVaccineClickedListene view.setOnRecordAllClickListener(onRecordAllClickListener); view.onClick(view.findViewById(R.id.record_all_tv)); - Mockito.verify(onRecordAllClickListener).onClick(org.mockito.ArgumentMatchers.any(VaccineGroup.class), - org.mockito.ArgumentMatchers.any(ArrayList.class)); + Mockito.verify(onRecordAllClickListener).onClick(ArgumentMatchers.any(VaccineGroup.class), + ArgumentMatchers.any(ArrayList.class)); // Vaccine Clicked VaccineGroup.OnVaccineClickedListener onVaccineClickListener = Mockito @@ -199,38 +201,38 @@ public void verifyOnClickCallsOnRecordAllClickListenerAndOnVaccineClickedListene ExpandableHeightGridView expandableHeightGridView = view.getVaccinesGV(); VaccineCardAdapter adapter = view.getVaccineCardAdapter(); - VaccineCard vaccineCard = new VaccineCard(RuntimeEnvironment.application); + VaccineCard vaccineCard = new VaccineCard(ApplicationProvider.getApplicationContext()); wrapper = new VaccineWrapper(); wrapper.setVaccine(VaccineRepo.Vaccine.bcg); vaccineCard.setVaccineWrapper(wrapper); vaccineCard.setState(State.NOT_DUE); expandableHeightGridView.performItemClick(vaccineCard, 0, adapter.getItemId(0)); - Mockito.verify(onVaccineClickListener, Mockito.never()).onClick(org.mockito.ArgumentMatchers.any(VaccineGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + Mockito.verify(onVaccineClickListener, Mockito.never()).onClick(ArgumentMatchers.any(VaccineGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); vaccineCard.setState(State.DONE_CAN_BE_UNDONE); expandableHeightGridView.performItemClick(vaccineCard, 0, adapter.getItemId(0)); - Mockito.verify(onVaccineClickListener, Mockito.never()).onClick(org.mockito.ArgumentMatchers.any(VaccineGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + Mockito.verify(onVaccineClickListener, Mockito.never()).onClick(ArgumentMatchers.any(VaccineGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); vaccineCard.setState(State.DONE_CAN_NOT_BE_UNDONE); expandableHeightGridView.performItemClick(vaccineCard, 0, adapter.getItemId(0)); - Mockito.verify(onVaccineClickListener, Mockito.never()).onClick(org.mockito.ArgumentMatchers.any(VaccineGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + Mockito.verify(onVaccineClickListener, Mockito.never()).onClick(ArgumentMatchers.any(VaccineGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); //If expiry retroactive data entry Not Allowed vaccineCard.setState(State.EXPIRED); expandableHeightGridView.performItemClick(vaccineCard, 0, adapter.getItemId(0)); - Mockito.verify(onVaccineClickListener, Mockito.times(0)).onClick(org.mockito.ArgumentMatchers.any(VaccineGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + Mockito.verify(onVaccineClickListener, Mockito.times(0)).onClick(ArgumentMatchers.any(VaccineGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); //If expiry retroactive data entry Allowed Mockito.doReturn(true).when(immunizationLibrary).isAllowExpiredVaccineEntry(); vaccineCard.setState(State.EXPIRED); expandableHeightGridView.performItemClick(vaccineCard, 0, adapter.getItemId(0)); - Mockito.verify(onVaccineClickListener, Mockito.times(1)).onClick(org.mockito.ArgumentMatchers.any(VaccineGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + Mockito.verify(onVaccineClickListener, Mockito.times(1)).onClick(ArgumentMatchers.any(VaccineGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); vaccineCard.setState(State.DUE); expandableHeightGridView.performItemClick(vaccineCard, 0, adapter.getItemId(0)); @@ -248,32 +250,32 @@ public void verifyOnClickCallsOnRecordAllClickListenerAndOnVaccineClickedListene vaccineCard.setState(State.DONE_CAN_NOT_BE_UNDONE); expandableHeightGridView.performItemClick(vaccineCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(VaccineGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onUndoClick(ArgumentMatchers.any(VaccineGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); vaccineCard.setState(State.DUE); expandableHeightGridView.performItemClick(vaccineCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(VaccineGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onUndoClick(ArgumentMatchers.any(VaccineGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); vaccineCard.setState(State.OVERDUE); expandableHeightGridView.performItemClick(vaccineCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(VaccineGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onUndoClick(ArgumentMatchers.any(VaccineGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); vaccineCard.setState(State.EXPIRED); expandableHeightGridView.performItemClick(vaccineCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(VaccineGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onUndoClick(ArgumentMatchers.any(VaccineGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); vaccineCard.setState(State.NOT_DUE); expandableHeightGridView.performItemClick(vaccineCard, 0, adapter.getItemId(0)); Mockito.verify(onVaccineUndoClickListener, Mockito.never()) - .onUndoClick(org.mockito.ArgumentMatchers.any(VaccineGroup.class), - org.mockito.ArgumentMatchers.any(VaccineWrapper.class)); + .onUndoClick(ArgumentMatchers.any(VaccineGroup.class), + ArgumentMatchers.any(VaccineWrapper.class)); vaccineCard.setState(State.DONE_CAN_BE_UNDONE); expandableHeightGridView.performItemClick(vaccineCard, 0, adapter.getItemId(0)); @@ -309,10 +311,10 @@ public void assertIsModalOpenReturnsBoolean() { @Test public void assertConstructorsNotNull() { AttributeSet attrs = Robolectric.buildAttributeSet().build(); - Assert.assertNotNull(new VaccineGroup(RuntimeEnvironment.application)); - //Assert.assertNotNull(new VaccineGroup(RuntimeEnvironment.application, ViewAttributes.attrs)); - //Assert.assertNotNull(new VaccineGroup(RuntimeEnvironment.application, ViewAttributes.attrs, 0)); - //Assert.assertNotNull(new VaccineGroup(RuntimeEnvironment.application, ViewAttributes.attrs, 0, 0)); + Assert.assertNotNull(new VaccineGroup(ApplicationProvider.getApplicationContext())); + //Assert.assertNotNull(new VaccineGroup(ApplicationProvider.getApplicationContext(), ViewAttributes.attrs)); + //Assert.assertNotNull(new VaccineGroup(ApplicationProvider.getApplicationContext(), ViewAttributes.attrs, 0)); + //Assert.assertNotNull(new VaccineGroup(ApplicationProvider.getApplicationContext(), ViewAttributes.attrs, 0, 0)); } @After diff --git a/sample/build.gradle b/sample/build.gradle index fa00e084..3a2178f8 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -1,11 +1,11 @@ buildscript { repositories { google() - jcenter() + mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:$androidToolsBuildGradle" - classpath 'org.apache.commons:commons-lang3:3.10' + classpath 'org.apache.commons:commons-lang3:3.12.0' } } @@ -15,6 +15,7 @@ allprojects { maven { url "https://s3.amazonaws.com/repo.commonsware.com" } maven { url "https://dl.bintray.com/ibm-watson-health/ibm-fhir-server-releases" } mavenLocal() + mavenCentral() } } @@ -43,11 +44,11 @@ android { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - buildConfigField "int", "DATABASE_VERSION", '6' + buildConfigField "int", "DATABASE_VERSION", '7' } debug { - buildConfigField "int", "DATABASE_VERSION", '6' + buildConfigField "int", "DATABASE_VERSION", '7' } } @@ -90,31 +91,18 @@ android { dependencies { - implementation('org.smartregister:opensrp-client-core:4.3.26-SNAPSHOT@aar') { + implementation('org.smartregister:opensrp-client-core:6.0.0-SNAPSHOT@aar') { transitive = true exclude group: 'com.github.bmelnychuk', module: 'atv' exclude group: 'com.ibm.fhir', module: 'fhir-model' exclude group: 'com.ibm.fhir', module: 'fhir-path' } - jarJar 'com.ibm.fhir:fhir-model:4.7.0' + jarJar 'com.ibm.fhir:fhir-model:4.7.1' implementation fileTree(dir: "./build/libs", include: ['*.jar']) - implementation('com.google.android.material:material:1.0.0') { - exclude group: 'com.android.support' - } + runtimeOnly 'com.google.android.material:material:1.6.1' implementation project(':opensrp-immunization') - - testImplementation 'junit:junit:4.12' - testImplementation('org.robolectric:robolectric:3.8') { - exclude group: 'com.google.guava', module: 'guava' - exclude group: 'org.apache.maven', module: 'maven-model' - exclude group: 'com.thoughtworks.xstream', module: 'xstream' - } - testImplementation('org.robolectric:shadows-multidex:3.8') { - exclude group: 'com.google.guava', module: 'guava' - } - testImplementation 'org.robolectric:shadows-support-v4:3.4-rc2' } diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index a1808091..d4eb1b4b 100644 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -14,7 +14,8 @@ + android:theme="@style/AppTheme.NoActionBar" + android:exported="true"> diff --git a/sample/src/main/java/org/smartregister/immunization/sample/MainActivity.java b/sample/src/main/java/org/smartregister/immunization/sample/MainActivity.java index 8806736b..91459c77 100644 --- a/sample/src/main/java/org/smartregister/immunization/sample/MainActivity.java +++ b/sample/src/main/java/org/smartregister/immunization/sample/MainActivity.java @@ -78,18 +78,15 @@ public class MainActivity extends AppCompatActivity implements VaccinationActionListener, ServiceActionListener { - // Data - private CommonPersonObjectClient childDetails = SampleUtil.dummyDetatils(); - private static final String TAG = MainActivity.class.getCanonicalName(); private static final String DIALOG_TAG = "DIALOG_TAAAGGG"; private static final String EXTRA_CHILD_DETAILS = "child_details"; - + private static final boolean isChildActive = true; + // Data + private CommonPersonObjectClient childDetails = SampleUtil.dummyDetatils(); private ArrayList vaccineGroups; private ArrayList serviceGroups; - private static final boolean isChildActive = true; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -101,10 +98,13 @@ protected void onCreate(Bundle savedInstanceState) { fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) - .setAction("Action", null).show(); + Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show(); } }); + + setUpViewGroups(); + + updateViews(); } @Override @@ -133,6 +133,11 @@ public boolean onOptionsItemSelected(MenuItem item) { @Override protected void onResume() { super.onResume(); + + startServices(); + } + + private void setUpViewGroups() { if (vaccineGroups != null) { LinearLayout vaccineGroupCanvasLL = findViewById(R.id.vaccine_group_canvas_ll); vaccineGroupCanvasLL.removeAllViews(); @@ -144,9 +149,6 @@ protected void onResume() { serviceGroupCanvasLL.removeAllViews(); serviceGroups = null; } - updateViews(); - - startServices(); } private boolean isDataOk() { @@ -253,7 +255,6 @@ private void updateServiceViews(Map> serviceTypeMap, L return; } - serviceGroups = new ArrayList<>(); LinearLayout serviceGroupCanvasLL = findViewById(R.id.service_group_canvas_ll); @@ -538,6 +539,119 @@ public void startServices() { } + private String constructChildName() { + String firstName = Utils.getValue(childDetails.getColumnmaps(), "first_name", true); + String lastName = Utils.getValue(childDetails.getColumnmaps(), "last_name", true); + return getName(firstName, lastName).trim(); + } + + private VaccineGroup getLastOpenedView() { + if (vaccineGroups == null) { + return null; + } + + for (VaccineGroup vaccineGroup : vaccineGroups) { + if (vaccineGroup.isModalOpen()) { + return vaccineGroup; + } + } + + return null; + } + + private void updateVaccineGroupsUsingAlerts(List affectedVaccines, List vaccineList, List alerts) { + if (affectedVaccines != null && vaccineList != null) { + // Update all other affected vaccine groups + HashMap> affectedGroups = new HashMap<>(); + for (String curAffectedVaccineName : affectedVaccines) { + boolean viewFound = false; + // Check what group it is in + for (VaccineGroup curGroup : vaccineGroups) { + ArrayList groupWrappers = curGroup.getAllVaccineWrappers(); + if (groupWrappers == null) groupWrappers = new ArrayList<>(); + for (VaccineWrapper curWrapper : groupWrappers) { + String curWrapperName = curWrapper.getName(); + + // Check if current wrapper is one of the combined vaccines + if (ImmunizationLibrary.getInstance().COMBINED_VACCINES.contains(curWrapperName)) { + // Check if any of the sister vaccines is currAffectedVaccineName + String[] allSisters = ImmunizationLibrary.getInstance().COMBINED_VACCINES_MAP.get(curWrapperName).split(" / "); + for (int i = 0; i < allSisters.length; i++) { + if (allSisters[i].replace(" ", "").equalsIgnoreCase(curAffectedVaccineName.replace(" ", ""))) { + curWrapperName = allSisters[i]; + break; + } + } + } + + if (curWrapperName.replace(" ", "").toLowerCase() + .contains(curAffectedVaccineName.replace(" ", "").toLowerCase())) { + if (!affectedGroups.containsKey(curGroup)) { + affectedGroups.put(curGroup, new ArrayList()); + } + + affectedGroups.get(curGroup).add(curWrapper); + viewFound = true; + } + + if (viewFound) break; + } + + if (viewFound) break; + } + } + + for (VaccineGroup curGroup : affectedGroups.keySet()) { + try { + vaccineGroups.remove(curGroup); + addVaccineGroup(Integer.valueOf((String) curGroup.getTag(R.id.vaccine_group_parent_id)), + //TODO if error use immediately below + // (org.smartregister.immunization.domain.jsonmapping.VaccineGroup) curGroup.getTag(R.id.vaccine_group_vaccine_data), + curGroup.getVaccineData(), + vaccineList, alerts); + } catch (Exception e) { + Timber.e(e); + } + } + } + } + + //Recurring Service + @Override + public void onGiveToday(ServiceWrapper tag, View v) { + if (tag != null) { + View view = RecurringServiceUtils.getLastOpenedServiceView(serviceGroups); + saveService(tag, view); + } + } + + @Override + public void onGiveEarlier(ServiceWrapper tag, View v) { + if (tag != null) { + View view = RecurringServiceUtils.getLastOpenedServiceView(serviceGroups); + saveService(tag, view); + } + } + + @Override + public void onUndoService(ServiceWrapper tag, View v) { + Utils.startAsyncTask(new UndoServiceTask(tag), null); + } + + public void saveService(ServiceWrapper tag, final View view) { + if (tag == null) { + return; + } + + ServiceWrapper[] arrayTags = {tag}; + SaveServiceTask backgroundTask = new SaveServiceTask(); + String providerId = ImmunizationLibrary.getInstance().context().allSharedPreferences().fetchRegisteredANM(); + + backgroundTask.setProviderId(providerId); + backgroundTask.setView(view); + Utils.startAsyncTask(backgroundTask, arrayTags); + } + private class SaveVaccinesTask extends AsyncTask, List>> { private View view; @@ -589,27 +703,6 @@ protected Pair, List> doInBackground(VaccineW } } - private String constructChildName() { - String firstName = Utils.getValue(childDetails.getColumnmaps(), "first_name", true); - String lastName = Utils.getValue(childDetails.getColumnmaps(), "last_name", true); - return getName(firstName, lastName).trim(); - } - - - private VaccineGroup getLastOpenedView() { - if (vaccineGroups == null) { - return null; - } - - for (VaccineGroup vaccineGroup : vaccineGroups) { - if (vaccineGroup.isModalOpen()) { - return vaccineGroup; - } - } - - return null; - } - private class UpdateViewTask extends AsyncTask>> { private VaccineRepository vaccineRepository; @@ -742,10 +835,10 @@ protected Map> doInBackground(Void... voids) { private class UndoVaccineTask extends AsyncTask { - private VaccineWrapper tag; - private View v; private final VaccineRepository vaccineRepository; private final AlertService alertService; + private VaccineWrapper tag; + private View v; private List vaccineList; private List alertList; private List affectedVaccines; @@ -799,63 +892,6 @@ protected void onPostExecute(Void params) { } } - private void updateVaccineGroupsUsingAlerts(List affectedVaccines, List vaccineList, List alerts) { - if (affectedVaccines != null && vaccineList != null) { - // Update all other affected vaccine groups - HashMap> affectedGroups = new HashMap<>(); - for (String curAffectedVaccineName : affectedVaccines) { - boolean viewFound = false; - // Check what group it is in - for (VaccineGroup curGroup : vaccineGroups) { - ArrayList groupWrappers = curGroup.getAllVaccineWrappers(); - if (groupWrappers == null) groupWrappers = new ArrayList<>(); - for (VaccineWrapper curWrapper : groupWrappers) { - String curWrapperName = curWrapper.getName(); - - // Check if current wrapper is one of the combined vaccines - if (ImmunizationLibrary.getInstance().COMBINED_VACCINES.contains(curWrapperName)) { - // Check if any of the sister vaccines is currAffectedVaccineName - String[] allSisters = ImmunizationLibrary.getInstance().COMBINED_VACCINES_MAP.get(curWrapperName).split(" / "); - for (int i = 0; i < allSisters.length; i++) { - if (allSisters[i].replace(" ", "").equalsIgnoreCase(curAffectedVaccineName.replace(" ", ""))) { - curWrapperName = allSisters[i]; - break; - } - } - } - - if (curWrapperName.replace(" ", "").toLowerCase() - .contains(curAffectedVaccineName.replace(" ", "").toLowerCase())) { - if (!affectedGroups.containsKey(curGroup)) { - affectedGroups.put(curGroup, new ArrayList()); - } - - affectedGroups.get(curGroup).add(curWrapper); - viewFound = true; - } - - if (viewFound) break; - } - - if (viewFound) break; - } - } - - for (VaccineGroup curGroup : affectedGroups.keySet()) { - try { - vaccineGroups.remove(curGroup); - addVaccineGroup(Integer.valueOf((String) curGroup.getTag(R.id.vaccine_group_parent_id)), - //TODO if error use immediately below - // (org.smartregister.immunization.domain.jsonmapping.VaccineGroup) curGroup.getTag(R.id.vaccine_group_vaccine_data), - curGroup.getVaccineData(), - vaccineList, alerts); - } catch (Exception e) { - Timber.e(e); - } - } - } - } - private class NamedObject { public final String name; public final T object; @@ -866,43 +902,6 @@ public NamedObject(String name, T object) { } } - //Recurring Service - @Override - public void onGiveToday(ServiceWrapper tag, View v) { - if (tag != null) { - View view = RecurringServiceUtils.getLastOpenedServiceView(serviceGroups); - saveService(tag, view); - } - } - - @Override - public void onGiveEarlier(ServiceWrapper tag, View v) { - if (tag != null) { - View view = RecurringServiceUtils.getLastOpenedServiceView(serviceGroups); - saveService(tag, view); - } - } - - @Override - public void onUndoService(ServiceWrapper tag, View v) { - Utils.startAsyncTask(new UndoServiceTask(tag), null); - } - - public void saveService(ServiceWrapper tag, final View view) { - if (tag == null) { - return; - } - - ServiceWrapper[] arrayTags = {tag}; - SaveServiceTask backgroundTask = new SaveServiceTask(); - String providerId = ImmunizationLibrary.getInstance().context().allSharedPreferences().fetchRegisteredANM(); - - backgroundTask.setProviderId(providerId); - backgroundTask.setView(view); - Utils.startAsyncTask(backgroundTask, arrayTags); - } - - public class SaveServiceTask extends AsyncTask, List, List>> { private View view; diff --git a/sample/src/main/java/org/smartregister/immunization/sample/repository/SampleRepository.java b/sample/src/main/java/org/smartregister/immunization/sample/repository/SampleRepository.java index c958cc26..f88cd63a 100644 --- a/sample/src/main/java/org/smartregister/immunization/sample/repository/SampleRepository.java +++ b/sample/src/main/java/org/smartregister/immunization/sample/repository/SampleRepository.java @@ -10,6 +10,7 @@ import org.smartregister.immunization.repository.RecurringServiceRecordRepository; import org.smartregister.immunization.repository.RecurringServiceTypeRepository; import org.smartregister.immunization.repository.VaccineNameRepository; +import org.smartregister.immunization.repository.VaccineOverdueCountRepository; import org.smartregister.immunization.repository.VaccineRepository; import org.smartregister.immunization.repository.VaccineTypeRepository; import org.smartregister.immunization.sample.BuildConfig; @@ -62,7 +63,6 @@ public void onCreate(SQLiteDatabase database) { IMDatabaseUtils.populateRecurringServices(context, database, recurringServiceTypeRepository); onUpgrade(database, 1, BuildConfig.DATABASE_VERSION); - } @Override @@ -87,6 +87,9 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { break; case 6: upgradeToVersion6(db); + break; + case 7: + upgradeToVersion7(db); default: break; } @@ -118,7 +121,6 @@ public synchronized SQLiteDatabase getReadableDatabase(String password) { Timber.e(e); return null; } - } @Override @@ -144,7 +146,6 @@ public synchronized void close() { super.close(); } - private void upgradeToVersion2(SQLiteDatabase db) { try { db.execSQL(VaccineRepository.UPDATE_TABLE_ADD_EVENT_ID_COL); @@ -162,7 +163,6 @@ private void upgradeToVersion2(SQLiteDatabase db) { db.execSQL(VaccineRepository.UPDATE_TABLE_ADD_HIA2_STATUS_COL); IMDatabaseUtils.accessAssetsAndFillDataBaseForVaccineTypes(context, db); - } catch (Exception e) { Timber.e(e); } @@ -205,14 +205,19 @@ private void upgradeToVersion5(SQLiteDatabase db) { private void upgradeToVersion6(SQLiteDatabase db) { try { - AllSharedPreferences sharedPreferences = SampleApplication.getInstance().context().userService() - .getAllSharedPreferences(); + AllSharedPreferences sharedPreferences = SampleApplication.getInstance().context().userService().getAllSharedPreferences(); db.execSQL(VaccineRepository.UPDATE_TABLE_VACCINES_ADD_OUTREACH_COL); db.execSQL(VaccineRepository.UPDATE_OUTREACH_QUERRY, new String[]{sharedPreferences.fetchDefaultLocalityId(sharedPreferences.fetchPioneerUser())}); - } catch (Exception e) { Timber.e(e); } } + private void upgradeToVersion7(SQLiteDatabase db) { + try { + db.execSQL(VaccineOverdueCountRepository.CREATE_TABLE_SQL); + } catch (Exception e) { + Timber.e(e); + } + } }