From 769a9fb04c0758d7c3545852e19be715d83cc79f Mon Sep 17 00:00:00 2001 From: Lifu Tang Date: Thu, 27 Dec 2018 12:33:05 -0800 Subject: [PATCH] Unit test for AppLocationPermissionPreferenceController Bug: 120910747 Test: build and run the unit test Change-Id: Id5f79d0f6b143d1ef5e37d75c27a64b4e1dcd9e0 --- ...ocationPermissionPreferenceController.java | 7 +++- ...ionPermissionPreferenceControllerTest.java | 40 +++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/location/AppLocationPermissionPreferenceController.java b/src/com/android/settings/location/AppLocationPermissionPreferenceController.java index c4494b4dc24..1fd19860659 100644 --- a/src/com/android/settings/location/AppLocationPermissionPreferenceController.java +++ b/src/com/android/settings/location/AppLocationPermissionPreferenceController.java @@ -9,6 +9,7 @@ import android.location.LocationManager; import android.permission.PermissionControllerManager; import android.provider.Settings; +import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import com.android.settings.R; @@ -24,9 +25,11 @@ public class AppLocationPermissionPreferenceController extends private static final String KEY_APP_LEVEL_PERMISSIONS = "app_level_permissions"; /** Total number of apps that has location permission. */ - private int mNumTotal = -1; + @VisibleForTesting + int mNumTotal = -1; /** Total number of apps that has background location permission. */ - private int mNumBackground = -1; + @VisibleForTesting + int mNumBackground = -1; private final LocationManager mLocationManager; private Preference mPreference; diff --git a/tests/robotests/src/com/android/settings/location/AppLocationPermissionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/AppLocationPermissionPreferenceControllerTest.java index 6379e445f4b..bddd5fef1c8 100644 --- a/tests/robotests/src/com/android/settings/location/AppLocationPermissionPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/location/AppLocationPermissionPreferenceControllerTest.java @@ -3,10 +3,12 @@ package com.android.settings.location; import static com.google.common.truth.Truth.assertThat; import android.content.Context; +import android.location.LocationManager; import android.provider.Settings; import androidx.lifecycle.LifecycleOwner; +import com.android.settings.R; import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.Before; @@ -27,6 +29,7 @@ public class AppLocationPermissionPreferenceControllerTest { private LifecycleOwner mLifecycleOwner; private Lifecycle mLifecycle; + private LocationManager mLocationManager; @Before public void setUp() { @@ -35,6 +38,7 @@ public class AppLocationPermissionPreferenceControllerTest { mLifecycleOwner = () -> mLifecycle; mLifecycle = new Lifecycle(mLifecycleOwner); mController = new AppLocationPermissionPreferenceController(mContext, mLifecycle); + mLocationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE); } @Test @@ -52,4 +56,40 @@ public class AppLocationPermissionPreferenceControllerTest { assertThat(mController.isAvailable()).isTrue(); } + + @Test + public void getSummary_whenLocationIsOff_shouldReturnStringForOff() { + mLocationManager.setLocationEnabledForUser(false, android.os.Process.myUserHandle()); + + assertThat(mController.getSummary()).isEqualTo( + mContext.getString(R.string.location_app_permission_summary_location_off)); + } + + @Test + public void getSummary_whenLocationIsOn_shouldReturnLoadingString() { + mLocationManager.setLocationEnabledForUser(true, android.os.Process.myUserHandle()); + + assertThat(mController.getSummary()).isEqualTo( + mContext.getString(R.string.location_settings_loading_app_permission_stats)); + } + + @Test + public void getSummary_whenLocationAppCountIsOne_shouldShowSingularString() { + mLocationManager.setLocationEnabledForUser(true, android.os.Process.myUserHandle()); + mController.mNumBackground = 1; + mController.mNumTotal = 1; + + assertThat(mController.getSummary()).isEqualTo(mContext.getResources().getQuantityString( + R.plurals.location_app_permission_summary_location_on, 1, 1, 1)); + } + + @Test + public void getSummary_whenLocationAppCountIsGreaterThanOne_shouldShowPluralString() { + mLocationManager.setLocationEnabledForUser(true, android.os.Process.myUserHandle()); + mController.mNumBackground = 5; + mController.mNumTotal = 10; + + assertThat(mController.getSummary()).isEqualTo(mContext.getResources().getQuantityString( + R.plurals.location_app_permission_summary_location_on, 5, 5, 10)); + } }