Redirect battery-level settings preference clicks if needed
Change-Id: I64d0992544cc7e0cb41293b799577cbc43dfbb38 Bug: 181827923 Test: unit
This commit is contained in:
@@ -21,26 +21,55 @@ import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.any;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.util.FeatureFlagUtils;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.FeatureFlags;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.Robolectric;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class TopLevelBatteryPreferenceControllerTest {
|
||||
private Context mContext;
|
||||
private FakeFeatureFactory mFeatureFactory;
|
||||
private TopLevelBatteryPreferenceController mController;
|
||||
private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mContext = RuntimeEnvironment.application;
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||
mContext = spy(Robolectric.setupActivity(Activity.class));
|
||||
mController = new TopLevelBatteryPreferenceController(mContext, "test_key");
|
||||
mBatterySettingsFeatureProvider =
|
||||
mFeatureFactory.batterySettingsFeatureProvider;
|
||||
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, false);
|
||||
}
|
||||
|
||||
@After
|
||||
public void cleanUp() {
|
||||
TopLevelBatteryPreferenceController.sReplacingActivityMap.clear();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -54,6 +83,80 @@ public class TopLevelBatteryPreferenceControllerTest {
|
||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handlePreferenceTreeClick_noFragment_noCustomActivityCalled() {
|
||||
Preference preference = new Preference(mContext);
|
||||
|
||||
assertThat(mController.handlePreferenceTreeClick(preference)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handlePreferenceTreeClick_sameActivityReturned_noCustomActivityCalled() {
|
||||
String fragmentPath = "my.fragment.ClassName";
|
||||
Preference preference = mock(Preference.class);
|
||||
when(preference.getFragment()).thenReturn(fragmentPath);
|
||||
ComponentName pathName = mController.convertClassPathToComponentName(fragmentPath);
|
||||
when(mBatterySettingsFeatureProvider.getReplacingActivity(any())).thenReturn(pathName);
|
||||
|
||||
assertThat(mController.handlePreferenceTreeClick(preference)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handlePreferenceTreeClick_newActivityReturned_newActivityRedirected() {
|
||||
String fragmentPath = "my.fragment.ClassName";
|
||||
Preference preference = mock(Preference.class);
|
||||
when(preference.getFragment()).thenReturn(fragmentPath);
|
||||
String newFragmentPath = "my.fragment.NewClassName";
|
||||
ComponentName newPathName = mController.convertClassPathToComponentName(newFragmentPath);
|
||||
when(mBatterySettingsFeatureProvider.getReplacingActivity(any())).thenReturn(
|
||||
newPathName);
|
||||
doNothing().when(mContext).startActivity(any());
|
||||
|
||||
assertThat(mController.handlePreferenceTreeClick(preference)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handlePreferenceTreeClick_calledMultipleTimes_fetchedFromCache() {
|
||||
String fragmentPath = "my.fragment.ClassName";
|
||||
Preference preference = mock(Preference.class);
|
||||
when(preference.getFragment()).thenReturn(fragmentPath);
|
||||
String newFragmentPath = "my.fragment.NewClassName";
|
||||
ComponentName newPathName = mController.convertClassPathToComponentName(newFragmentPath);
|
||||
when(mBatterySettingsFeatureProvider.getReplacingActivity(any())).thenReturn(
|
||||
newPathName);
|
||||
doNothing().when(mContext).startActivity(any());
|
||||
|
||||
assertThat(mController.handlePreferenceTreeClick(preference)).isTrue();
|
||||
assertThat(mController.handlePreferenceTreeClick(preference)).isTrue();
|
||||
verify(mBatterySettingsFeatureProvider, times(1)).getReplacingActivity(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertClassPathToComponentName_nullInput_returnsNull() {
|
||||
assertThat(mController.convertClassPathToComponentName(null)).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertClassPathToComponentName_emptyStringInput_returnsNull() {
|
||||
assertThat(mController.convertClassPathToComponentName("")).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertClassPathToComponentName_singleClassName_returnsCorrectComponentName() {
|
||||
ComponentName output = mController.convertClassPathToComponentName("ClassName");
|
||||
|
||||
assertThat(output.getPackageName()).isEqualTo("");
|
||||
assertThat(output.getClassName()).isEqualTo("ClassName");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertClassPathToComponentName_validAddress_returnsCorrectComponentName() {
|
||||
ComponentName output = mController.convertClassPathToComponentName("my.fragment.ClassName");
|
||||
|
||||
assertThat(output.getPackageName()).isEqualTo("my.fragment");
|
||||
assertThat(output.getClassName()).isEqualTo("ClassName");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getDashboardLabel_returnsCorrectLabel() {
|
||||
BatteryInfo info = new BatteryInfo();
|
||||
|
Reference in New Issue
Block a user