ControllerProviderOpsTests.java revision 6ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6
17c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler/* 27c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * Copyright (C) 2009 The Android Open Source Project 37c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * 47c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * Licensed under the Apache License, Version 2.0 (the "License"); 57c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * you may not use this file except in compliance with the License. 67c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * You may obtain a copy of the License at 77c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * 87c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * http://www.apache.org/licenses/LICENSE-2.0 97c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * 107c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * Unless required by applicable law or agreed to in writing, software 117c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * distributed under the License is distributed on an "AS IS" BASIS, 127c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * See the License for the specific language governing permissions and 147c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * limitations under the License. 157c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler */ 167c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 177c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadlerpackage com.android.email; 187c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 197c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadlerimport com.android.email.provider.EmailContent; 207c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadlerimport com.android.email.provider.EmailProvider; 217c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadlerimport com.android.email.provider.ProviderTestUtils; 227c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadlerimport com.android.email.provider.EmailContent.Account; 237c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadlerimport com.android.email.provider.EmailContent.Mailbox; 247c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadlerimport com.android.email.provider.EmailContent.Message; 257c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 267c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadlerimport android.content.Context; 277c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadlerimport android.test.ProviderTestCase2; 287c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 297c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler/** 307c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * Tests of the Controller class that depend on the underlying provider. 317c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * 327c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * NOTE: It would probably make sense to rewrite this using a MockProvider, instead of the 337c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * ProviderTestCase (which is a real provider running on a temp database). This would be more of 347c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * a true "unit test". 357c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * 367c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * You can run this entire test case with: 377c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * runtest -c com.android.email.ControllerProviderOpsTests email 387c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler */ 397c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadlerpublic class ControllerProviderOpsTests extends ProviderTestCase2<EmailProvider> { 407c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 417c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler EmailProvider mProvider; 427c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Context mProviderContext; 437c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Context mContext; 447c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 457c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler public ControllerProviderOpsTests() { 467c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler super(EmailProvider.class, EmailProvider.EMAIL_AUTHORITY); 477c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler } 487c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 497c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler @Override 507c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler public void setUp() throws Exception { 517c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler super.setUp(); 527c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler mProviderContext = getMockContext(); 537c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler mContext = getContext(); 547c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler } 557c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 567c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler @Override 577c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler public void tearDown() throws Exception { 587c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler super.tearDown(); 597c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler } 607c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 617c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler /** 627c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * Lightweight subclass of the Controller class allows injection of mock context 637c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler */ 647c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler public static class TestController extends Controller { 657c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 667c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler protected TestController(Context providerContext, Context systemContext) { 677c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler super(systemContext); 687c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler setProviderContext(providerContext); 697c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler } 707c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler } 717c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 72c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda public void testGetSpecialMailboxName() { 73c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda Controller ct = new TestController(mProviderContext, mContext); 74c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda assertEquals("Outbox", ct.getSpecialMailboxDisplayName(Mailbox.TYPE_OUTBOX)); 75c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda assertEquals("", ct.getSpecialMailboxDisplayName(-1)); 76c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda } 77c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda 78c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda /** 79c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda * Test of Controller.createMailbox(). 80c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda * Sunny day test only - creates a mailbox that does not exist. 81c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda * Does not test duplication, bad accountID, or any other bad input. 82c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda */ 83c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda public void testCreateMailbox() { 84c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda Account account = ProviderTestUtils.setupAccount("mailboxid", true, mProviderContext); 85c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda long accountId = account.mId; 86c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda 87c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda long oldBoxId = Mailbox.findMailboxOfType(mProviderContext, accountId, Mailbox.TYPE_DRAFTS); 88c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda assertEquals(Mailbox.NO_MAILBOX, oldBoxId); 89c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda 90c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda Controller ct = new TestController(mProviderContext, mContext); 91c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda ct.createMailbox(accountId, Mailbox.TYPE_DRAFTS); 92c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda long boxId = Mailbox.findMailboxOfType(mProviderContext, accountId, Mailbox.TYPE_DRAFTS); 93c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda 94c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda // check that the drafts mailbox exists 95c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda assertTrue("mailbox exists", boxId != Mailbox.NO_MAILBOX); 96c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda } 97c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda 98c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda /** 99c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda * Test of Controller.findOrCreateMailboxOfType(). 100c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda * Checks: 101c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda * - finds correctly the ID of existing mailbox 102c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda * - creates non-existing mailbox 103c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda * - creates only once a new mailbox 104c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda * - when accountId or mailboxType are -1, returns NO_MAILBOX 105c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda */ 106c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda public void testFindOrCreateMailboxOfType() { 107c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda Account account = ProviderTestUtils.setupAccount("mailboxid", true, mProviderContext); 108c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda long accountId = account.mId; 109c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda Mailbox box = ProviderTestUtils.setupMailbox("box", accountId, false, mProviderContext); 110c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda final int boxType = Mailbox.TYPE_TRASH; 111c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda box.mType = boxType; 112c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda box.save(mProviderContext); 113c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda long boxId = box.mId; 114c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda 115c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda Controller ct = new TestController(mProviderContext, mContext); 116c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda long testBoxId = ct.findOrCreateMailboxOfType(accountId, boxType); 117c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda 118c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda // check it found the right mailbox id 119c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda assertEquals(boxId, testBoxId); 120c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda 121c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda long boxId2 = ct.findOrCreateMailboxOfType(accountId, Mailbox.TYPE_DRAFTS); 122c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda assertTrue("mailbox created", boxId2 != Mailbox.NO_MAILBOX); 123c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda assertTrue("with different id", testBoxId != boxId2); 124c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda 125c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda // check it doesn't create twice when existing 126c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda long boxId3 = ct.findOrCreateMailboxOfType(accountId, Mailbox.TYPE_DRAFTS); 127c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda assertEquals("don't create if exists", boxId3, boxId2); 128c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda 129c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda // check invalid aruments 130c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda assertEquals(Mailbox.NO_MAILBOX, ct.findOrCreateMailboxOfType(-1, Mailbox.TYPE_DRAFTS)); 131c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda assertEquals(Mailbox.NO_MAILBOX, ct.findOrCreateMailboxOfType(accountId, -1)); 132c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda } 133c6893ddf0fc1a647ca13a2b3aac2c68ca345de37Mihai Preda 1347c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler /** 1357c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * Test the "delete message" function. Sunny day: 1367c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * - message/mailbox/account all exist 1377c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * - trash mailbox exists 1387c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler */ 1397c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler public void testDeleteMessage() { 1407c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Account account1 = ProviderTestUtils.setupAccount("message-delete", true, mProviderContext); 1417c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler long account1Id = account1.mId; 1427c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Mailbox box1 = ProviderTestUtils.setupMailbox("box1", account1Id, true, mProviderContext); 1437c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler long box1Id = box1.mId; 1447c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Mailbox box2 = ProviderTestUtils.setupMailbox("box2", account1Id, false, mProviderContext); 1457c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler box2.mType = EmailContent.Mailbox.TYPE_TRASH; 1467c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler box2.save(mProviderContext); 1477c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler long box2Id = box2.mId; 1487c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 1497c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Message message1 = ProviderTestUtils.setupMessage("message1", account1Id, box1Id, false, 1507c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler true, mProviderContext); 1517c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler long message1Id = message1.mId; 1527c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 1537c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Controller ct = new TestController(mProviderContext, mContext); 1547c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 1557c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler ct.deleteMessage(message1Id, account1Id); 1567c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 1577c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler // now read back a fresh copy and confirm it's in the trash 1587c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Message message1get = EmailContent.Message.restoreMessageWithId(mProviderContext, 1597c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler message1Id); 1607c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler assertEquals(box2Id, message1get.mMailboxKey); 1617c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 1627c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler // Now repeat test with accountId "unknown" 1637c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Message message2 = ProviderTestUtils.setupMessage("message2", account1Id, box1Id, false, 1647c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler true, mProviderContext); 1657c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler long message2Id = message2.mId; 1667c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 1677c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler ct.deleteMessage(message2Id, -1); 1687c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 1697c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler // now read back a fresh copy and confirm it's in the trash 1707c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Message message2get = EmailContent.Message.restoreMessageWithId(mProviderContext, 1717c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler message2Id); 1727c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler assertEquals(box2Id, message2get.mMailboxKey); 1737c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler } 1747c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 1757c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler /** 1767c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * Test deleting message when there is no trash mailbox 1777c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler */ 1787c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler public void testDeleteMessageNoTrash() { 1797c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Account account1 = 1807c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler ProviderTestUtils.setupAccount("message-delete-notrash", true, mProviderContext); 1817c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler long account1Id = account1.mId; 1827c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Mailbox box1 = ProviderTestUtils.setupMailbox("box1", account1Id, true, mProviderContext); 1837c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler long box1Id = box1.mId; 1847c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 1857c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Message message1 = 1867c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler ProviderTestUtils.setupMessage("message1", account1Id, box1Id, false, true, 1877c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler mProviderContext); 1887c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler long message1Id = message1.mId; 1897c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 1907c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Controller ct = new TestController(mProviderContext, mContext); 1917c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 1927c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler ct.deleteMessage(message1Id, account1Id); 1937c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 1947c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler // now read back a fresh copy and confirm it's in the trash 1957c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Message message1get = 1967c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler EmailContent.Message.restoreMessageWithId(mProviderContext, message1Id); 1977c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 1987c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler // check the new mailbox and see if it looks right 1997c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler assertFalse(-1 == message1get.mMailboxKey); 2007c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler assertFalse(box1Id == message1get.mMailboxKey); 2017c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler Mailbox mailbox2get = EmailContent.Mailbox.restoreMailboxWithId(mProviderContext, 2027c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler message1get.mMailboxKey); 2037c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler assertEquals(EmailContent.Mailbox.TYPE_TRASH, mailbox2get.mType); 2047c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler } 2057c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler 2067c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler /** 2076ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler * Test read/unread flag 2086ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler */ 2096ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler public void testReadUnread() { 2106ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler // No account or mailbox needed for this test 2116ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler long account1Id = 1; 2126ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler long box1Id = 2; 2136ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler 2146ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler Message message1 = 2156ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler ProviderTestUtils.setupMessage("message1", account1Id, box1Id, false, true, 2166ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler mProviderContext); 2176ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler long message1Id = message1.mId; 2186ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler 2196ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler Controller ct = new TestController(mProviderContext, mContext); 2206ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler 2216ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler // test setting to "read" 2226ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler ct.setMessageRead(message1Id, true); 2236ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler Message message1get = Message.restoreMessageWithId(mProviderContext, message1Id); 2246ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler assertTrue(message1get.mFlagRead); 2256ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler 2266ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler // test setting to "unread" 2276ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler ct.setMessageRead(message1Id, false); 2286ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler message1get = Message.restoreMessageWithId(mProviderContext, message1Id); 2296ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler assertFalse(message1get.mFlagRead); 2306ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler } 2316ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler 2326ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler /** 2336ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler * Test favorites flag 2346ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler */ 2356ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler public void testFavorites() { 2366ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler // No account or mailbox needed for this test 2376ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler long account1Id = 1; 2386ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler long box1Id = 2; 2396ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler 2406ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler Message message1 = 2416ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler ProviderTestUtils.setupMessage("message1", account1Id, box1Id, false, true, 2426ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler mProviderContext); 2436ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler long message1Id = message1.mId; 2446ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler 2456ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler Controller ct = new TestController(mProviderContext, mContext); 2466ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler 2476ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler // test setting to "favorite" 2486ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler ct.setMessageFavorite(message1Id, true); 2496ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler Message message1get = Message.restoreMessageWithId(mProviderContext, message1Id); 2506ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler assertTrue(message1get.mFlagFavorite); 2516ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler 2526ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler // test setting to "not favorite" 2536ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler ct.setMessageFavorite(message1Id, false); 2546ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler message1get = Message.restoreMessageWithId(mProviderContext, message1Id); 2556ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler assertFalse(message1get.mFlagFavorite); 2566ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler } 2576ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler 2586ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler /** 2597c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler * TODO: releasing associated data (e.g. attachments, embedded images) 2607c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler */ 2616ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler 2626ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler /** 2636ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler * TODO: test isMessagingController() 2646ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6Andrew Stadler */ 2657c3cca80a0b4dacb7bcb48c65a9999138b5df82bAndrew Stadler} 266