ProviderTests.java revision ddc871d9eddd088c0200a30dbfeb24812a81cf80
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() { 637143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Account account1 = setupAccount("account-save", true); 647143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 657143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 667143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Account account2 = EmailContent.Account.restoreAccountWithId(mMockContext, account1Id); 677143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 687143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 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() { 797143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Account account1 = setupAccount("mailbox-save", true); 807143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 817143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Mailbox box1 = setupMailbox("box1", account1Id, true); 827143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long box1Id = box1.mId; 837143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 847143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Mailbox box2 = EmailContent.Mailbox.restoreMailboxWithId(mMockContext, box1Id); 857143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 867143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertMailboxEqual("testMailboxSave", box1, box2); 877143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 887143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 897143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 907143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Test simple message save/retrieve 917143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * 927143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: attachments 937143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: serverId vs. serverIntId 947143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 957143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void testMessageSave() { 967143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Account account1 = setupAccount("message-save", true); 977143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 987143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Mailbox box1 = setupMailbox("box1", account1Id, true); 997143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long box1Id = box1.mId; 1007143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1017143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // Test a simple message (saved with no body) 1027143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Message message1 = setupMessage("message1", account1Id, box1Id, false, true); 1037143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long message1Id = message1.mId; 1047143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Message message1get = EmailContent.Message.restoreMessageWithId(mMockContext, message1Id); 1057143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertMessageEqual("testMessageSave", message1, message1get); 1067143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1077143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // Test a message saved with a body 1087143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // Note that it will read back w/o the text & html so we must extract those 1097143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Message message2 = setupMessage("message1", account1Id, box1Id, true, true); 1107143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long message2Id = message2.mId; 1117143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String text2 = message2.mText; 1127143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String html2 = message2.mHtml; 1137143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message2.mText = null; 1147143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message2.mHtml = null; 1157143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Message message2get = EmailContent.Message.restoreMessageWithId(mMockContext, message2Id); 1167143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertMessageEqual("testMessageSave", message2, message2get); 1177143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1187143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // Now see if there's a body saved with the right stuff 1197143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // TODO it might make sense to add a function to restore the body with the message id 1207143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Cursor c = null; 1217143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler try { 1227143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler c = mMockContext.getContentResolver().query( 1237143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler EmailContent.Body.CONTENT_URI, 1247143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler EmailContent.Body.CONTENT_PROJECTION, 1257143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler EmailContent.Body.MESSAGE_KEY + "=?", 1267143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler new String[] { 1277143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String.valueOf(message2Id) 1287143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler }, 1297143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler null); 1307143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numBodies = c.getCount(); 1317143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(1, numBodies); 1327143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler c.moveToFirst(); 1337143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Body body2 = EmailContent.getContent(c, Body.class); 1347143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals("body text", text2, body2.mTextContent); 1357143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals("body html", html2, body2.mHtmlContent); 1367143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } finally { 1377143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler if (c != null) c.close(); 1387143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 1397143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 1407143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1417143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 1427143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: update account 1437143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 1447143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1457143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 1467143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: update mailbox 1477143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 1487143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1497143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 1507143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: update message 1517143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 1527143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1537143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 1547143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Test delete account 1557143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: hostauth 1567143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 1577143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void testAccountDelete() { 1587143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Account account1 = setupAccount("account-delete-1", true); 1597143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 1607143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Account account2 = setupAccount("account-delete-2", true); 1617143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account2Id = account2.mId; 1627143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1637143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are two accounts 1647143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numBoxes = EmailContent.count(mMockContext, Account.CONTENT_URI, null, null); 1657143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(2, numBoxes); 1667143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1677143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // now delete one of them 1687143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Uri uri = ContentUris.withAppendedId(Account.CONTENT_URI, account1Id); 1697143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 1707143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1717143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there's only one account now 1727143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numBoxes = EmailContent.count(mMockContext, Account.CONTENT_URI, null, null); 1737143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(1, numBoxes); 1747143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1757143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // now delete the other one 1767143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler uri = ContentUris.withAppendedId(Account.CONTENT_URI, account2Id); 1777143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 1787143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1797143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are no accounts now 1807143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numBoxes = EmailContent.count(mMockContext, Account.CONTENT_URI, null, null); 1817143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(0, numBoxes); 1827143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 1837143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1847143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 1857143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Test delete mailbox 1867143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 1877143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void testMailboxDelete() { 1887143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Account account1 = setupAccount("mailbox-delete", true); 1897143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 1907143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Mailbox box1 = setupMailbox("box1", account1Id, true); 1917143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long box1Id = box1.mId; 1927143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Mailbox box2 = setupMailbox("box2", account1Id, true); 1937143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long box2Id = box2.mId; 1947143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1957143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String selection = EmailContent.MailboxColumns.ACCOUNT_KEY + "=?"; 1967143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String[] selArgs = new String[] { String.valueOf(account1Id) }; 1977143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 1987143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are two mailboxes 1997143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numBoxes = EmailContent.count(mMockContext, Mailbox.CONTENT_URI, selection, selArgs); 2007143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(2, numBoxes); 2017143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2027143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // now delete one of them 2037143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Uri uri = ContentUris.withAppendedId(Mailbox.CONTENT_URI, box1Id); 2047143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 2057143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2067143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there's only one mailbox now 2077143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numBoxes = EmailContent.count(mMockContext, Mailbox.CONTENT_URI, selection, selArgs); 2087143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(1, numBoxes); 2097143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2107143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // now delete the other one 2117143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler uri = ContentUris.withAppendedId(Mailbox.CONTENT_URI, box2Id); 2127143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 2137143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2147143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are no mailboxes now 2157143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numBoxes = EmailContent.count(mMockContext, Mailbox.CONTENT_URI, selection, selArgs); 2167143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(0, numBoxes); 2177143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 2187143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2197143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 2207143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Test delete message 2217143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: body 2227143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: attachments 2237143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 2247143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void testMessageDelete() { 2257143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Account account1 = setupAccount("message-delete", true); 2267143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 2277143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Mailbox box1 = setupMailbox("box1", account1Id, true); 2287143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long box1Id = box1.mId; 2297143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Message message1 = setupMessage("message1", account1Id, box1Id, false, true); 2307143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long message1Id = message1.mId; 2317143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Message message2 = setupMessage("message2", account1Id, box1Id, false, true); 2327143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long message2Id = message2.mId; 2337143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2347143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String selection = EmailContent.MessageColumns.ACCOUNT_KEY + "=? AND " + 2357143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler EmailContent.MessageColumns.MAILBOX_KEY + "=?"; 2367143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String[] selArgs = new String[] { String.valueOf(account1Id), String.valueOf(box1Id) }; 2377143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2387143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are two messages 2397143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 2407143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(2, numMessages); 2417143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2427143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // now delete one of them 2437143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Uri uri = ContentUris.withAppendedId(Message.CONTENT_URI, message1Id); 2447143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 2457143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2467143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there's only one message now 2477143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 2487143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(1, numMessages); 2497143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2507143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // now delete the other one 2517143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler uri = ContentUris.withAppendedId(Message.CONTENT_URI, message2Id); 2527143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 2537143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2547143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are no messages now 2557143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 2567143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(0, numMessages); 2577143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 2587143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 2597143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 260ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler * Test delete synced message 261ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler * TODO: body 262ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler * TODO: attachments 263ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler */ 264ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler public void testSyncedMessageDelete() { 265ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Account account1 = setupAccount("synced-message-delete", true); 266ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long account1Id = account1.mId; 267ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Mailbox box1 = setupMailbox("box1", account1Id, true); 268ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long box1Id = box1.mId; 269ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Message message1 = setupMessage("message1", account1Id, box1Id, false, true); 270ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long message1Id = message1.mId; 271ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Message message2 = setupMessage("message2", account1Id, box1Id, false, true); 272ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long message2Id = message2.mId; 273ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 274ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler String selection = EmailContent.MessageColumns.ACCOUNT_KEY + "=? AND " 275ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler + EmailContent.MessageColumns.MAILBOX_KEY + "=?"; 276ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler String[] selArgs = new String[] { 277ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler String.valueOf(account1Id), String.valueOf(box1Id) 278ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler }; 279ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 280ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there are two messages 281ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler int numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 282ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(2, numMessages); 283ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 284ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure we start with no synced deletions 285ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.DELETED_CONTENT_URI, selection, 286ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler selArgs); 287ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(0, numMessages); 288ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 289ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // now delete one of them SYNCED 290ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Uri uri = ContentUris.withAppendedId(Message.SYNCED_CONTENT_URI, message1Id); 291ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 292ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 293ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there's only one message now 294ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 295ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(1, numMessages); 296ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 297ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there's one synced deletion now 298ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.DELETED_CONTENT_URI, selection, 299ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler selArgs); 300ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(1, numMessages); 301ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 302ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // now delete the other one NOT SYNCED 303ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler uri = ContentUris.withAppendedId(Message.CONTENT_URI, message2Id); 304ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 305ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 306ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there are no messages now 307ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 308ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(0, numMessages); 309ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 310ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there's still one deletion now 311ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.DELETED_CONTENT_URI, selection, 312ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler selArgs); 313ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(1, numMessages); 314ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler } 315ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 316ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler /** 317ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler * Test message update 318ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler * TODO: body 319ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler * TODO: attachments 320ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler */ 321ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler public void testMessageUpdate() { 322ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Account account1 = setupAccount("message-update", true); 323ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long account1Id = account1.mId; 324ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Mailbox box1 = setupMailbox("box1", account1Id, true); 325ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long box1Id = box1.mId; 326ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Message message1 = setupMessage("message1", account1Id, box1Id, false, true); 327ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long message1Id = message1.mId; 328ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Message message2 = setupMessage("message2", account1Id, box1Id, false, true); 329ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler long message2Id = message2.mId; 330ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler ContentResolver cr = mMockContext.getContentResolver(); 331ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 332ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler String selection = EmailContent.MessageColumns.ACCOUNT_KEY + "=? AND " 333ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler + EmailContent.MessageColumns.MAILBOX_KEY + "=?"; 334ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler String[] selArgs = new String[] { 335ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler String.valueOf(account1Id), String.valueOf(box1Id) 336ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler }; 337ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 338ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there are two messages 339ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler int numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 340ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(2, numMessages); 341ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 342ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // change the first one 343ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Uri uri = ContentUris.withAppendedId(Message.CONTENT_URI, message1Id); 344ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler ContentValues cv = new ContentValues(); 345ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler cv.put(MessageColumns.FROM_LIST, "from-list"); 346ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler cr.update(uri, cv, null, null); 347ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 348ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there's no updated message 349ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.UPDATED_CONTENT_URI, selection, 350ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler selArgs); 351ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(0, numMessages); 352ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 353ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // get the message back from the provider, make sure the change "stuck" 354ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Message restoredMessage = Message.restoreMessageWithId(mMockContext, message1Id); 355ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals("from-list", restoredMessage.mFrom); 356ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 357ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // change the second one 358ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler uri = ContentUris.withAppendedId(Message.SYNCED_CONTENT_URI, message2Id); 359ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler cv = new ContentValues(); 360ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler cv.put(MessageColumns.FROM_LIST, "from-list"); 361ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler cr.update(uri, cv, null, null); 362ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 363ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure there's one updated message 364ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.UPDATED_CONTENT_URI, selection, 365ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler selArgs); 366ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(1, numMessages); 367ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 368ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // get the message back from the provider, make sure the change "stuck", 369ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // as before 370ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler restoredMessage = Message.restoreMessageWithId(mMockContext, message2Id); 371ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals("from-list", restoredMessage.mFrom); 372ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 373ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // get the original message back from the provider 374ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Cursor c = cr.query(Message.UPDATED_CONTENT_URI, Message.CONTENT_PROJECTION, null, null, 375ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler null); 376ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler try { 377ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertTrue(c.moveToFirst()); 378ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler Message originalMessage = EmailContent.getContent(c, Message.class); 379ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // make sure this has the original value 380ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals("from message2", originalMessage.mFrom); 381ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // Should only be one 382ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertFalse(c.moveToNext()); 383ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler } finally { 384ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler c.close(); 385ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler } 386ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 387ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // delete the second message 388ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler cr.delete(ContentUris.withAppendedId(Message.SYNCED_CONTENT_URI, message2Id), null, null); 389ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 390ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // hey, presto! the change should be gone 391ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.UPDATED_CONTENT_URI, selection, 392ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler selArgs); 393ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(0, numMessages); 394ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 395ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler // and there should now be a deleted record 396ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler numMessages = EmailContent.count(mMockContext, Message.DELETED_CONTENT_URI, selection, 397ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler selArgs); 398ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler assertEquals(1, numMessages); 399ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler } 400ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler 401ddc871d9eddd088c0200a30dbfeb24812a81cf80Andrew Stadler /** 4027143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: cascaded delete account 4037143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: hostauth 4047143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: body 4057143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: attachments 4067143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: create other account, mailbox & messages and confirm the right objects were deleted 4077143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 4087143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void testCascadeDeleteAccount() { 4097143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Account account1 = setupAccount("account-delete-cascade", true); 4107143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 4117143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Mailbox box1 = setupMailbox("box1", account1Id, true); 4127143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long box1Id = box1.mId; 4137143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /* Message message1 = */ setupMessage("message1", account1Id, box1Id, false, true); 4147143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /* Message message2 = */ setupMessage("message2", account1Id, box1Id, false, true); 4157143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4167143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there is one account, one mailbox, and two messages 4177143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numAccounts = EmailContent.count(mMockContext, Account.CONTENT_URI, null, null); 4187143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(1, numAccounts); 4197143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numBoxes = EmailContent.count(mMockContext, Mailbox.CONTENT_URI, null, null); 4207143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(1, numBoxes); 4217143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, null, null); 4227143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(2, numMessages); 4237143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4247143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // delete the account 4257143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Uri uri = ContentUris.withAppendedId(Account.CONTENT_URI, account1Id); 4267143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 4277143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4287143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are no accounts, mailboxes, or messages 4297143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numAccounts = EmailContent.count(mMockContext, Account.CONTENT_URI, null, null); 4307143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(0, numAccounts); 4317143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numBoxes = EmailContent.count(mMockContext, Mailbox.CONTENT_URI, null, null); 4327143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(0, numBoxes); 4337143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, null, null); 4347143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(0, numMessages); 4357143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 4367143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4377143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 4387143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Test cascaded delete mailbox 4397143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: body 4407143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: attachments 4417143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: create other mailbox & messages and confirm the right objects were deleted 4427143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 4437143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler public void testCascadeDeleteMailbox() { 4447143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Account account1 = setupAccount("mailbox-delete-cascade", true); 4457143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long account1Id = account1.mId; 4467143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Mailbox box1 = setupMailbox("box1", account1Id, true); 4477143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler long box1Id = box1.mId; 4487143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /* Message message1 = */ setupMessage("message1", account1Id, box1Id, false, true); 4497143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /* Message message2 = */ setupMessage("message2", account1Id, box1Id, false, true); 4507143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4517143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String selection = EmailContent.MessageColumns.ACCOUNT_KEY + "=? AND " + 4527143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler EmailContent.MessageColumns.MAILBOX_KEY + "=?"; 4537143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler String[] selArgs = new String[] { String.valueOf(account1Id), String.valueOf(box1Id) }; 4547143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4557143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // make sure there are two messages 4567143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler int numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 4577143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(2, numMessages); 4587143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4597143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // now delete the mailbox 4607143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Uri uri = ContentUris.withAppendedId(Mailbox.CONTENT_URI, box1Id); 4617143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler mMockContext.getContentResolver().delete(uri, null, null); 4627143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4637143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler // there should now be zero messages 4647143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler numMessages = EmailContent.count(mMockContext, Message.CONTENT_URI, selection, selArgs); 4657143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(0, numMessages); 4667143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 4677143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4687143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 4697143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: Test cascaded delete message 4707143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: body 4717143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: attachments 4727143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 4737143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4747143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 4757143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Create an account for test purposes 4767143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 4777143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler private Account setupAccount(String name, boolean saveIt) { 4787143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Account account = new Account(); 4797143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4807143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler account.mDisplayName = name; 4817143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler account.mEmailAddress = name + "@android.com"; 4827143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler account.mSyncKey = "sync-key-" + name; 4837143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler account.mSyncLookback = 1; 4847143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler account.mSyncFrequency = EmailContent.Account.CHECK_INTERVAL_NEVER; 4857143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler account.mHostAuthKeyRecv = 2; 4867143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler account.mHostAuthKeySend = 3; 4877143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler account.mFlags = 4; 4887143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler account.mIsDefault = true; 4897143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler account.mCompatibilityUuid = "test-uid-" + name; 4907143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler account.mSenderName = name; 4917143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler account.mRingtoneUri = "content://ringtone-" + name; 4927143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4937143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler if (saveIt) { 4947143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler account.saveOrUpdate(mMockContext); 4957143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 4967143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler return account; 4977143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 4987143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 4997143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 5007143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Create a mailbox for test purposes 5017143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 5027143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler private Mailbox setupMailbox(String name, long accountId, boolean saveIt) { 5037143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Mailbox box = new Mailbox(); 5047143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 5057143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler box.mDisplayName = name; 5067143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler box.mServerId = "serverid-" + name; 5077143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler box.mParentServerId = "parent-serverid-" + name; 5087143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler box.mAccountKey = accountId; 5097143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler box.mType = Mailbox.TYPE_MAIL; 5107143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler box.mDelimiter = 1; 5117143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler box.mSyncKey = "sync-key-" + name; 5127143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler box.mSyncLookback = 2; 5137143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler box.mSyncFrequency = EmailContent.Account.CHECK_INTERVAL_NEVER; 5147143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler box.mSyncTime = 3; 5157143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler box.mUnreadCount = 4; 5167143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler box.mFlagVisible = true; 5177143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler box.mFlags = 5; 5187143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler box.mVisibleLimit = 6; 5197143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 5207143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler if (saveIt) { 5217143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler box.saveOrUpdate(mMockContext); 5227143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 5237143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler return box; 5247143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 5257143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 5267143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 5277143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Create a message for test purposes 5287143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * 5297143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: body 5307143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: attachments 5317143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 5327143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler private Message setupMessage(String name, long accountId, long mailboxId, boolean addBody, 5337143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler boolean saveIt) { 5347143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler Message message = new Message(); 5357143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 5367143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mDisplayName = name; 5377143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mTimeStamp = 1; 5387143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mSubject = "subject " + name; 5397143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mPreview = "preview " + name; 5407143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mFlagRead = true; 5417143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mFlagLoaded = Message.NOT_LOADED; 5427143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mFlagFavorite = true; 5437143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mFlagAttachment = true; 5447143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mFlags = 2; 5457143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 5467143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mTextInfo = "textinfo " + name; 5477143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mHtmlInfo = "htmlinfo " + name; 5487143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 5497143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mServerId = "serverid " + name; 5507143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mServerIntId = 0; 5517143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mClientId = "clientid " + name; 5527143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mMessageId = "messageid " + name; 5537143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mThreadId = "threadid " + name; 5547143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 5557143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mMailboxKey = mailboxId; 5567143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mAccountKey = accountId; 5577143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mReferenceKey = 4; 5587143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 5597143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mSender = "sender " + name; 5607143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mFrom = "from " + name; 5617143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mTo = "to " + name; 5627143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mCc = "cc " + name; 5637143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mBcc = "bcc " + name; 5647143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mReplyTo = "replyto " + name; 5657143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 5667143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mServerVersion = "serverversion " + name; 5677143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 5687143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler if (addBody) { 5697143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mText = "body text " + name; 5707143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.mHtml = "body html " + name; 5717143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 5727143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 5737143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler if (saveIt) { 5747143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler message.saveOrUpdate(mMockContext); 5757143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 5767143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler return message; 5777143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 5787143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 5797143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 5807143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Compare two accounts for equality 5817143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * 5827143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: check host auth? 5837143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 5847143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler private void assertAccountEqual(String caller, Account expect, Account actual) { 5857143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler if (expect == actual) { 5867143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler return; 5877143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 5887143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 5897143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mDisplayName", expect.mDisplayName, actual.mDisplayName); 5907143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mEmailAddress", expect.mEmailAddress, actual.mEmailAddress); 5917143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mSyncKey", expect.mSyncKey, actual.mSyncKey); 5927143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 5937143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mSyncLookback", expect.mSyncLookback, actual.mSyncLookback); 5947143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mSyncFrequency", expect.mSyncFrequency, actual.mSyncFrequency); 5957143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mHostAuthKeyRecv", expect.mHostAuthKeyRecv, 5967143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler actual.mHostAuthKeyRecv); 5977143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mHostAuthKeySend", expect.mHostAuthKeySend, 5987143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler actual.mHostAuthKeySend); 5997143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mFlags", expect.mFlags, actual.mFlags); 6007143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mIsDefault", expect.mIsDefault, actual.mIsDefault); 6017143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mCompatibilityUuid", expect.mCompatibilityUuid, 6027143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler actual.mCompatibilityUuid); 6037143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mSenderName", expect.mSenderName, actual.mSenderName); 6047143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mRingtoneUri", expect.mRingtoneUri, actual.mRingtoneUri); 6057143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 6067143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 6077143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 6087143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Compare two mailboxes for equality 6097143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 6107143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler private void assertMailboxEqual(String caller, Mailbox expect, Mailbox actual) { 6117143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler if (expect == actual) { 6127143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler return; 6137143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 6147143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 6157143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mDisplayName", expect.mDisplayName, actual.mDisplayName); 6167143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mServerId", expect.mServerId, actual.mServerId); 6177143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mParentServerId", expect.mParentServerId, actual.mParentServerId); 6187143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mAccountKey", expect.mAccountKey, actual.mAccountKey); 6197143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mType", expect.mType, actual.mType); 6207143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mDelimiter", expect.mDelimiter, actual.mDelimiter); 6217143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mSyncKey", expect.mSyncKey, actual.mSyncKey); 6227143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mSyncLookback", expect.mSyncLookback, actual.mSyncLookback); 6237143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mSyncFrequency", expect.mSyncFrequency, actual.mSyncFrequency); 6247143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mSyncTime", expect.mSyncTime, actual.mSyncTime); 6257143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mUnreadCount", expect.mUnreadCount, actual.mUnreadCount); 6267143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mFlagVisible", expect.mFlagVisible, actual.mFlagVisible); 6277143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mFlags", expect.mFlags, actual.mFlags); 6287143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mVisibleLimit", expect.mVisibleLimit, actual.mVisibleLimit); 6297143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 6307143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 6317143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler /** 6327143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * Compare two messages for equality 6337143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * 6347143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: body? 6357143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler * TODO: attachments? 6367143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler */ 6377143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler private void assertMessageEqual(String caller, Message expect, Message actual) { 6387143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler if (expect == actual) { 6397143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler return; 6407143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 6417143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 6427143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mDisplayName", expect.mDisplayName, actual.mDisplayName); 6437143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mTimeStamp", expect.mTimeStamp, actual.mTimeStamp); 6447143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mSubject", expect.mSubject, actual.mSubject); 6457143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mPreview", expect.mPreview, actual.mPreview); 6467143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mFlagRead = false", expect.mFlagRead, actual.mFlagRead); 6477143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mFlagLoaded", expect.mFlagLoaded, actual.mFlagLoaded); 6487143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mFlagFavorite", expect.mFlagFavorite, actual.mFlagFavorite); 6497143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mFlagAttachment", expect.mFlagAttachment, actual.mFlagAttachment); 6507143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mFlags", expect.mFlags, actual.mFlags); 6517143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 6527143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mTextInfo", expect.mTextInfo, actual.mTextInfo); 6537143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mHtmlInfo", expect.mHtmlInfo, actual.mHtmlInfo); 6547143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 6557143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mServerId", expect.mServerId, actual.mServerId); 6567143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mServerIntId", expect.mServerIntId, actual.mServerIntId); 6577143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mClientId", expect.mClientId, actual.mClientId); 6587143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mMessageId", expect.mMessageId, actual.mMessageId); 6597143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mThreadId", expect.mThreadId, actual.mThreadId); 6607143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 6617143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mMailboxKey", expect.mMailboxKey, actual.mMailboxKey); 6627143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mAccountKey", expect.mAccountKey, actual.mAccountKey); 6637143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mReferenceKey", expect.mReferenceKey, actual.mReferenceKey); 6647143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 6657143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mSender", expect.mSender, actual.mSender); 6667143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mFrom", expect.mFrom, actual.mFrom); 6677143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mTo", expect.mTo, actual.mTo); 6687143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mCc", expect.mCc, actual.mCc); 6697143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mBcc", expect.mBcc, actual.mBcc); 6707143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mReplyTo", expect.mReplyTo, actual.mReplyTo); 6717143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 6727143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mServerVersion", expect.mServerVersion, actual.mServerVersion); 6737143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler 6747143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mText", expect.mText, actual.mText); 6757143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler assertEquals(caller + " mHtml", expect.mHtml, actual.mHtml); 6767143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler } 6777143d969dde180b7a44bdc42ade6ca2878d0760dAndrew Stadler} 678