diff --git a/res/xml/adaptive_sleep_detail.xml b/res/xml/adaptive_sleep_detail.xml index 606bb55d465..568e6944581 100644 --- a/res/xml/adaptive_sleep_detail.xml +++ b/res/xml/adaptive_sleep_detail.xml @@ -28,6 +28,14 @@ settings:preview="@drawable/adaptive_sleep" settings:controller="com.android.settings.widget.VideoPreferenceController"/> + + { - final Intent intent = new Intent( - android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); - intent.setData(Uri.parse("package:" + mPackageName)); - mContext.startActivity(intent); - return true; - }); - return preference; - } - - @VisibleForTesting - void setupForTesting(PackageManager packageManager, Context context) { - mContext = context; - mPackageManager = packageManager; - mPermissionRequiredPreference = createPermissionMissionPreference(); - } } diff --git a/tests/robotests/src/com/android/settings/display/AdaptiveSleepSettingsTest.java b/tests/robotests/src/com/android/settings/display/AdaptiveSleepPermissionPreferenceControllerTest.java similarity index 58% rename from tests/robotests/src/com/android/settings/display/AdaptiveSleepSettingsTest.java rename to tests/robotests/src/com/android/settings/display/AdaptiveSleepPermissionPreferenceControllerTest.java index 971ebc52d67..f2edf980443 100644 --- a/tests/robotests/src/com/android/settings/display/AdaptiveSleepSettingsTest.java +++ b/tests/robotests/src/com/android/settings/display/AdaptiveSleepPermissionPreferenceControllerTest.java @@ -16,65 +16,68 @@ package com.android.settings.display; +import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; -import androidx.preference.PreferenceScreen; +import androidx.preference.Preference; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) -public class AdaptiveSleepSettingsTest { - private AdaptiveSleepSettings mSettings; - private static final String PACKAGE_NAME = "package_name"; +public class AdaptiveSleepPermissionPreferenceControllerTest { + private final static String PACKAGE_NAME = "package_name"; + private AdaptiveSleepPermissionPreferenceController mController; @Mock private PackageManager mPackageManager; @Mock - private PreferenceScreen mScreen; + private Preference mPreference; @Before public void setUp() { MockitoAnnotations.initMocks(this); - - Context context = RuntimeEnvironment.application; - mSettings = spy(new AdaptiveSleepSettings()); - + Context context = Mockito.spy(RuntimeEnvironment.application); + doReturn(mPackageManager).when(context).getPackageManager(); doReturn(PACKAGE_NAME).when(mPackageManager).getAttentionServicePackageName(); doReturn(PackageManager.PERMISSION_GRANTED).when(mPackageManager).checkPermission( Manifest.permission.CAMERA, PACKAGE_NAME); - doReturn(mScreen).when(mSettings).getPreferenceScreen(); - - mSettings.setupForTesting(mPackageManager, context); - mSettings.onAttach(context); - + mController = new AdaptiveSleepPermissionPreferenceController(context, "test_key"); + doReturn(mController.getPreferenceKey()).when(mPreference).getKey(); } @Test - public void onResume_hasPermission_preferenceInvisible() { - mSettings.onResume(); - - assertThat(mSettings.mPermissionRequiredPreference.isVisible()).isFalse(); + public void getAvailabilityStatus_returnAvailableUnsearchable() { + assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE_UNSEARCHABLE); } @Test - public void onResume_noPermission_preferenceVisible() { + public void updateStates_permissionGranted_preferenceInvisible() { + mController.updateState(mPreference); + + verify(mPreference).setVisible(false); + } + + @Test + public void updateStates_permissionRevoked_preferenceVisible() { doReturn(PackageManager.PERMISSION_DENIED).when(mPackageManager).checkPermission( Manifest.permission.CAMERA, PACKAGE_NAME); - mSettings.onResume(); + mController.updateState(mPreference); - assertThat(mSettings.mPermissionRequiredPreference.isVisible()).isTrue(); + verify(mPreference).setVisible(true); } }