ProviderTests.java revision 28448e782b825d1978c0923003a2cf91efe733dc
17143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler/* 27143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Copyright (C) 2009 The Android Open Source Project 37143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * 47143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Licensed under the Apache License, Version 2.0 (the "License"); 57143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * you may not use this file except in compliance with the License. 67143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * You may obtain a copy of the License at 77143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * 87143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * http://www.apache.org/licenses/LICENSE-2.0 97143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * 107143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Unless required by applicable law or agreed to in writing, software 117143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * distributed under the License is distributed on an "AS IS" BASIS, 127143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * See the License for the specific language governing permissions and 147143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * limitations under the License. 157143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 167143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 177143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadlerpackage com.android.email.provider; 187143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 197143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadlerimport com.android.email.provider.EmailContent.Account; 207143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadlerimport com.android.email.provider.EmailContent.Body; 217143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadlerimport com.android.email.provider.EmailContent.Mailbox; 227143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadlerimport com.android.email.provider.EmailContent.Message; 23ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadlerimport com.android.email.provider.EmailContent.MessageColumns; 247143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 25ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadlerimport android.content.ContentResolver; 267143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadlerimport android.content.ContentUris; 27ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadlerimport android.content.ContentValues; 287143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadlerimport android.content.Context; 297143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadlerimport android.database.Cursor; 307143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadlerimport android.net.Uri; 317143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadlerimport android.test.ProviderTestCase2; 327143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 337143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler/** 347143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Tests of the Email provider. 357143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * 367143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * You can run this entire test case with: 377143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * runtest -c com.android.email.provider.ProviderTests email 387143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 397143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadlerpublic class ProviderTests extends ProviderTestCase2<EmailProvider> { 407143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 417143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler EmailProvider mProvider; 427143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Context mMockContext; 437143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 447143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public ProviderTests() { 457143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler super(EmailProvider.class, EmailProvider.EMAIL_AUTHORITY); 467143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 477143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 487143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler @Override 497143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void setUp() throws Exception { 507143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler super.setUp(); 517143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext = getMockContext(); 527143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 537143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 547143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler @Override 557143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void tearDown() throws Exception { 567143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler super.tearDown(); 577143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 587143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 597143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 607143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Test simple account save/retrieve 617143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 627143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void testAccountSave() { 6328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Account account1 = ProviderTestUtils.setupAccount("account-save", true, mMockContext); 647143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 657143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 667143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Account account2 = EmailContent.Account.restoreAccountWithId(mMockContext, account1Id); 677143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 6828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler ProviderTestUtils.assertAccountEqual("testAccountSave", account1, account2); 697143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 707143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 717143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 727143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: HostAuth tests 737143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 747143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 757143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 767143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Test simple mailbox save/retrieve 777143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 787143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void testMailboxSave() { 7928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Account account1 = ProviderTestUtils.setupAccount("mailbox-save", true, mMockContext); 807143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 8128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Mailbox box1 = ProviderTestUtils.setupMailbox("box1", account1Id, true, 8228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler mMockContext); 837143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long box1Id = box1.mId; 847143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 857143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Mailbox box2 = EmailContent.Mailbox.restoreMailboxWithId(mMockContext, box1Id); 867143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 8728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler ProviderTestUtils.assertMailboxEqual("testMailboxSave", box1, box2); 887143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 897143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 907143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 917143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Test simple message save/retrieve 927143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * 937143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: attachments 947143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: serverId vs. serverIntId 957143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 967143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void testMessageSave() { 9728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Account account1 = ProviderTestUtils.setupAccount("message-save", true, mMockContext); 987143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 9928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Mailbox box1 = ProviderTestUtils.setupMailbox("box1", account1Id, true, mMockContext); 1007143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long box1Id = box1.mId; 1017143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1027143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // Test a simple message (saved with no body) 10328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Message message1 = ProviderTestUtils.setupMessage("message1", account1Id, box1Id, false, 10428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler true, mMockContext); 1057143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long message1Id = message1.mId; 1067143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Message message1get = EmailContent.Message.restoreMessageWithId(mMockContext, message1Id); 10728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler ProviderTestUtils.assertMessageEqual("testMessageSave", message1, message1get); 1087143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1097143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // Test a message saved with a body 1107143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // Note that it will read back w/o the text & html so we must extract those 11128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Message message2 = ProviderTestUtils.setupMessage("message1", account1Id, box1Id, true, 11228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler true, mMockContext); 1137143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long message2Id = message2.mId; 1147143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String text2 = message2.mText; 1157143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String html2 = message2.mHtml; 1167143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message2.mText = null; 1177143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message2.mHtml = null; 1187143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Message message2get = EmailContent.Message.restoreMessageWithId(mMockContext, message2Id); 11928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler ProviderTestUtils.assertMessageEqual("testMessageSave", message2, message2get); 1207143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1217143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // Now see if there's a body saved with the right stuff 1227143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // TODO it might make sense to add a function to restore the body with the message id 1237143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Cursor c = null; 1247143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler try { 1257143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler c = mMockContext.getContentResolver().query( 1267143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler EmailContent.Body.CONTENT_URI, 1277143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler EmailContent.Body.CONTENT_PROJECTION, 1287143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler EmailContent.Body.MESSAGE_KEY + "=?", 1297143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler new String[] { 1307143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String.valueOf(message2Id) 1317143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler }, 1327143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler null); 1337143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numBodies = c.getCount(); 1347143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(1, numBodies); 1357143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler c.moveToFirst(); 1367143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Body body2 = EmailContent.getContent(c, Body.class); 1377143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals("body text", text2, body2.mTextContent); 1387143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals("body html", html2, body2.mHtmlContent); 1397143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } finally { 1407143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler if (c != null) c.close(); 1417143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 1427143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 1437143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1447143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 1457143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: update account 1467143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 1477143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1487143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 1497143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: update mailbox 1507143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 1517143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1527143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 1537143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: update message 1547143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 1557143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1567143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 1577143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Test delete account 1587143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: hostauth 1597143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 1607143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void testAccountDelete() { 16128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Account account1 = ProviderTestUtils.setupAccount("account-delete-1", true, mMockContext); 1627143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 16328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Account account2 = ProviderTestUtils.setupAccount("account-delete-2", true, mMockContext); 1647143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account2Id = account2.mId; 1657143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1667143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are two accounts 1677143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numBoxes = EmailContent.count(mMockContext, Account.CONTENT_URI, null, null); 1687143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(2, numBoxes); 1697143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1707143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // now delete one of them 1717143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Uri uri = ContentUris.withAppendedId(Account.CONTENT_URI, account1Id); 1727143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 1737143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1747143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there's only one account now 1757143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numBoxes = EmailContent.count(mMockContext, Account.CONTENT_URI, null, null); 1767143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(1, numBoxes); 1777143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1787143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // now delete the other one 1797143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler uri = ContentUris.withAppendedId(Account.CONTENT_URI, account2Id); 1807143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 1817143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1827143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are no accounts now 1837143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numBoxes = EmailContent.count(mMockContext, Account.CONTENT_URI, null, null); 1847143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(0, numBoxes); 1857143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 1867143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1877143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 1887143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Test delete mailbox 1897143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 1907143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void testMailboxDelete() { 19128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Account account1 = ProviderTestUtils.setupAccount("mailbox-delete", true, mMockContext); 1927143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 19328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Mailbox box1 = ProviderTestUtils.setupMailbox("box1", account1Id, true, mMockContext); 1947143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long box1Id = box1.mId; 19528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Mailbox box2 = ProviderTestUtils.setupMailbox("box2", account1Id, true, mMockContext); 1967143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long box2Id = box2.mId; 1977143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1987143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String selection = EmailContent.MailboxColumns.ACCOUNT_KEY + "=?"; 1997143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String[] selArgs = new String[] { String.valueOf(account1Id) }; 2007143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2017143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are two mailboxes 2027143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numBoxes = EmailContent.count(mMockContext, Mailbox.CONTENT_URI, selection, selArgs); 2037143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(2, numBoxes); 2047143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2057143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // now delete one of them 2067143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Uri uri = ContentUris.withAppendedId(Mailbox.CONTENT_URI, box1Id); 2077143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 2087143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2097143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there's only one mailbox now 2107143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numBoxes = EmailContent.count(mMockContext, Mailbox.CONTENT_URI, selection, selArgs); 2117143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(1, numBoxes); 2127143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2137143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // now delete the other one 2147143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler uri = ContentUris.withAppendedId(Mailbox.CONTENT_URI, box2Id); 2157143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 2167143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2177143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are no mailboxes now 2187143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numBoxes = EmailContent.count(mMockContext, Mailbox.CONTENT_URI, selection, selArgs); 2197143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(0, numBoxes); 2207143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 2217143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2227143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 2237143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Test delete message 2247143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: body 2257143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: attachments 2267143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 2277143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void testMessageDelete() { 22828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Account account1 = ProviderTestUtils.setupAccount("message-delete", true, mMockContext); 2297143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 23028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Mailbox box1 = ProviderTestUtils.setupMailbox("box1", account1Id, true, mMockContext); 2317143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long box1Id = box1.mId; 23228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Message message1 = ProviderTestUtils.setupMessage("message1", account1Id, box1Id, false, 23328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler true, mMockContext); 2347143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long message1Id = message1.mId; 23528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Message message2 = ProviderTestUtils.setupMessage("message2", account1Id, box1Id, false, 23628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler true, mMockContext); 2377143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long message2Id = message2.mId; 2387143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2397143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String selection = EmailContent.MessageColumns.ACCOUNT_KEY + "=? AND " + 2407143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler EmailContent.MessageColumns.MAILBOX_KEY + "=?"; 2417143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String[] selArgs = new String[] { String.valueOf(account1Id), String.valueOf(box1Id) }; 2427143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2437143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are two messages 2447143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 2457143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(2, numMessages); 2467143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2477143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // now delete one of them 2487143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Uri uri = ContentUris.withAppendedId(Message.CONTENT_URI, message1Id); 2497143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 2507143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2517143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there's only one message now 2527143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 2537143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(1, numMessages); 2547143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2557143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // now delete the other one 2567143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler uri = ContentUris.withAppendedId(Message.CONTENT_URI, message2Id); 2577143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 2587143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2597143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are no messages now 2607143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 2617143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(0, numMessages); 2627143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 2637143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2647143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 265ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler * Test delete synced message 266ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler * TODO: body 267ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler * TODO: attachments 268ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler */ 269ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler public void testSyncedMessageDelete() { 27028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Account account1 = ProviderTestUtils.setupAccount("synced-message-delete", true, 27128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler mMockContext); 272ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long account1Id = account1.mId; 27328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Mailbox box1 = ProviderTestUtils.setupMailbox("box1", account1Id, true, mMockContext); 274ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long box1Id = box1.mId; 27528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Message message1 = ProviderTestUtils.setupMessage("message1", account1Id, box1Id, false, 27628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler true, mMockContext); 277ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long message1Id = message1.mId; 27828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Message message2 = ProviderTestUtils.setupMessage("message2", account1Id, box1Id, false, 27928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler true, mMockContext); 280ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long message2Id = message2.mId; 281ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 282ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler String selection = EmailContent.MessageColumns.ACCOUNT_KEY + "=? AND " 283ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler + EmailContent.MessageColumns.MAILBOX_KEY + "=?"; 284ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler String[] selArgs = new String[] { 285ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler String.valueOf(account1Id), String.valueOf(box1Id) 286ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler }; 287ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 288ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there are two messages 289ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler int numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 290ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(2, numMessages); 291ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 292ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure we start with no synced deletions 293ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.DELETED_CONTENT_URI, selection, 294ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler selArgs); 295ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(0, numMessages); 296ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 297ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // now delete one of them SYNCED 298ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Uri uri = ContentUris.withAppendedId(Message.SYNCED_CONTENT_URI, message1Id); 299ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 300ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 301ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there's only one message now 302ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 303ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(1, numMessages); 304ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 305ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there's one synced deletion now 306ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.DELETED_CONTENT_URI, selection, 307ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler selArgs); 308ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(1, numMessages); 309ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 310ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // now delete the other one NOT SYNCED 311ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler uri = ContentUris.withAppendedId(Message.CONTENT_URI, message2Id); 312ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 313ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 314ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there are no messages now 315ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 316ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(0, numMessages); 317ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 318ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there's still one deletion now 319ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.DELETED_CONTENT_URI, selection, 320ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler selArgs); 321ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(1, numMessages); 322ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler } 323ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 324ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler /** 325ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler * Test message update 326ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler * TODO: body 327ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler * TODO: attachments 328ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler */ 329ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler public void testMessageUpdate() { 33028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Account account1 = ProviderTestUtils.setupAccount("message-update", true, mMockContext); 331ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long account1Id = account1.mId; 33228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Mailbox box1 = ProviderTestUtils.setupMailbox("box1", account1Id, true, mMockContext); 333ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long box1Id = box1.mId; 33428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Message message1 = ProviderTestUtils.setupMessage("message1", account1Id, box1Id, false, 33528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler true, mMockContext); 336ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long message1Id = message1.mId; 33728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Message message2 = ProviderTestUtils.setupMessage("message2", account1Id, box1Id, false, 33828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler true, mMockContext); 339ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long message2Id = message2.mId; 340ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler ContentResolver cr = mMockContext.getContentResolver(); 341ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 342ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler String selection = EmailContent.MessageColumns.ACCOUNT_KEY + "=? AND " 343ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler + EmailContent.MessageColumns.MAILBOX_KEY + "=?"; 344ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler String[] selArgs = new String[] { 345ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler String.valueOf(account1Id), String.valueOf(box1Id) 346ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler }; 347ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 348ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there are two messages 349ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler int numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 350ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(2, numMessages); 351ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 352ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // change the first one 353ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Uri uri = ContentUris.withAppendedId(Message.CONTENT_URI, message1Id); 354ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler ContentValues cv = new ContentValues(); 355ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler cv.put(MessageColumns.FROM_LIST, "from-list"); 356ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler cr.update(uri, cv, null, null); 357ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 358ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there's no updated message 359ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.UPDATED_CONTENT_URI, selection, 360ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler selArgs); 361ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(0, numMessages); 362ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 363ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // get the message back from the provider, make sure the change "stuck" 364ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Message restoredMessage = Message.restoreMessageWithId(mMockContext, message1Id); 365ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals("from-list", restoredMessage.mFrom); 366ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 367ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // change the second one 368ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler uri = ContentUris.withAppendedId(Message.SYNCED_CONTENT_URI, message2Id); 369ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler cv = new ContentValues(); 370ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler cv.put(MessageColumns.FROM_LIST, "from-list"); 371ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler cr.update(uri, cv, null, null); 372ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 373ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there's one updated message 374ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.UPDATED_CONTENT_URI, selection, 375ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler selArgs); 376ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(1, numMessages); 377ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 378ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // get the message back from the provider, make sure the change "stuck", 379ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // as before 380ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler restoredMessage = Message.restoreMessageWithId(mMockContext, message2Id); 381ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals("from-list", restoredMessage.mFrom); 382ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 383ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // get the original message back from the provider 384ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Cursor c = cr.query(Message.UPDATED_CONTENT_URI, Message.CONTENT_PROJECTION, null, null, 385ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler null); 386ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler try { 387ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertTrue(c.moveToFirst()); 388ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Message originalMessage = EmailContent.getContent(c, Message.class); 389ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure this has the original value 390ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals("from message2", originalMessage.mFrom); 391ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // Should only be one 392ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertFalse(c.moveToNext()); 393ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler } finally { 394ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler c.close(); 395ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler } 396ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 397ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // delete the second message 398ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler cr.delete(ContentUris.withAppendedId(Message.SYNCED_CONTENT_URI, message2Id), null, null); 399ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 400ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // hey, presto! the change should be gone 401ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.UPDATED_CONTENT_URI, selection, 402ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler selArgs); 403ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(0, numMessages); 404ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 405ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // and there should now be a deleted record 406ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.DELETED_CONTENT_URI, selection, 407ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler selArgs); 408ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(1, numMessages); 409ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler } 410ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 411ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler /** 4127143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: cascaded delete account 4137143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: hostauth 4147143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: body 4157143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: attachments 4167143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: create other account, mailbox & messages and confirm the right objects were deleted 4177143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 4187143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void testCascadeDeleteAccount() { 41928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Account account1 = ProviderTestUtils.setupAccount("account-delete-cascade", true, 42028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler mMockContext); 4217143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 42228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Mailbox box1 = ProviderTestUtils.setupMailbox("box1", account1Id, true, mMockContext); 4237143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long box1Id = box1.mId; 42428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler /* Message message1 = */ ProviderTestUtils.setupMessage("message1", account1Id, box1Id, 42528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler false, true, mMockContext); 42628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler /* Message message2 = */ ProviderTestUtils.setupMessage("message2", account1Id, box1Id, 42728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler false, true, mMockContext); 4287143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4297143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there is one account, one mailbox, and two messages 4307143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numAccounts = EmailContent.count(mMockContext, Account.CONTENT_URI, null, null); 4317143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(1, numAccounts); 4327143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numBoxes = EmailContent.count(mMockContext, Mailbox.CONTENT_URI, null, null); 4337143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(1, numBoxes); 4347143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, null, null); 4357143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(2, numMessages); 4367143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4377143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // delete the account 4387143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Uri uri = ContentUris.withAppendedId(Account.CONTENT_URI, account1Id); 4397143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 4407143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4417143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are no accounts, mailboxes, or messages 4427143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numAccounts = EmailContent.count(mMockContext, Account.CONTENT_URI, null, null); 4437143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(0, numAccounts); 4447143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numBoxes = EmailContent.count(mMockContext, Mailbox.CONTENT_URI, null, null); 4457143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(0, numBoxes); 4467143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, null, null); 4477143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(0, numMessages); 4487143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 4497143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4507143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 4517143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Test cascaded delete mailbox 4527143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: body 4537143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: attachments 4547143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: create other mailbox & messages and confirm the right objects were deleted 4557143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 4567143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void testCascadeDeleteMailbox() { 45728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Account account1 = ProviderTestUtils.setupAccount("mailbox-delete-cascade", true, 45828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler mMockContext); 4597143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 46028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Mailbox box1 = ProviderTestUtils.setupMailbox("box1", account1Id, true, mMockContext); 4617143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long box1Id = box1.mId; 46228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler /* Message message1 = */ ProviderTestUtils.setupMessage("message1", account1Id, box1Id, 46328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler false, true, mMockContext); 46428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler /* Message message2 = */ ProviderTestUtils.setupMessage("message2", account1Id, box1Id, 46528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler false, true, mMockContext); 4667143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4677143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String selection = EmailContent.MessageColumns.ACCOUNT_KEY + "=? AND " + 4687143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler EmailContent.MessageColumns.MAILBOX_KEY + "=?"; 4697143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String[] selArgs = new String[] { String.valueOf(account1Id), String.valueOf(box1Id) }; 4707143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4717143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are two messages 4727143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 4737143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(2, numMessages); 4747143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4757143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // now delete the mailbox 4767143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Uri uri = ContentUris.withAppendedId(Mailbox.CONTENT_URI, box1Id); 4777143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 4787143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4797143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // there should now be zero messages 4807143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 4817143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(0, numMessages); 4827143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 4837143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4847143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 4857143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: Test cascaded delete message 4867143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: body 4877143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: attachments 4887143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 4897143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4907143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler} 491