diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..fba6d5e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,34 @@ +# 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: Android CI with Gradle + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + unit_tests: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 1.8 + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Install NDK + run: echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "ndk;21.0.6113669" --sdk_root=${ANDROID_SDK_ROOT} + - name: Grant execute permission for gradlew + run: chmod +x gradlew + - name: Run unit tests with Gradle + run: ./gradlew :opensrp-chw-malaria:jacocoTestReport --stacktrace + - name: Generate Javadoc with Gradle + run: ./gradlew javadoc + - name: Upload coverage to Coveralls with Gradle + run: ./gradlew :opensrp-chw-malaria:coveralls --stacktrace + env: + COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_TOKEN }} \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 114adff..0000000 --- a/.travis.yml +++ /dev/null @@ -1,40 +0,0 @@ -language: android -# sudo set to required because of an issue with how TravisCI handles builds in Docker containers https://github.com/travis-ci/travis-ci/issues/3695. -# Setting sudo to required prevents Travis from testing the project in a Docker container. -sudo: required -jdk: oraclejdk8 -dist: precise - -before_cache: - -rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - -rm -fr $HOME/.gradle/caches/*/plugin-resolution/ - -cache: - directories: - - $HOME/.gradle/caches/ - - $HOME/.gradle/wrapper/ - -android: - components: - # tools required - - tools - # The BuildTools version used by your project - - build-tools-28.0.3 - # The SDK version used to compile your projects - - android-22 - - android-28 - # Additional components - - extra-google-m2repository - - extra-android-m2repository - -script: - - echo "Travis branch is $TRAVIS_BRANCH" - - echo "Travis branch is in pull request $TRAVIS_PULL+REQUEST" - - chmod 755 gradlew - - ls -la - #Run jacocoTestReport -> Runs all unit tests & instrumentation tests - - travis_wait ./gradlew :opensrp-chw-malaria:clean :opensrp-chw-malaria:jacocoTestReport coveralls --stacktrace - -notifications: - slack: - secure: fAiZ4yA7DM6nUKh7nqsCTqZBb03VEAvi5NcRu5mNh5coNn/50XNeZl+qpv7Dw70Ef85Y/k68uc6KwTGVqPXEmVq9Hk3e7lqpBNN8rufvgCYDDGPmywBmU5BhSeykKo0Ee7llM3mRR/EipjIWw1+YvMcS3hCoygf/UlMDDhG0Jo0= diff --git a/build.gradle b/build.gradle index 5975934..931a67f 100644 --- a/build.gradle +++ b/build.gradle @@ -2,11 +2,13 @@ buildscript { repositories { google() + jcenter() mavenCentral() } dependencies { classpath "io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.11.0" + classpath 'com.android.tools.build:gradle:3.5.3' } } @@ -55,7 +57,7 @@ subprojects { // Improve build server performance by allowing disabling of pre-dexing // (see http://tools.android.com/tech-docs/new-build-system/tips#TOC-Improving-Build-Server-performance.) project.plugins.whenPluginAdded { plugin -> - if("com.android.build.gradle.AppPlugin".equals(plugin.class.name)) { + if ("com.android.build.gradle.AppPlugin".equals(plugin.class.name)) { project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs } else if ("com.android.build.gradle.LibraryPlugin".equals(plugin.class.name)) { project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs diff --git a/gradle.properties b/gradle.properties index 8b6736b..c760904 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -VERSION_NAME=1.2.18-SNAPSHOT +VERSION_NAME=1.2.19-SNAPSHOT VERSION_CODE=1 GROUP=org.smartregister POM_SETTING_DESCRIPTION=OpenSRP Client CHW Malaria Library diff --git a/opensrp-chw-malaria/build.gradle b/opensrp-chw-malaria/build.gradle index b3125dc..5f625fd 100644 --- a/opensrp-chw-malaria/build.gradle +++ b/opensrp-chw-malaria/build.gradle @@ -1,4 +1,3 @@ -description = 'OpenSRP chw malaria client library' buildscript { repositories { @@ -7,13 +6,16 @@ buildscript { } dependencies { classpath 'com.android.tools.build:gradle:3.5.3' - classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.8.2' } } -apply plugin: 'jacoco' -apply plugin: 'com.github.kt3k.coveralls' -apply plugin: 'com.android.library' +plugins { + id 'jacoco' + id 'com.github.kt3k.coveralls' version '2.10.2' + id 'com.android.library' +} + +description = 'OpenSRP chw malaria client library' jacoco { toolVersion = "0.8.0" @@ -148,7 +150,7 @@ task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest']) { getReports().getHtml().setDestination(file("${buildDir}/reports/jacoco/jacocoRootReport/html")) def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*', '**/*$ViewBinder*.*'] - def debugTree = fileTree(dir: "$project.buildDir/intermediates/classes/debug", excludes: fileFilter) + def debugTree = fileTree(dir: "$project.buildDir/intermediates/javac/debug/classes", excludes: fileFilter) def mainSrc = "$project.projectDir/src/main/java" sourceDirectories = files([mainSrc]) diff --git a/opensrp-chw-malaria/src/main/java/org/smartregister/chw/malaria/activity/BaseMalariaProfileActivity.java b/opensrp-chw-malaria/src/main/java/org/smartregister/chw/malaria/activity/BaseMalariaProfileActivity.java index 643c94b..1de0c34 100644 --- a/opensrp-chw-malaria/src/main/java/org/smartregister/chw/malaria/activity/BaseMalariaProfileActivity.java +++ b/opensrp-chw-malaria/src/main/java/org/smartregister/chw/malaria/activity/BaseMalariaProfileActivity.java @@ -209,7 +209,7 @@ public void setProfileViewWithData() { int age = new Period(new DateTime(memberObject.getAge()), new DateTime()).getYears(); textViewName.setText(String.format("%s %s %s, %d", memberObject.getFirstName(), memberObject.getMiddleName(), memberObject.getLastName(), age)); - textViewGender.setText(memberObject.getGender()); + textViewGender.setText(MalariaUtil.getGenderTranslated(this, memberObject.getGender())); textViewLocation.setText(memberObject.getAddress()); textViewUniqueID.setText(memberObject.getUniqueId()); diff --git a/opensrp-chw-malaria/src/main/java/org/smartregister/chw/malaria/util/MalariaUtil.java b/opensrp-chw-malaria/src/main/java/org/smartregister/chw/malaria/util/MalariaUtil.java index ee9e8bc..e221178 100644 --- a/opensrp-chw-malaria/src/main/java/org/smartregister/chw/malaria/util/MalariaUtil.java +++ b/opensrp-chw-malaria/src/main/java/org/smartregister/chw/malaria/util/MalariaUtil.java @@ -20,6 +20,7 @@ import android.widget.Toast; import org.json.JSONObject; +import org.opensrp.api.constants.Gender; import org.smartregister.chw.malaria.MalariaLibrary; import org.smartregister.chw.malaria.contract.BaseMalariaCallDialogContract; import org.smartregister.chw.malaria.dao.MalariaDao; @@ -137,4 +138,13 @@ protected Void doInBackground(Void... voids) { } } + + public static String getGenderTranslated(Context context, String gender) { + if (gender.equalsIgnoreCase(Gender.MALE.toString())) { + return context.getResources().getString(R.string.male); + } else if (gender.equalsIgnoreCase(Gender.FEMALE.toString())) { + return context.getResources().getString(R.string.female); + } + return ""; + } } diff --git a/opensrp-chw-malaria/src/main/java/org/smartregister/provider/MalariaRegisterProvider.java b/opensrp-chw-malaria/src/main/java/org/smartregister/provider/MalariaRegisterProvider.java index 0e6757e..f0f410c 100644 --- a/opensrp-chw-malaria/src/main/java/org/smartregister/provider/MalariaRegisterProvider.java +++ b/opensrp-chw-malaria/src/main/java/org/smartregister/provider/MalariaRegisterProvider.java @@ -13,6 +13,7 @@ import org.joda.time.Period; import org.smartregister.chw.malaria.fragment.BaseMalariaRegisterFragment; import org.smartregister.chw.malaria.util.DBConstants; +import org.smartregister.chw.malaria.util.MalariaUtil; import org.smartregister.commonregistry.CommonPersonObjectClient; import org.smartregister.cursoradapter.RecyclerViewProvider; import org.smartregister.malaria.R; @@ -62,8 +63,10 @@ private String updateMemberGender(CommonPersonObjectClient commonPersonObjectCli return context.getResources().getString(R.string.anc_string); } else if ("0".equals(Utils.getValue(commonPersonObjectClient.getColumnmaps(), DBConstants.KEY.IS_PNC_CLOSED, false))) { return context.getResources().getString(R.string.pnc_string); - } else - return Utils.getValue(commonPersonObjectClient.getColumnmaps(), DBConstants.KEY.GENDER, true); + } else { + String gender = Utils.getValue(commonPersonObjectClient.getColumnmaps(), DBConstants.KEY.GENDER, true); + return MalariaUtil.getGenderTranslated(context, gender); + } } private void populatePatientColumn(CommonPersonObjectClient pc, final RegisterViewHolder viewHolder) { diff --git a/opensrp-chw-malaria/src/main/res/values-sw/strings.xml b/opensrp-chw-malaria/src/main/res/values-sw/strings.xml index 6101750..0cca6b8 100644 --- a/opensrp-chw-malaria/src/main/res/values-sw/strings.xml +++ b/opensrp-chw-malaria/src/main/res/values-sw/strings.xml @@ -46,5 +46,7 @@ Baada ya kujifungua Tembeleo limekamilika HARIRI + Me + Ke diff --git a/opensrp-chw-malaria/src/main/res/values/strings.xml b/opensrp-chw-malaria/src/main/res/values/strings.xml index 9d0d8b6..7e0b10b 100644 --- a/opensrp-chw-malaria/src/main/res/values/strings.xml +++ b/opensrp-chw-malaria/src/main/res/values/strings.xml @@ -48,5 +48,7 @@ PNC Visit Done EDIT + Male + Female diff --git a/opensrp-chw-malaria/src/test/java/org/smartregister/provider/MalariaRegisterProviderTest.java b/opensrp-chw-malaria/src/test/java/org/smartregister/provider/MalariaRegisterProviderTest.java index b58d5eb..2a2b4f4 100644 --- a/opensrp-chw-malaria/src/test/java/org/smartregister/provider/MalariaRegisterProviderTest.java +++ b/opensrp-chw-malaria/src/test/java/org/smartregister/provider/MalariaRegisterProviderTest.java @@ -100,12 +100,14 @@ public void isPncClosed() throws Exception { @Test public void updateMemberGender() throws Exception { Activity activity = Mockito.mock(Activity.class); + Resources resources = Mockito.mock(Resources.class); MalariaRegisterProvider provider = new MalariaRegisterProvider(activity, listener, listener, null); Map map = new HashMap<>(); map.put(DBConstants.KEY.GENDER, "Male"); + Mockito.when(activity.getResources()).thenReturn(resources); Mockito.when(commonPersonObjectClient.getColumnmaps()).thenReturn(map); - Assert.assertEquals("Male", Whitebox.invokeMethod(provider, "updateMemberGender", commonPersonObjectClient)); + Assert.assertEquals(resources.getString(R.string.male), Whitebox.invokeMethod(provider, "updateMemberGender", commonPersonObjectClient)); }