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;
|
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_COARSE_LOCATION;
|
||||||
import static android.Manifest.permission.ACCESS_FINE_LOCATION;
|
import static android.Manifest.permission.ACCESS_FINE_LOCATION;
|
||||||
|
|
||||||
@@ -11,6 +10,7 @@ import android.content.IntentFilter;
|
|||||||
import android.location.LocationManager;
|
import android.location.LocationManager;
|
||||||
import android.permission.RuntimePermissionPresenter;
|
import android.permission.RuntimePermissionPresenter;
|
||||||
|
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
import com.android.settings.R;
|
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 com.android.settingslib.core.lifecycle.events.OnStop;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
|
||||||
|
|
||||||
public class TopLevelLocationPreferenceController extends BasePreferenceController implements
|
public class TopLevelLocationPreferenceController extends BasePreferenceController implements
|
||||||
LifecycleObserver, OnStart, OnStop {
|
LifecycleObserver, OnStart, OnStop {
|
||||||
@@ -56,6 +55,12 @@ public class TopLevelLocationPreferenceController extends BasePreferenceControll
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
void setLocationAppCount(int numApps) {
|
||||||
|
mNumTotal = numApps;
|
||||||
|
refreshSummary(mPreference);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
super.updateState(preference);
|
super.updateState(preference);
|
||||||
@@ -68,8 +73,7 @@ public class TopLevelLocationPreferenceController extends BasePreferenceControll
|
|||||||
RuntimePermissionPresenter.getInstance(mContext).countPermissionApps(
|
RuntimePermissionPresenter.getInstance(mContext).countPermissionApps(
|
||||||
Arrays.asList(ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION), false, false,
|
Arrays.asList(ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION), false, false,
|
||||||
(numApps) -> {
|
(numApps) -> {
|
||||||
mNumTotal = numApps;
|
setLocationAppCount(numApps);
|
||||||
refreshSummary(preference);
|
|
||||||
}, null);
|
}, 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