diff options
author | Chiao Cheng <chiaocheng@google.com> | 2012-11-16 15:17:12 -0800 |
---|---|---|
committer | Chiao Cheng <chiaocheng@google.com> | 2012-11-26 12:16:15 -0800 |
commit | dacd5de146b413de86d38b6f56a3fe0b2af4b155 (patch) | |
tree | 8a59e0b024c419cfcf3d55e0d41a1c9e6c1d56fc /tests | |
parent | f5c0020b87709f9c4c3de66a49c0893e2c2adebb (diff) | |
download | packages_providers_ContactsProvider-dacd5de146b413de86d38b6f56a3fe0b2af4b155.zip packages_providers_ContactsProvider-dacd5de146b413de86d38b6f56a3fe0b2af4b155.tar.gz packages_providers_ContactsProvider-dacd5de146b413de86d38b6f56a3fe0b2af4b155.tar.bz2 |
Change default sort order for email queries.
- Prioritizing "default" emails over last used emails.
- Added ordering for same domain emails as last order by.
Bug: 7183241
Bug: 7346215
Change-Id: I6a8ba3cfe08792693eec4896f16853a88713bc3f
Diffstat (limited to 'tests')
-rw-r--r-- | tests/src/com/android/providers/contacts/ContactsProvider2Test.java | 62 | ||||
-rw-r--r-- | tests/src/com/android/providers/contacts/util/DBQueryUtilsTest.java | 32 |
2 files changed, 85 insertions, 9 deletions
diff --git a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java index 77789c3..1011ae2 100644 --- a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java +++ b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java @@ -1180,7 +1180,7 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test { values3.putNull(Phone.LABEL); final Uri filterUri6 = Uri.withAppendedPath(baseFilterUri, "Chilled"); - assertStoredValues(filterUri6, new ContentValues[] {values1, values2, values3} ); + assertStoredValues(filterUri6, new ContentValues[]{values1, values2, values3}); // Insert a SIP address. From here, Phone URI and Callable URI may return different results // than each other. @@ -1247,10 +1247,10 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test { ); assertStoredValues( Phone.CONTENT_FILTER_URI.buildUpon().appendPath("dad") - .appendQueryParameter(Phone.SEARCH_DISPLAY_NAME_KEY, "0") - .appendQueryParameter(Phone.SEARCH_PHONE_NUMBER_KEY, "0") - .build() - ); + .appendQueryParameter(Phone.SEARCH_DISPLAY_NAME_KEY, "0") + .appendQueryParameter(Phone.SEARCH_PHONE_NUMBER_KEY, "0") + .build() + ); } public void testPhoneLookup() { @@ -1688,7 +1688,7 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test { v3.put(Email.ADDRESS, "address3@email.com"); Uri filterUri = Uri.withAppendedPath(Email.CONTENT_FILTER_URI, "address"); - assertStoredValuesOrderly(filterUri, new ContentValues[] { v1, v2, v3 }); + assertStoredValuesOrderly(filterUri, new ContentValues[]{v1, v2, v3}); } /** @@ -1737,7 +1737,7 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test { Uri filterUri3 = Email.CONTENT_FILTER_URI.buildUpon().appendPath("acc") .appendQueryParameter(ContactsContract.PRIMARY_ACCOUNT_NAME, ACCOUNT_1.name) .build(); - assertStoredValuesOrderly(filterUri3, new ContentValues[] { v1, v2 }); + assertStoredValuesOrderly(filterUri3, new ContentValues[]{v1, v2}); Uri filterUri4 = Email.CONTENT_FILTER_URI.buildUpon().appendPath("acc") .appendQueryParameter(ContactsContract.PRIMARY_ACCOUNT_NAME, ACCOUNT_2.name) @@ -1745,6 +1745,48 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test { assertStoredValuesOrderly(filterUri4, new ContentValues[] { v2, v1 }); } + /** + * Test emails with the same domain as primary account are ordered first. + */ + public void testEmailFilterSameDomainAccountOrder() { + final Account account = new Account("tester@email.com", "not_used"); + final long rawContactId = createRawContact(account); + insertEmail(rawContactId, "account1@testemail.com"); + insertEmail(rawContactId, "account1@email.com"); + + final ContentValues v1 = cv(Email.ADDRESS, "account1@testemail.com"); + final ContentValues v2 = cv(Email.ADDRESS, "account1@email.com"); + + Uri filterUri1 = Email.CONTENT_FILTER_URI.buildUpon().appendPath("acc") + .appendQueryParameter(ContactsContract.PRIMARY_ACCOUNT_NAME, account.name) + .appendQueryParameter(ContactsContract.PRIMARY_ACCOUNT_TYPE, account.type) + .build(); + assertStoredValuesOrderly(filterUri1, v2, v1); + } + + /** + * Test "default" emails are sorted above emails used last. + */ + public void testEmailFilterDefaultOverUsageSort() { + final long rawContactId = createRawContact(ACCOUNT_1); + final Uri emailUri1 = insertEmail(rawContactId, "account1@testemail.com"); + final Uri emailUri2 = insertEmail(rawContactId, "account2@testemail.com"); + insertEmail(rawContactId, "account3@testemail.com", true); + + // Update account1 and account 2 to have higher usage. + updateDataUsageFeedback(DataUsageFeedback.USAGE_TYPE_LONG_TEXT, emailUri1); + updateDataUsageFeedback(DataUsageFeedback.USAGE_TYPE_LONG_TEXT, emailUri1); + updateDataUsageFeedback(DataUsageFeedback.USAGE_TYPE_LONG_TEXT, emailUri2); + + final ContentValues v1 = cv(Email.ADDRESS, "account1@testemail.com"); + final ContentValues v2 = cv(Email.ADDRESS, "account2@testemail.com"); + final ContentValues v3 = cv(Email.ADDRESS, "account3@testemail.com"); + + // Test that account 3 is first even though account 1 and 2 have higher usage. + Uri filterUri = Uri.withAppendedPath(Email.CONTENT_FILTER_URI, "acc"); + assertStoredValuesOrderly(filterUri, v3, v1, v2); + } + /** Tests {@link DataUsageFeedback} correctly promotes a data row instead of a raw contact. */ public void testEmailFilterSortOrderWithFeedback() { long rawContactId1 = createRawContact(); @@ -7207,6 +7249,12 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test { } } + private void updateDataUsageFeedback(String usageType, Uri resultUri) { + final long id = ContentUris.parseId(resultUri); + final boolean successful = updateDataUsageFeedback(usageType, id) > 0; + assertTrue(successful); + } + private int updateDataUsageFeedback(String usageType, long... ids) { final StringBuilder idList = new StringBuilder(); for (long id : ids) { diff --git a/tests/src/com/android/providers/contacts/util/DBQueryUtilsTest.java b/tests/src/com/android/providers/contacts/util/DBQueryUtilsTest.java index 7769b49..e09e59e 100644 --- a/tests/src/com/android/providers/contacts/util/DBQueryUtilsTest.java +++ b/tests/src/com/android/providers/contacts/util/DBQueryUtilsTest.java @@ -18,14 +18,16 @@ package com.android.providers.contacts.util; import static com.android.providers.contacts.util.DbQueryUtils.checkForSupportedColumns; import static com.android.providers.contacts.util.DbQueryUtils.concatenateClauses; +import static com.android.providers.contacts.util.DbQueryUtils.escapeLikeValue; import android.content.ContentValues; -import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.SmallTest; import com.android.common.content.ProjectionMap; import com.android.providers.contacts.EvenMoreAsserts; +import junit.framework.TestCase; + /** * Unit tests for the {@link DbQueryUtils} class. * Run the test like this: @@ -34,7 +36,7 @@ import com.android.providers.contacts.EvenMoreAsserts; * </code> */ @SmallTest -public class DBQueryUtilsTest extends AndroidTestCase { +public class DBQueryUtilsTest extends TestCase { public void testGetEqualityClause() { assertEquals("(foo = 'bar')", DbQueryUtils.getEqualityClause("foo", "bar")); assertEquals("(foo = 2)", DbQueryUtils.getEqualityClause("foo", 2)); @@ -71,4 +73,30 @@ public class DBQueryUtilsTest extends AndroidTestCase { } }); } + + public void testEscapeLikeValuesEscapesUnderscores() { + StringBuilder sb = new StringBuilder(); + DbQueryUtils.escapeLikeValue(sb, "my_test_string", '\\'); + assertEquals("my\\_test\\_string", sb.toString()); + + sb = new StringBuilder(); + DbQueryUtils.escapeLikeValue(sb, "_test_", '\\'); + assertEquals("\\_test\\_", sb.toString()); + } + + public void testEscapeLikeValuesEscapesPercents() { + StringBuilder sb = new StringBuilder(); + escapeLikeValue(sb, "my%test%string", '\\'); + assertEquals("my\\%test\\%string", sb.toString()); + + sb = new StringBuilder(); + escapeLikeValue(sb, "%test%", '\\'); + assertEquals("\\%test\\%", sb.toString()); + } + + public void testEscapeLikeValuesNoChanges() { + StringBuilder sb = new StringBuilder(); + escapeLikeValue(sb, "my test string", '\\'); + assertEquals("my test string", sb.toString()); + } } |