Loading src/com/android/settings/notification/ZenModeStarredContactsPreferenceController.java +18 −7 Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ public class ZenModeStarredContactsPreferenceController extends } } // values in displayContacts must not be null mPreference.setSummary(ListFormatter.getInstance().format(displayContacts)); } Loading @@ -130,22 +131,32 @@ public class ZenModeStarredContactsPreferenceController extends return true; } private List<String> getStarredContacts() { @VisibleForTesting List<String> getStarredContacts(Cursor cursor) { List<String> starredContacts = new ArrayList<>(); Cursor cursor = mContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, new String[]{ContactsContract.Contacts.DISPLAY_NAME_PRIMARY}, ContactsContract.Data.STARRED + "=1", null, ContactsContract.Data.TIMES_CONTACTED); if (cursor.moveToFirst()) { do { starredContacts.add(cursor.getString(0)); String contact = cursor.getString(0); if (contact != null) { starredContacts.add(contact); } } while (cursor.moveToNext()); } return starredContacts; } private List<String> getStarredContacts() { return getStarredContacts(queryData()); } private Cursor queryData() { return mContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, new String[]{ContactsContract.Contacts.DISPLAY_NAME_PRIMARY}, ContactsContract.Data.STARRED + "=1", null, ContactsContract.Data.TIMES_CONTACTED); } private boolean isIntentValid() { return mStarredContactsIntent.resolveActivity(mPackageManager) != null || mFallbackIntent.resolveActivity(mPackageManager) != null; Loading tests/robotests/src/com/android/settings/notification/ZenModeStarredContactsPreferenceControllerTest.java +42 −0 Original line number Diff line number Diff line Loading @@ -23,12 +23,25 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.Mockito.doAnswer; import org.mockito.stubbing.Answer; import org.mockito.invocation.InvocationOnMock; import android.app.NotificationManager; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.database.CharArrayBuffer; import android.database.ContentObserver; import android.database.Cursor; import android.database.DataSetObserver; import android.net.Uri; import android.os.Bundle; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; Loading @@ -42,6 +55,8 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.shadows.ShadowApplication; import org.robolectric.util.ReflectionHelpers; import java.util.ArrayList; import java.util.List; @RunWith(SettingsRobolectricTestRunner.class) public class ZenModeStarredContactsPreferenceControllerTest { Loading Loading @@ -148,4 +163,31 @@ public class ZenModeStarredContactsPreferenceControllerTest { assertThat(mMessagesController.isAvailable()).isTrue(); } @Test public void updateSummary_nullCursorValues() { Cursor testCursorWithNullValues = mock(Cursor.class); when(testCursorWithNullValues.moveToFirst()).thenReturn(true); doAnswer(new Answer<Boolean>() { int count = 0; @Override public Boolean answer(InvocationOnMock invocation) throws Throwable { if (count < 3) { count++; return true; } return false; } }).when(testCursorWithNullValues).moveToNext(); when(testCursorWithNullValues.getString(0)).thenReturn(null); // expected - no null values List<String> contacts = mMessagesController.getStarredContacts(testCursorWithNullValues); for (int i = 0 ; i < contacts.size(); i++) { assertThat(contacts.get(i)).isNotNull(); } } } Loading
src/com/android/settings/notification/ZenModeStarredContactsPreferenceController.java +18 −7 Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ public class ZenModeStarredContactsPreferenceController extends } } // values in displayContacts must not be null mPreference.setSummary(ListFormatter.getInstance().format(displayContacts)); } Loading @@ -130,22 +131,32 @@ public class ZenModeStarredContactsPreferenceController extends return true; } private List<String> getStarredContacts() { @VisibleForTesting List<String> getStarredContacts(Cursor cursor) { List<String> starredContacts = new ArrayList<>(); Cursor cursor = mContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, new String[]{ContactsContract.Contacts.DISPLAY_NAME_PRIMARY}, ContactsContract.Data.STARRED + "=1", null, ContactsContract.Data.TIMES_CONTACTED); if (cursor.moveToFirst()) { do { starredContacts.add(cursor.getString(0)); String contact = cursor.getString(0); if (contact != null) { starredContacts.add(contact); } } while (cursor.moveToNext()); } return starredContacts; } private List<String> getStarredContacts() { return getStarredContacts(queryData()); } private Cursor queryData() { return mContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, new String[]{ContactsContract.Contacts.DISPLAY_NAME_PRIMARY}, ContactsContract.Data.STARRED + "=1", null, ContactsContract.Data.TIMES_CONTACTED); } private boolean isIntentValid() { return mStarredContactsIntent.resolveActivity(mPackageManager) != null || mFallbackIntent.resolveActivity(mPackageManager) != null; Loading
tests/robotests/src/com/android/settings/notification/ZenModeStarredContactsPreferenceControllerTest.java +42 −0 Original line number Diff line number Diff line Loading @@ -23,12 +23,25 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.Mockito.doAnswer; import org.mockito.stubbing.Answer; import org.mockito.invocation.InvocationOnMock; import android.app.NotificationManager; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.database.CharArrayBuffer; import android.database.ContentObserver; import android.database.Cursor; import android.database.DataSetObserver; import android.net.Uri; import android.os.Bundle; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; Loading @@ -42,6 +55,8 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.shadows.ShadowApplication; import org.robolectric.util.ReflectionHelpers; import java.util.ArrayList; import java.util.List; @RunWith(SettingsRobolectricTestRunner.class) public class ZenModeStarredContactsPreferenceControllerTest { Loading Loading @@ -148,4 +163,31 @@ public class ZenModeStarredContactsPreferenceControllerTest { assertThat(mMessagesController.isAvailable()).isTrue(); } @Test public void updateSummary_nullCursorValues() { Cursor testCursorWithNullValues = mock(Cursor.class); when(testCursorWithNullValues.moveToFirst()).thenReturn(true); doAnswer(new Answer<Boolean>() { int count = 0; @Override public Boolean answer(InvocationOnMock invocation) throws Throwable { if (count < 3) { count++; return true; } return false; } }).when(testCursorWithNullValues).moveToNext(); when(testCursorWithNullValues.getString(0)).thenReturn(null); // expected - no null values List<String> contacts = mMessagesController.getStarredContacts(testCursorWithNullValues); for (int i = 0 ; i < contacts.size(); i++) { assertThat(contacts.get(i)).isNotNull(); } } }