Add the missing unit test
Bug: 120910747 Test: build and run the unit test Change-Id: Id1feb51a1577e9d0c90bff812d78e581e5dc5168
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
package com.android.settings.location;
|
||||
|
||||
import static android.Manifest.permission.ACCESS_BACKGROUND_LOCATION;
|
||||
import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
|
||||
import static android.Manifest.permission.ACCESS_FINE_LOCATION;
|
||||
|
||||
@@ -11,6 +10,7 @@ import android.content.IntentFilter;
|
||||
import android.location.LocationManager;
|
||||
import android.permission.RuntimePermissionPresenter;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.R;
|
||||
@@ -20,7 +20,6 @@ import com.android.settingslib.core.lifecycle.events.OnStart;
|
||||
import com.android.settingslib.core.lifecycle.events.OnStop;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
public class TopLevelLocationPreferenceController extends BasePreferenceController implements
|
||||
LifecycleObserver, OnStart, OnStop {
|
||||
@@ -56,6 +55,12 @@ public class TopLevelLocationPreferenceController extends BasePreferenceControll
|
||||
}
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void setLocationAppCount(int numApps) {
|
||||
mNumTotal = numApps;
|
||||
refreshSummary(mPreference);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateState(Preference preference) {
|
||||
super.updateState(preference);
|
||||
@@ -68,8 +73,7 @@ public class TopLevelLocationPreferenceController extends BasePreferenceControll
|
||||
RuntimePermissionPresenter.getInstance(mContext).countPermissionApps(
|
||||
Arrays.asList(ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION), false, false,
|
||||
(numApps) -> {
|
||||
mNumTotal = numApps;
|
||||
refreshSummary(preference);
|
||||
setLocationAppCount(numApps);
|
||||
}, null);
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,86 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.location;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.content.Context;
|
||||
import android.location.LocationManager;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class TopLevelLocationPreferenceControllerTest {
|
||||
private static final String PREFERENCE_KEY = "top_level_location";
|
||||
private Context mContext;
|
||||
private TopLevelLocationPreferenceController mController;
|
||||
private LocationManager mLocationManager;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mContext = RuntimeEnvironment.application;
|
||||
mController = new TopLevelLocationPreferenceController(mContext, PREFERENCE_KEY);
|
||||
mLocationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_byDefault_shouldReturnTrue() {
|
||||
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_settings_summary_location_off));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSummary_whenLocationIsOn_shouldShowLoadingString() {
|
||||
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() {
|
||||
final int LOCATION_APP_COUNT = 1;
|
||||
mLocationManager.setLocationEnabledForUser(true, android.os.Process.myUserHandle());
|
||||
mController.setLocationAppCount(LOCATION_APP_COUNT);
|
||||
assertThat(mController.getSummary()).isEqualTo(
|
||||
mContext.getResources().getQuantityString(
|
||||
R.plurals.location_settings_summary_location_on,
|
||||
LOCATION_APP_COUNT, LOCATION_APP_COUNT));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSummary_whenLocationAppCountIsGreaterThanOne_shouldShowPluralString() {
|
||||
final int LOCATION_APP_COUNT = 5;
|
||||
mLocationManager.setLocationEnabledForUser(true, android.os.Process.myUserHandle());
|
||||
mController.setLocationAppCount(LOCATION_APP_COUNT);
|
||||
assertThat(mController.getSummary()).isEqualTo(
|
||||
mContext.getResources().getQuantityString(
|
||||
R.plurals.location_settings_summary_location_on,
|
||||
LOCATION_APP_COUNT, LOCATION_APP_COUNT));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user