Refactor badging notification preference controller.

- Convert inheritance from AbstractPreferenceController to TogglePreferenceController.
- Register BadgingNotificationPreferenceController in XML.
- Add RoboTests test cases for BadgingNotificationPreferenceController.

Fixes: 67997784
Test: RunSettingsRoboTests
Change-Id: If10744c067f065e7c2465ca1fff66895d7dc1c56
Merged-In: If10744c067f065e7c2465ca1fff66895d7dc1c56
This commit is contained in:
Chuck Liao
2018-03-30 18:41:18 +08:00
parent 09793d19d3
commit a7c14d474a
4 changed files with 73 additions and 31 deletions

View File

@@ -17,6 +17,12 @@
package com.android.settings.notification;
import static android.provider.Settings.Secure.NOTIFICATION_BADGING;
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.android.settings.core.BasePreferenceController.DISABLED_UNSUPPORTED;
import static com.android.settings.notification.BadgingNotificationPreferenceController.OFF;
import static com.android.settings.notification.BadgingNotificationPreferenceController.ON;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
@@ -54,10 +60,13 @@ public class BadgingNotificationPreferenceControllerTest {
private BadgingNotificationPreferenceController mController;
private Preference mPreference;
private static final String KEY_NOTIFICATION_BADGING = "notification_badging";
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mController = new BadgingNotificationPreferenceController(mContext);
mController = new BadgingNotificationPreferenceController(mContext,
KEY_NOTIFICATION_BADGING);
mPreference = new Preference(RuntimeEnvironment.application);
mPreference.setKey(mController.getPreferenceKey());
when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference);
@@ -88,9 +97,10 @@ public class BadgingNotificationPreferenceControllerTest {
public void updateState_preferenceSetCheckedWhenSettingIsOn() {
final TwoStatePreference preference = mock(TwoStatePreference.class);
final Context context = RuntimeEnvironment.application;
Settings.Secure.putInt(context.getContentResolver(), NOTIFICATION_BADGING, 1);
Settings.Secure.putInt(context.getContentResolver(), NOTIFICATION_BADGING, ON);
mController = new BadgingNotificationPreferenceController(context);
mController = new BadgingNotificationPreferenceController(context,
KEY_NOTIFICATION_BADGING);
mController.updateState(preference);
verify(preference).setChecked(true);
@@ -100,9 +110,10 @@ public class BadgingNotificationPreferenceControllerTest {
public void updateState_preferenceSetUncheckedWhenSettingIsOff() {
final TwoStatePreference preference = mock(TwoStatePreference.class);
final Context context = RuntimeEnvironment.application;
Settings.Secure.putInt(context.getContentResolver(), NOTIFICATION_BADGING, 0);
Settings.Secure.putInt(context.getContentResolver(), NOTIFICATION_BADGING, OFF);
mController = new BadgingNotificationPreferenceController(context);
mController = new BadgingNotificationPreferenceController(context,
KEY_NOTIFICATION_BADGING);
mController.updateState(preference);
verify(preference).setChecked(false);
@@ -118,11 +129,11 @@ public class BadgingNotificationPreferenceControllerTest {
public void testSetValue_updatesCorrectly() {
final int newValue = 0;
ContentResolver resolver = mContext.getContentResolver();
Settings.Secure.putInt(resolver, Settings.Secure.NOTIFICATION_BADGING, 1);
Settings.Secure.putInt(resolver, Settings.Secure.NOTIFICATION_BADGING, ON);
((InlinePayload) mController.getResultPayload()).setValue(mContext, newValue);
final int updatedValue =
Settings.Secure.getInt(resolver, Settings.Secure.NOTIFICATION_BADGING, 1);
Settings.Secure.getInt(resolver, Settings.Secure.NOTIFICATION_BADGING, ON);
assertThat(updatedValue).isEqualTo(newValue);
}
@@ -138,4 +149,40 @@ public class BadgingNotificationPreferenceControllerTest {
assertThat(newValue).isEqualTo(currentValue);
}
@Test
public void isChecked_settingIsOff_shouldReturnFalse() {
Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BADGING, OFF);
assertThat(mController.isChecked()).isFalse();
}
@Test
public void isChecked_settingIsOn_shouldReturnTrue() {
Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BADGING, ON);
assertThat(mController.isChecked()).isTrue();
}
@Test
public void setChecked_setFalse_disablesSetting() {
Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BADGING, ON);
mController.setChecked(false);
int updatedValue = Settings.Secure.getInt(mContext.getContentResolver(),
NOTIFICATION_BADGING, -1);
assertThat(updatedValue).isEqualTo(OFF);
}
@Test
public void setChecked_setTrue_enablesSetting() {
Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BADGING, OFF);
mController.setChecked(true);
int updatedValue = Settings.Secure.getInt(mContext.getContentResolver(),
NOTIFICATION_BADGING, -1);
assertThat(updatedValue).isEqualTo(ON);
}
}