diff options
author | Daniel Lehmann <lehmannd@google.com> | 2010-11-23 17:24:13 -0800 |
---|---|---|
committer | Daniel Lehmann <lehmannd@google.com> | 2010-11-23 17:24:13 -0800 |
commit | 6dd371aea88e09cbe56b8c483021f3bf61527331 (patch) | |
tree | 2775bea137e53933a680a0fa4d752ffe2f019a62 /tests | |
parent | c039cfb78c40730483fd71178df63ada5826a315 (diff) | |
download | packages_providers_ContactsProvider-6dd371aea88e09cbe56b8c483021f3bf61527331.zip packages_providers_ContactsProvider-6dd371aea88e09cbe56b8c483021f3bf61527331.tar.gz packages_providers_ContactsProvider-6dd371aea88e09cbe56b8c483021f3bf61527331.tar.bz2 |
Allow zeroing the primary/super-primary flag
Bug:3212270
Change-Id: Iee664d6a13f66f0f38ed5829488e42b57448dad4
Diffstat (limited to 'tests')
-rw-r--r-- | tests/src/com/android/providers/contacts/ContactsProvider2Test.java | 159 |
1 files changed, 156 insertions, 3 deletions
diff --git a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java index f625a39..9277369 100644 --- a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java +++ b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java @@ -2496,9 +2496,6 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test { " AND " + Data.MIMETYPE + "='testmimetype'", null); assertNetworkNotified(true); - // Should not be able to change IS_PRIMARY and IS_SUPER_PRIMARY by the above update - values.put(Data.IS_PRIMARY, 1); - values.put(Data.IS_SUPER_PRIMARY, 1); assertStoredValues(uri, values); int count = mResolver.delete(Data.CONTENT_URI, Data.RAW_CONTACT_ID + "=" + rawContactId @@ -3005,6 +3002,162 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test { assertStoredValue(contactUri, Contacts.STARRED, "1"); } + public void testSetAndClearSuperPrimaryEmail() { + long rawContactId1 = createRawContact(new Account("a", "a")); + Uri mailUri11 = insertEmail(rawContactId1, "test1@domain1.com"); + Uri mailUri12 = insertEmail(rawContactId1, "test2@domain1.com"); + + long rawContactId2 = createRawContact(new Account("b", "b")); + Uri mailUri21 = insertEmail(rawContactId2, "test1@domain2.com"); + Uri mailUri22 = insertEmail(rawContactId2, "test2@domain2.com"); + + assertStoredValue(mailUri11, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri11, Data.IS_SUPER_PRIMARY, 0); + assertStoredValue(mailUri12, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri12, Data.IS_SUPER_PRIMARY, 0); + assertStoredValue(mailUri21, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri21, Data.IS_SUPER_PRIMARY, 0); + assertStoredValue(mailUri22, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri22, Data.IS_SUPER_PRIMARY, 0); + + // Set super primary on the first pair, primary on the second + { + ContentValues values = new ContentValues(); + values.put(Data.IS_SUPER_PRIMARY, 1); + mResolver.update(mailUri11, values, null, null); + } + { + ContentValues values = new ContentValues(); + values.put(Data.IS_SUPER_PRIMARY, 1); + mResolver.update(mailUri22, values, null, null); + } + + assertStoredValue(mailUri11, Data.IS_PRIMARY, 1); + assertStoredValue(mailUri11, Data.IS_SUPER_PRIMARY, 1); + assertStoredValue(mailUri12, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri12, Data.IS_SUPER_PRIMARY, 0); + assertStoredValue(mailUri21, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri21, Data.IS_SUPER_PRIMARY, 0); + assertStoredValue(mailUri22, Data.IS_PRIMARY, 1); + assertStoredValue(mailUri22, Data.IS_SUPER_PRIMARY, 1); + + // Clear primary on the first pair, make sure second is not affected and super_primary is + // also cleared + { + ContentValues values = new ContentValues(); + values.put(Data.IS_PRIMARY, 0); + mResolver.update(mailUri11, values, null, null); + } + + assertStoredValue(mailUri11, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri11, Data.IS_SUPER_PRIMARY, 0); + assertStoredValue(mailUri12, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri12, Data.IS_SUPER_PRIMARY, 0); + assertStoredValue(mailUri21, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri21, Data.IS_SUPER_PRIMARY, 0); + assertStoredValue(mailUri22, Data.IS_PRIMARY, 1); + assertStoredValue(mailUri22, Data.IS_SUPER_PRIMARY, 1); + + // Ensure that we can only clear super_primary, if we specify the correct data row + { + ContentValues values = new ContentValues(); + values.put(Data.IS_SUPER_PRIMARY, 0); + mResolver.update(mailUri21, values, null, null); + } + + assertStoredValue(mailUri21, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri21, Data.IS_SUPER_PRIMARY, 0); + assertStoredValue(mailUri22, Data.IS_PRIMARY, 1); + assertStoredValue(mailUri22, Data.IS_SUPER_PRIMARY, 1); + + // Ensure that we can only clear primary, if we specify the correct data row + { + ContentValues values = new ContentValues(); + values.put(Data.IS_PRIMARY, 0); + mResolver.update(mailUri21, values, null, null); + } + + assertStoredValue(mailUri21, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri21, Data.IS_SUPER_PRIMARY, 0); + assertStoredValue(mailUri22, Data.IS_PRIMARY, 1); + assertStoredValue(mailUri22, Data.IS_SUPER_PRIMARY, 1); + + // Now clear super-primary for real + { + ContentValues values = new ContentValues(); + values.put(Data.IS_SUPER_PRIMARY, 0); + mResolver.update(mailUri22, values, null, null); + } + + assertStoredValue(mailUri11, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri11, Data.IS_SUPER_PRIMARY, 0); + assertStoredValue(mailUri12, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri12, Data.IS_SUPER_PRIMARY, 0); + assertStoredValue(mailUri21, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri21, Data.IS_SUPER_PRIMARY, 0); + assertStoredValue(mailUri22, Data.IS_PRIMARY, 1); + assertStoredValue(mailUri22, Data.IS_SUPER_PRIMARY, 0); + } + + /** + * Common function for the testNewPrimaryIn* functions. Its four configurations + * are each called from its own test + */ + public void testChangingPrimary(boolean inUpdate, boolean withSuperPrimary) { + long rawContactId = createRawContact(new Account("a", "a")); + Uri mailUri1 = insertEmail(rawContactId, "test1@domain1.com", true); + + if (withSuperPrimary) { + final ContentValues values = new ContentValues(); + values.put(Data.IS_SUPER_PRIMARY, 1); + mResolver.update(mailUri1, values, null, null); + } + + assertStoredValue(mailUri1, Data.IS_PRIMARY, 1); + assertStoredValue(mailUri1, Data.IS_SUPER_PRIMARY, withSuperPrimary ? 1 : 0); + + // Insert another item + final Uri mailUri2; + if (inUpdate) { + mailUri2 = insertEmail(rawContactId, "test2@domain1.com"); + + assertStoredValue(mailUri1, Data.IS_PRIMARY, 1); + assertStoredValue(mailUri1, Data.IS_SUPER_PRIMARY, withSuperPrimary ? 1 : 0); + assertStoredValue(mailUri2, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri2, Data.IS_SUPER_PRIMARY, 0); + + final ContentValues values = new ContentValues(); + values.put(Data.IS_PRIMARY, 1); + mResolver.update(mailUri2, values, null, null); + } else { + // directly add as default + mailUri2 = insertEmail(rawContactId, "test2@domain1.com", true); + } + + // Ensure that primary has been unset on the first + // If withSuperPrimary is set, also ensure that is has been moved to the new item + assertStoredValue(mailUri1, Data.IS_PRIMARY, 0); + assertStoredValue(mailUri1, Data.IS_SUPER_PRIMARY, 0); + assertStoredValue(mailUri2, Data.IS_PRIMARY, 1); + assertStoredValue(mailUri2, Data.IS_SUPER_PRIMARY, withSuperPrimary ? 1 : 0); + } + + public void testNewPrimaryInInsert() { + testChangingPrimary(false, false); + } + + public void testNewPrimaryInInsertWithSuperPrimary() { + testChangingPrimary(false, true); + } + + public void testNewPrimaryInUpdate() { + testChangingPrimary(true, false); + } + + public void testNewPrimaryInUpdateWithSuperPrimary() { + testChangingPrimary(true, true); + } + public void testLiveFolders() { long rawContactId1 = createRawContactWithName("James", "Sullivan"); insertPhoneNumber(rawContactId1, "5234567890"); |