Fix Messages onClick.
The state of the preference doesn't change until after we get the callback. Test: ZenModePrioritySendersPreferenceControllerTest Flag: android.app.modes_ui Fixes: 337079247 Change-Id: I1c98561de89e9398f26300bb14710f18991f78f4
This commit is contained in:
@@ -26,39 +26,41 @@ import static android.service.notification.ZenPolicy.PEOPLE_TYPE_CONTACTS;
|
||||
import static android.service.notification.ZenPolicy.PEOPLE_TYPE_NONE;
|
||||
import static android.service.notification.ZenPolicy.PEOPLE_TYPE_STARRED;
|
||||
import static android.service.notification.ZenPolicy.PEOPLE_TYPE_UNSET;
|
||||
import static android.service.notification.ZenPolicy.STATE_ALLOW;
|
||||
import static android.service.notification.ZenPolicy.STATE_DISALLOW;
|
||||
import static android.service.notification.ZenPolicy.STATE_UNSET;
|
||||
|
||||
import static com.android.settings.notification.modes.ZenModePrioritySendersPreferenceController.KEY_ANY;
|
||||
import static com.android.settings.notification.modes.ZenModePrioritySendersPreferenceController.KEY_CONTACTS;
|
||||
import static com.android.settings.notification.modes.ZenModePrioritySendersPreferenceController.KEY_IMPORTANT;
|
||||
import static com.android.settings.notification.modes.ZenModePrioritySendersPreferenceController.KEY_NONE;
|
||||
import static com.android.settings.notification.modes.ZenModePrioritySendersPreferenceController.KEY_STARRED;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.argThat;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.times;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.AutomaticZenRule;
|
||||
import android.app.Flags;
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.platform.test.annotations.EnableFlags;
|
||||
import android.platform.test.flag.junit.SetFlagsRule;
|
||||
import android.service.notification.ZenPolicy;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceCategory;
|
||||
import androidx.preference.PreferenceManager;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settingslib.widget.SelectorWithWidgetPreference;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.ArgumentMatcher;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
@@ -78,9 +80,8 @@ public final class ZenModePrioritySendersPreferenceControllerTest {
|
||||
@Mock
|
||||
private ZenModesBackend mBackend;
|
||||
|
||||
@Mock
|
||||
private PreferenceCategory mMockMessagesPrefCategory, mMockCallsPrefCategory;
|
||||
@Mock
|
||||
private PreferenceCategory mMessagesPrefCategory, mCallsPrefCategory;
|
||||
|
||||
private PreferenceScreen mPreferenceScreen;
|
||||
|
||||
@Before
|
||||
@@ -93,12 +94,19 @@ public final class ZenModePrioritySendersPreferenceControllerTest {
|
||||
mContext, "messages", true, mBackend);
|
||||
mCallsController = new ZenModePrioritySendersPreferenceController(
|
||||
mContext, "calls", false, mBackend);
|
||||
when(mMockMessagesPrefCategory.getContext()).thenReturn(mContext);
|
||||
when(mMockCallsPrefCategory.getContext()).thenReturn(mContext);
|
||||
when(mPreferenceScreen.findPreference(mMessagesController.getPreferenceKey()))
|
||||
.thenReturn(mMockMessagesPrefCategory);
|
||||
when(mPreferenceScreen.findPreference(mCallsController.getPreferenceKey()))
|
||||
.thenReturn(mMockCallsPrefCategory);
|
||||
mMessagesPrefCategory = new PreferenceCategory(mContext);
|
||||
mMessagesPrefCategory.setKey(mMessagesController.getPreferenceKey());
|
||||
mCallsPrefCategory = new PreferenceCategory(mContext);
|
||||
mCallsPrefCategory.setKey(mCallsController.getPreferenceKey());
|
||||
|
||||
PreferenceManager preferenceManager = new PreferenceManager(mContext);
|
||||
mPreferenceScreen = preferenceManager.createPreferenceScreen(mContext);
|
||||
mPreferenceScreen.addPreference(mCallsPrefCategory);
|
||||
mPreferenceScreen.addPreference(mMessagesPrefCategory);
|
||||
|
||||
Cursor cursor = mock(Cursor.class);
|
||||
when(cursor.getCount()).thenReturn(1);
|
||||
when(mBackend.queryAllContactsData()).thenReturn(cursor);
|
||||
}
|
||||
|
||||
// Makes a preference with the provided key and whether it's a checkbox with
|
||||
@@ -114,61 +122,34 @@ public final class ZenModePrioritySendersPreferenceControllerTest {
|
||||
return pref;
|
||||
}
|
||||
|
||||
// Extension of ArgumentMatcher to check that a preference argument has the correct preference
|
||||
// key, but doesn't check any other properties.
|
||||
private class PrefKeyMatcher implements ArgumentMatcher<SelectorWithWidgetPreference> {
|
||||
private String mKey;
|
||||
PrefKeyMatcher(String key) {
|
||||
mKey = key;
|
||||
}
|
||||
|
||||
public boolean matches(SelectorWithWidgetPreference pref) {
|
||||
return pref.getKey() != null && pref.getKey().equals(mKey);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return "SelectorWithWidgetPreference matcher for key " + mKey;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDisplayPreferences_makeMessagesPrefs() {
|
||||
ArgumentCaptor<SelectorWithWidgetPreference> prefCaptor =
|
||||
ArgumentCaptor.forClass(SelectorWithWidgetPreference.class);
|
||||
when(mMockMessagesPrefCategory.getPreferenceCount()).thenReturn(0); // not yet created
|
||||
mMessagesController.displayPreference(mPreferenceScreen);
|
||||
|
||||
// Starred contacts, Contacts, Priority Conversations, Any, None
|
||||
verify(mMockMessagesPrefCategory, times(5)).addPreference(prefCaptor.capture());
|
||||
assertThat(mMessagesPrefCategory.getPreferenceCount()).isEqualTo(5);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDisplayPreferences_makeCallsPrefs() {
|
||||
ArgumentCaptor<SelectorWithWidgetPreference> prefCaptor =
|
||||
ArgumentCaptor.forClass(SelectorWithWidgetPreference.class);
|
||||
when(mMockCallsPrefCategory.getPreferenceCount()).thenReturn(0); // not yet created
|
||||
mCallsController.displayPreference(mPreferenceScreen);
|
||||
|
||||
// Starred contacts, Contacts, Any, None
|
||||
verify(mMockCallsPrefCategory, times(4)).addPreference(prefCaptor.capture());
|
||||
assertThat(mCallsPrefCategory.getPreferenceCount()).isEqualTo(4);
|
||||
assertThat((Comparable<?>) mCallsPrefCategory.findPreference(KEY_IMPORTANT)).isNull();
|
||||
|
||||
// Make sure we never have the conversation one
|
||||
verify(mMockCallsPrefCategory, never())
|
||||
.addPreference(argThat(new PrefKeyMatcher(KEY_IMPORTANT)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDisplayPreferences_createdOnlyOnce() {
|
||||
// Return a nonzero number of child preference when asked.
|
||||
// Then when displayPreference is called, it should never make any new preferences.
|
||||
when(mMockCallsPrefCategory.getPreferenceCount()).thenReturn(4); // already created
|
||||
mCallsPrefCategory.addPreference(new Preference(mContext));
|
||||
mCallsController.displayPreference(mPreferenceScreen);
|
||||
mCallsController.displayPreference(mPreferenceScreen);
|
||||
mCallsController.displayPreference(mPreferenceScreen);
|
||||
|
||||
// Even though we called display 3 times we shouldn't add more preferences here.
|
||||
verify(mMockCallsPrefCategory, never())
|
||||
.addPreference(any(SelectorWithWidgetPreference.class));
|
||||
assertThat(mCallsPrefCategory.getPreferenceCount()).isEqualTo(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -281,44 +262,34 @@ public final class ZenModePrioritySendersPreferenceControllerTest {
|
||||
|
||||
@Test
|
||||
public void testSettingsToSaveOnClick_messagesCheck() {
|
||||
SelectorWithWidgetPreference anyPref = makePreference(KEY_ANY, true, true);
|
||||
SelectorWithWidgetPreference nonePref = makePreference(KEY_NONE, true, true);
|
||||
SelectorWithWidgetPreference contactsPref = makePreference(KEY_CONTACTS, true, true);
|
||||
SelectorWithWidgetPreference starredPref = makePreference(KEY_STARRED, true, true);
|
||||
SelectorWithWidgetPreference impPref = makePreference(KEY_IMPORTANT, true, true);
|
||||
int[] endState;
|
||||
|
||||
// For KEY_NONE everything should be none.
|
||||
nonePref.setChecked(true);
|
||||
endState = mMessagesController.settingsToSaveOnClick(
|
||||
nonePref, PEOPLE_TYPE_ANYONE, CONVERSATION_SENDERS_ANYONE);
|
||||
KEY_NONE, true, PEOPLE_TYPE_ANYONE, CONVERSATION_SENDERS_ANYONE);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_NONE);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_NONE);
|
||||
|
||||
// For KEY_ANY everything should be allowed.
|
||||
anyPref.setChecked(true);
|
||||
endState = mMessagesController.settingsToSaveOnClick(
|
||||
anyPref, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
KEY_ANY, true, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_ANYONE);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_ANYONE);
|
||||
|
||||
// For [starred] contacts, we should set the priority senders, but not the conversations
|
||||
starredPref.setChecked(true);
|
||||
endState = mMessagesController.settingsToSaveOnClick(
|
||||
starredPref, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
KEY_STARRED, true, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_STARRED);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_UNSET);
|
||||
|
||||
contactsPref.setChecked(true);
|
||||
endState = mMessagesController.settingsToSaveOnClick(
|
||||
contactsPref, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
KEY_CONTACTS, true, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_CONTACTS);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_UNSET);
|
||||
|
||||
// For priority conversations, we should set the conversations but not priority senders
|
||||
impPref.setChecked(true);
|
||||
endState = mMessagesController.settingsToSaveOnClick(
|
||||
impPref, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
KEY_IMPORTANT, true, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_UNSET);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_IMPORTANT);
|
||||
}
|
||||
@@ -327,43 +298,32 @@ public final class ZenModePrioritySendersPreferenceControllerTest {
|
||||
public void testSettingsToSaveOnClick_messagesUncheck() {
|
||||
int[] endState;
|
||||
|
||||
SelectorWithWidgetPreference anyPref = makePreference(KEY_ANY, true, true);
|
||||
SelectorWithWidgetPreference nonePref = makePreference(KEY_NONE, true, true);
|
||||
SelectorWithWidgetPreference contactsPref = makePreference(KEY_CONTACTS, true, true);
|
||||
SelectorWithWidgetPreference starredPref = makePreference(KEY_STARRED, true, true);
|
||||
SelectorWithWidgetPreference impPref = makePreference(KEY_IMPORTANT, true, true);
|
||||
|
||||
// For KEY_NONE, "unchecking" still means "none".
|
||||
nonePref.setChecked(false);
|
||||
endState = mMessagesController.settingsToSaveOnClick(
|
||||
nonePref, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
KEY_NONE, false, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_UNSET);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_UNSET);
|
||||
|
||||
// For KEY_ANY unchecking resets the state to "none".
|
||||
anyPref.setChecked(false);
|
||||
endState = mMessagesController.settingsToSaveOnClick(
|
||||
anyPref, PEOPLE_TYPE_ANYONE, CONVERSATION_SENDERS_ANYONE);
|
||||
KEY_ANY, false, PEOPLE_TYPE_ANYONE, CONVERSATION_SENDERS_ANYONE);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_NONE);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_NONE);
|
||||
|
||||
// For [starred] contacts, we should unset the priority senders, but not the conversations
|
||||
starredPref.setChecked(false);
|
||||
endState = mMessagesController.settingsToSaveOnClick(
|
||||
starredPref, PEOPLE_TYPE_STARRED, CONVERSATION_SENDERS_IMPORTANT);
|
||||
KEY_STARRED, false, PEOPLE_TYPE_STARRED, CONVERSATION_SENDERS_IMPORTANT);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_NONE);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_UNSET);
|
||||
|
||||
contactsPref.setChecked(false);
|
||||
endState = mMessagesController.settingsToSaveOnClick(
|
||||
contactsPref, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_IMPORTANT);
|
||||
KEY_CONTACTS, false, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_IMPORTANT);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_NONE);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_UNSET);
|
||||
|
||||
// For priority conversations, we should set the conversations but not priority senders
|
||||
impPref.setChecked(false);
|
||||
endState = mMessagesController.settingsToSaveOnClick(
|
||||
impPref, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_IMPORTANT);
|
||||
KEY_IMPORTANT, false, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_IMPORTANT);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_UNSET);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_NONE);
|
||||
}
|
||||
@@ -371,36 +331,28 @@ public final class ZenModePrioritySendersPreferenceControllerTest {
|
||||
@Test
|
||||
public void testSettingsToSaveOnClick_callsCheck() {
|
||||
int[] endState;
|
||||
SelectorWithWidgetPreference anyPref = makePreference(KEY_ANY, true, true);
|
||||
SelectorWithWidgetPreference nonePref = makePreference(KEY_NONE, true, true);
|
||||
SelectorWithWidgetPreference contactsPref = makePreference(KEY_CONTACTS, true, true);
|
||||
SelectorWithWidgetPreference starredPref = makePreference(KEY_STARRED, true, true);
|
||||
|
||||
// For calls: we should never set conversations, as this is unrelated to calls.
|
||||
// For KEY_NONE senders should be none.
|
||||
nonePref.setChecked(true);
|
||||
endState = mCallsController.settingsToSaveOnClick(
|
||||
nonePref, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_IMPORTANT);
|
||||
KEY_NONE, true, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_IMPORTANT);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_NONE);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_UNSET);
|
||||
|
||||
// For KEY_ANY senders should be ANY.
|
||||
anyPref.setChecked(true);
|
||||
endState = mCallsController.settingsToSaveOnClick(
|
||||
anyPref, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_IMPORTANT);
|
||||
KEY_ANY, true, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_IMPORTANT);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_ANYONE);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_UNSET);
|
||||
|
||||
// For [starred] contacts, we should set the priority senders accordingly
|
||||
starredPref.setChecked(true);
|
||||
endState = mCallsController.settingsToSaveOnClick(
|
||||
starredPref, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_IMPORTANT);
|
||||
KEY_STARRED, true, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_IMPORTANT);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_STARRED);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_UNSET);
|
||||
|
||||
contactsPref.setChecked(true);
|
||||
endState = mCallsController.settingsToSaveOnClick(
|
||||
contactsPref, PEOPLE_TYPE_STARRED, CONVERSATION_SENDERS_IMPORTANT);
|
||||
KEY_CONTACTS, true, PEOPLE_TYPE_STARRED, CONVERSATION_SENDERS_IMPORTANT);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_CONTACTS);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_UNSET);
|
||||
}
|
||||
@@ -408,36 +360,28 @@ public final class ZenModePrioritySendersPreferenceControllerTest {
|
||||
@Test
|
||||
public void testSettingsToSaveOnClick_callsUncheck() {
|
||||
int[] endState;
|
||||
SelectorWithWidgetPreference anyPref = makePreference(KEY_ANY, true, true);
|
||||
SelectorWithWidgetPreference nonePref = makePreference(KEY_NONE, true, true);
|
||||
SelectorWithWidgetPreference contactsPref = makePreference(KEY_CONTACTS, true, true);
|
||||
SelectorWithWidgetPreference starredPref = makePreference(KEY_STARRED, true, true);
|
||||
|
||||
// A calls setup should never set conversations settings.
|
||||
// For KEY_NONE, "unchecking" still means "none".
|
||||
nonePref.setChecked(false);
|
||||
endState = mCallsController.settingsToSaveOnClick(
|
||||
nonePref, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
KEY_NONE, false, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
assertThat(endState[0]).isEqualTo(STATE_UNSET);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_UNSET);
|
||||
|
||||
// For KEY_ANY unchecking resets the state to "none".
|
||||
anyPref.setChecked(false);
|
||||
endState = mCallsController.settingsToSaveOnClick(
|
||||
anyPref, PEOPLE_TYPE_ANYONE, CONVERSATION_SENDERS_ANYONE);
|
||||
KEY_ANY, false, PEOPLE_TYPE_ANYONE, CONVERSATION_SENDERS_ANYONE);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_NONE);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_UNSET);
|
||||
|
||||
// For [starred] contacts, we should unset the priority senders, but not the conversations
|
||||
starredPref.setChecked(false);
|
||||
endState = mCallsController.settingsToSaveOnClick(
|
||||
starredPref, PEOPLE_TYPE_STARRED, CONVERSATION_SENDERS_IMPORTANT);
|
||||
KEY_STARRED, false, PEOPLE_TYPE_STARRED, CONVERSATION_SENDERS_IMPORTANT);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_NONE);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_UNSET);
|
||||
|
||||
contactsPref.setChecked(false);
|
||||
endState = mCallsController.settingsToSaveOnClick(
|
||||
contactsPref, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_IMPORTANT);
|
||||
KEY_CONTACTS, false, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_IMPORTANT);
|
||||
assertThat(endState[0]).isEqualTo(PEOPLE_TYPE_NONE);
|
||||
assertThat(endState[1]).isEqualTo(CONVERSATION_SENDERS_UNSET);
|
||||
}
|
||||
@@ -446,64 +390,150 @@ public final class ZenModePrioritySendersPreferenceControllerTest {
|
||||
public void testSettingsToSave_messages_noChange() {
|
||||
int[] savedSettings;
|
||||
|
||||
SelectorWithWidgetPreference nonePref = makePreference(KEY_NONE, true, true);
|
||||
nonePref.setChecked(true);
|
||||
savedSettings = mMessagesController.settingsToSaveOnClick(
|
||||
nonePref, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
KEY_NONE, true, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
assertThat(savedSettings[0]).isEqualTo(STATE_UNSET);
|
||||
assertThat(savedSettings[1]).isEqualTo(STATE_UNSET);
|
||||
|
||||
SelectorWithWidgetPreference anyPref = makePreference(KEY_ANY, true, true);
|
||||
anyPref.setChecked(true);
|
||||
savedSettings = mMessagesController.settingsToSaveOnClick(
|
||||
anyPref, PEOPLE_TYPE_ANYONE, CONVERSATION_SENDERS_ANYONE);
|
||||
KEY_ANY, true, PEOPLE_TYPE_ANYONE, CONVERSATION_SENDERS_ANYONE);
|
||||
assertThat(savedSettings[0]).isEqualTo(STATE_UNSET);
|
||||
assertThat(savedSettings[1]).isEqualTo(STATE_UNSET);
|
||||
|
||||
SelectorWithWidgetPreference starredPref = makePreference(KEY_STARRED, true, true);
|
||||
SelectorWithWidgetPreference contactsPref = makePreference(KEY_CONTACTS, true, true);
|
||||
starredPref.setChecked(true);
|
||||
savedSettings = mMessagesController.settingsToSaveOnClick(
|
||||
starredPref, PEOPLE_TYPE_STARRED, CONVERSATION_SENDERS_ANYONE);
|
||||
KEY_STARRED, true, PEOPLE_TYPE_STARRED, CONVERSATION_SENDERS_ANYONE);
|
||||
assertThat(savedSettings[0]).isEqualTo(STATE_UNSET);
|
||||
|
||||
contactsPref.setChecked(true);
|
||||
savedSettings = mMessagesController.settingsToSaveOnClick(
|
||||
contactsPref, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_ANYONE);
|
||||
KEY_CONTACTS, true, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_ANYONE);
|
||||
assertThat(savedSettings[0]).isEqualTo(STATE_UNSET);
|
||||
|
||||
SelectorWithWidgetPreference impPref = makePreference(KEY_IMPORTANT, true, true);
|
||||
impPref.setChecked(true);
|
||||
savedSettings = mMessagesController.settingsToSaveOnClick(
|
||||
impPref, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_IMPORTANT);
|
||||
KEY_IMPORTANT, true, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_IMPORTANT);
|
||||
assertThat(savedSettings[1]).isEqualTo(STATE_UNSET);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSettingsToSave_calls_noChange() {
|
||||
int[] savedSettings;
|
||||
SelectorWithWidgetPreference nonePref = makePreference(KEY_NONE, false, false);
|
||||
|
||||
savedSettings = mMessagesController.settingsToSaveOnClick(
|
||||
nonePref, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
KEY_NONE, true, PEOPLE_TYPE_NONE, CONVERSATION_SENDERS_NONE);
|
||||
assertThat(savedSettings[0]).isEqualTo(STATE_UNSET);
|
||||
assertThat(savedSettings[1]).isEqualTo(STATE_UNSET);
|
||||
|
||||
SelectorWithWidgetPreference anyPref = makePreference(KEY_ANY, false, false);
|
||||
|
||||
savedSettings = mMessagesController.settingsToSaveOnClick(
|
||||
anyPref, PEOPLE_TYPE_ANYONE, CONVERSATION_SENDERS_ANYONE);
|
||||
KEY_ANY, true, PEOPLE_TYPE_ANYONE, CONVERSATION_SENDERS_ANYONE);
|
||||
assertThat(savedSettings[0]).isEqualTo(STATE_UNSET);
|
||||
assertThat(savedSettings[1]).isEqualTo(STATE_UNSET);
|
||||
|
||||
SelectorWithWidgetPreference starredPref = makePreference(KEY_STARRED, false, false);
|
||||
SelectorWithWidgetPreference contactsPref = makePreference(KEY_CONTACTS, false, false);
|
||||
savedSettings = mMessagesController.settingsToSaveOnClick(
|
||||
starredPref, PEOPLE_TYPE_STARRED, CONVERSATION_SENDERS_ANYONE);
|
||||
KEY_STARRED, true, PEOPLE_TYPE_STARRED, CONVERSATION_SENDERS_ANYONE);
|
||||
assertThat(savedSettings[0]).isEqualTo(STATE_UNSET);
|
||||
|
||||
savedSettings = mMessagesController.settingsToSaveOnClick(
|
||||
contactsPref, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_ANYONE);
|
||||
KEY_CONTACTS, true, PEOPLE_TYPE_CONTACTS, CONVERSATION_SENDERS_ANYONE);
|
||||
assertThat(savedSettings[0]).isEqualTo(STATE_UNSET);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreferenceClick_passesCorrectCheckedState_startingUnchecked_messages() {
|
||||
ZenMode zenMode = new ZenMode("id",
|
||||
new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
|
||||
.setType(AutomaticZenRule.TYPE_DRIVING)
|
||||
.setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
|
||||
.setZenPolicy(new ZenPolicy.Builder()
|
||||
.disallowAllSounds()
|
||||
.build())
|
||||
.build(), true);
|
||||
|
||||
mMessagesController.displayPreference(mPreferenceScreen);
|
||||
mMessagesController.updateZenMode(mMessagesPrefCategory, zenMode);
|
||||
|
||||
assertThat(((SelectorWithWidgetPreference) mMessagesPrefCategory.findPreference(KEY_NONE))
|
||||
.isChecked());
|
||||
|
||||
mMessagesPrefCategory.findPreference(KEY_STARRED).performClick();
|
||||
|
||||
ArgumentCaptor<ZenMode> captor = ArgumentCaptor.forClass(ZenMode.class);
|
||||
verify(mBackend).updateMode(captor.capture());
|
||||
assertThat(captor.getValue().getPolicy().getPriorityMessageSenders())
|
||||
.isEqualTo(PEOPLE_TYPE_STARRED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreferenceClick_passesCorrectCheckedState_startingChecked_messages() {
|
||||
ZenMode zenMode = new ZenMode("id",
|
||||
new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
|
||||
.setType(AutomaticZenRule.TYPE_DRIVING)
|
||||
.setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
|
||||
.setZenPolicy(new ZenPolicy.Builder()
|
||||
.allowAllSounds()
|
||||
.build())
|
||||
.build(), true);
|
||||
|
||||
mMessagesController.displayPreference(mPreferenceScreen);
|
||||
mMessagesController.updateZenMode(mMessagesPrefCategory, zenMode);
|
||||
|
||||
assertThat(
|
||||
((SelectorWithWidgetPreference) mMessagesPrefCategory.findPreference(KEY_ANY))
|
||||
.isChecked()).isTrue();
|
||||
|
||||
mMessagesPrefCategory.findPreference(KEY_ANY).performClick();
|
||||
|
||||
ArgumentCaptor<ZenMode> captor = ArgumentCaptor.forClass(ZenMode.class);
|
||||
verify(mBackend).updateMode(captor.capture());
|
||||
assertThat(captor.getValue().getPolicy().getPriorityMessageSenders())
|
||||
.isEqualTo(PEOPLE_TYPE_NONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreferenceClick_passesCorrectCheckedState_startingUnchecked_calls() {
|
||||
ZenMode zenMode = new ZenMode("id",
|
||||
new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
|
||||
.setType(AutomaticZenRule.TYPE_DRIVING)
|
||||
.setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
|
||||
.setZenPolicy(new ZenPolicy.Builder()
|
||||
.disallowAllSounds()
|
||||
.build())
|
||||
.build(), true);
|
||||
|
||||
mCallsController.displayPreference(mPreferenceScreen);
|
||||
mCallsController.updateZenMode(mCallsPrefCategory, zenMode);
|
||||
|
||||
assertThat(
|
||||
((SelectorWithWidgetPreference) mCallsPrefCategory.findPreference(KEY_NONE))
|
||||
.isChecked()).isTrue();
|
||||
|
||||
mCallsPrefCategory.findPreference(KEY_STARRED).performClick();
|
||||
ArgumentCaptor<ZenMode> captor = ArgumentCaptor.forClass(ZenMode.class);
|
||||
verify(mBackend).updateMode(captor.capture());
|
||||
assertThat(captor.getValue().getPolicy().getPriorityCallSenders())
|
||||
.isEqualTo(PEOPLE_TYPE_STARRED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreferenceClick_passesCorrectCheckedState_startingChecked_calls() {
|
||||
ZenMode zenMode = new ZenMode("id",
|
||||
new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
|
||||
.setType(AutomaticZenRule.TYPE_DRIVING)
|
||||
.setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
|
||||
.setZenPolicy(new ZenPolicy.Builder()
|
||||
.disallowAllSounds()
|
||||
.build())
|
||||
.build(), true);
|
||||
|
||||
mCallsController.displayPreference(mPreferenceScreen);
|
||||
mCallsController.updateZenMode(mCallsPrefCategory, zenMode);
|
||||
|
||||
assertThat(
|
||||
((SelectorWithWidgetPreference) mCallsPrefCategory.findPreference(KEY_NONE))
|
||||
.isChecked()).isTrue();
|
||||
|
||||
mCallsPrefCategory.findPreference(KEY_NONE).performClick();
|
||||
ArgumentCaptor<ZenMode> captor = ArgumentCaptor.forClass(ZenMode.class);
|
||||
verify(mBackend).updateMode(captor.capture());
|
||||
assertThat(captor.getValue().getPolicy().getPriorityCallSenders())
|
||||
.isEqualTo(PEOPLE_TYPE_NONE);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user