Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 769a9fb0 authored by Lifu Tang's avatar Lifu Tang
Browse files

Unit test for AppLocationPermissionPreferenceController

Bug: 120910747
Test: build and run the unit test
Change-Id: Id5f79d0f6b143d1ef5e37d75c27a64b4e1dcd9e0
parent 5585d5e9
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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;

+40 −0
Original line number Diff line number Diff line
@@ -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));
    }
}