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

Commit 92a61fac authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix DeviceStateAutoRotateSettingControllerTest to adapt to refactored...

Merge "Fix DeviceStateAutoRotateSettingControllerTest to adapt to refactored settingManager" into main
parents a39721af fe6aed24
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -56,20 +56,21 @@ public class DeviceStateAutoRotateSettingController extends TogglePreferenceCont
    @VisibleForTesting
    DeviceStateAutoRotateSettingController(Context context, int deviceState,
            String deviceStateDescription, int order,
            MetricsFeatureProvider metricsFeatureProvider) {
            MetricsFeatureProvider metricsFeatureProvider,
            DeviceStateAutoRotateSettingManager deviceStateAutoRotateSettingManager) {
        super(context, getPreferenceKeyForDeviceState(deviceState));
        mMetricsFeatureProvider = metricsFeatureProvider;
        mDeviceState = deviceState;
        mDeviceStateDescription = deviceStateDescription;
        mAutoRotateSettingsManager =
                DeviceStateAutoRotateSettingManagerProvider.getSingletonInstance(context);
        mAutoRotateSettingsManager = deviceStateAutoRotateSettingManager;
        mOrder = order;
    }

    public DeviceStateAutoRotateSettingController(Context context, int deviceState,
            String deviceStateDescription, int order) {
        this(context, deviceState, deviceStateDescription, order,
                FeatureFactory.getFeatureFactory().getMetricsFeatureProvider());
                FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(),
                DeviceStateAutoRotateSettingManagerProvider.getSingletonInstance(context));
    }

    void init(Lifecycle lifecycle) {
+40 −16
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ import static com.android.settings.testutils.DeviceStateAutoRotateSettingTestUti

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -40,11 +42,14 @@ import com.android.settings.R;
import com.android.settings.testutils.shadow.ShadowRotationPolicy;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.devicestate.DeviceStateAutoRotateSettingManager;
import com.android.settingslib.devicestate.DeviceStateAutoRotateSettingManager.DeviceStateAutoRotateSettingListener;
import com.android.settingslib.search.SearchIndexableRaw;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
@@ -65,7 +70,10 @@ public class DeviceStateAutoRotateSettingControllerTest {
    private static final int DEFAULT_ORDER = -10;

    private final Context mContext = Mockito.spy(RuntimeEnvironment.application);
    private DeviceStateAutoRotateSettingManager mAutoRotateSettingsManager;
    private DeviceStateAutoRotateSettingManager mSpyAutoRotateSettingsManager;

    @Captor private ArgumentCaptor<DeviceStateAutoRotateSettingListener>
            mDeviceStateAutoRotateSettingListenerCaptor;

    @Mock private MetricsFeatureProvider mMetricsFeatureProvider;
    @Mock private DeviceStateManager mDeviceStateManager;
@@ -83,15 +91,17 @@ public class DeviceStateAutoRotateSettingControllerTest {
        doReturn(List.of(DEFAULT_DEVICE_STATE)).when(
                mDeviceStateManager).getSupportedDeviceStates();
        setDeviceStateRotationLockEnabled(false, mResources);
        mAutoRotateSettingsManager =
                DeviceStateAutoRotateSettingManagerProvider.getSingletonInstance(mContext);
        mSpyAutoRotateSettingsManager =
                Mockito.spy(
                        DeviceStateAutoRotateSettingManagerProvider.getSingletonInstance(mContext));

        mController = new DeviceStateAutoRotateSettingController(
                mContext,
                DEFAULT_DEVICE_STATE.getIdentifier(),
                DEFAULT_DEVICE_STATE_DESCRIPTION,
                DEFAULT_ORDER,
                mMetricsFeatureProvider
                mMetricsFeatureProvider,
                mSpyAutoRotateSettingsManager
        );
    }

@@ -148,38 +158,52 @@ public class DeviceStateAutoRotateSettingControllerTest {

    @Test
    public void isChecked_settingForStateIsUnlocked_returnsTrue() {
        mAutoRotateSettingsManager.updateSetting(
                DEFAULT_DEVICE_STATE.getIdentifier(), /* rotationLocked= */ false);
        mController.onStart();
        verify(mSpyAutoRotateSettingsManager, atLeastOnce()).registerListener(
                mDeviceStateAutoRotateSettingListenerCaptor.capture());
        when(mSpyAutoRotateSettingsManager.isRotationLocked(
                eq(DEFAULT_DEVICE_STATE.getIdentifier()))).thenReturn(false);

        mDeviceStateAutoRotateSettingListenerCaptor.getValue().onSettingsChanged();

        assertThat(mController.isChecked()).isTrue();
    }

    @Test
    public void isChecked_settingForStateIsLocked_returnsFalse() {
        mAutoRotateSettingsManager.updateSetting(
                DEFAULT_DEVICE_STATE.getIdentifier(), /* rotationLocked= */ true);
        mController.onStart();
        verify(mSpyAutoRotateSettingsManager, atLeastOnce()).registerListener(
                mDeviceStateAutoRotateSettingListenerCaptor.capture());
        when(mSpyAutoRotateSettingsManager.isRotationLocked(
                eq(DEFAULT_DEVICE_STATE.getIdentifier()))).thenReturn(true);

        mDeviceStateAutoRotateSettingListenerCaptor.getValue().onSettingsChanged();

        assertThat(mController.isChecked()).isFalse();
    }

    @Test
    public void setChecked_true_deviceStateSettingIsUnlocked() {
        mController.setChecked(true);
        mController.onStart();
        verify(mSpyAutoRotateSettingsManager, atLeastOnce()).registerListener(
                mDeviceStateAutoRotateSettingListenerCaptor.capture());

        boolean rotationLocked = mAutoRotateSettingsManager.isRotationLocked(
                DEFAULT_DEVICE_STATE.getIdentifier());
        mController.setChecked(true);

        assertThat(rotationLocked).isFalse();
        verify(mSpyAutoRotateSettingsManager, atLeastOnce()).updateSetting(
                eq(DEFAULT_DEVICE_STATE.getIdentifier()), eq(false));
    }

    @Test
    public void setChecked_false_deviceStateSettingIsLocked() {
        mController.setChecked(false);
        mController.onStart();
        verify(mSpyAutoRotateSettingsManager, atLeastOnce()).registerListener(
                mDeviceStateAutoRotateSettingListenerCaptor.capture());

        boolean rotationLocked = mAutoRotateSettingsManager.isRotationLocked(
                DEFAULT_DEVICE_STATE.getIdentifier());
        mController.setChecked(false);

        assertThat(rotationLocked).isTrue();
        verify(mSpyAutoRotateSettingsManager, atLeastOnce()).updateSetting(
                eq(DEFAULT_DEVICE_STATE.getIdentifier()), eq(true));
    }

    @Test