Add unit test for Utility#updateLastSeenMessageKey

Change-Id: I1335ac53c5de418fd0ed6c2b38be60165db1cb8c
This commit is contained in:
Todd Kennedy 2011-05-09 09:49:32 -07:00
parent a9ac20b96f
commit a17ee57c7f
2 changed files with 127 additions and 2 deletions

View File

@ -906,9 +906,11 @@ public class Utility {
* Updates the last seen message key in the mailbox data base for the INBOX of the currently
* shown account. If the account is {@link Account#ACCOUNT_ID_COMBINED_VIEW}, the INBOX for
* all accounts are updated.
* @return an {@link EmailAsyncTask} for test only.
*/
public static void updateLastSeenMessageKey(final Context context, final long accountId) {
EmailAsyncTask.runAsyncParallel(new Runnable() {
public static EmailAsyncTask<Void, Void, Void> updateLastSeenMessageKey(final Context context,
final long accountId) {
return EmailAsyncTask.runAsyncParallel(new Runnable() {
private void updateLastSeenMessageKeyForAccount(long accountId) {
ContentResolver resolver = context.getContentResolver();
if (accountId == Account.ACCOUNT_ID_COMBINED_VIEW) {

View File

@ -24,6 +24,8 @@ import com.android.email.provider.ProviderTestUtils;
import com.android.emailcommon.provider.EmailContent.Account;
import com.android.emailcommon.provider.EmailContent.Attachment;
import com.android.emailcommon.provider.EmailContent.Mailbox;
import com.android.emailcommon.provider.EmailContent.MailboxColumns;
import com.android.emailcommon.provider.EmailContent.Message;
import com.android.emailcommon.utility.Utility.NewFileCreator;
import android.content.Context;
@ -372,6 +374,127 @@ public class UtilityUnitTests extends AndroidTestCase {
assertEquals(lastPathSegment, Utility.getContentFileName(providerContext, notExistUri));
}
private long getLastUpdateKey(Context mockContext, long mailboxId) {
return Utility.getFirstRowLong(mockContext, Mailbox.CONTENT_URI,
new String[] { MailboxColumns.LAST_SEEN_MESSAGE_KEY }, MailboxColumns.ID + "=?",
new String[] { Long.toString(mailboxId) }, null, 0, -1L);
}
public void testUpdateLastSeenMessageKey() throws Exception {
Context mockContext = DBTestHelper.ProviderContextSetupHelper.getProviderContext(mContext);
// Setup account & message stuff
Account account1 = ProviderTestUtils.setupAccount("account1", true, mockContext);
Account account2 = ProviderTestUtils.setupAccount("account2", true, mockContext);
Account account3 = ProviderTestUtils.setupAccount("account3", true, mockContext);
Account account4 = ProviderTestUtils.setupAccount("account4", true, mockContext);
Mailbox mailbox1_1 = ProviderTestUtils.setupMailbox("mbox1_1", account1.mId, true,
mockContext, Mailbox.TYPE_INBOX);
Mailbox mailbox1_2 = ProviderTestUtils.setupMailbox("mbox1_2", account1.mId, true,
mockContext, Mailbox.TYPE_MAIL);
Mailbox mailbox1_3 = ProviderTestUtils.setupMailbox("mbox1_3", account1.mId, true,
mockContext, Mailbox.TYPE_DRAFTS);
Mailbox mailbox1_4 = ProviderTestUtils.setupMailbox("mbox1_4", account1.mId, true,
mockContext, Mailbox.TYPE_OUTBOX);
Mailbox mailbox1_5 = ProviderTestUtils.setupMailbox("mbox1_5", account1.mId, true,
mockContext, Mailbox.TYPE_TRASH);
Mailbox mailbox2_1 = ProviderTestUtils.setupMailbox("mbox2_1", account2.mId, true,
mockContext, Mailbox.TYPE_MAIL);
Mailbox mailbox3_1 = ProviderTestUtils.setupMailbox("mbox3_1", account3.mId, true,
mockContext, Mailbox.TYPE_MAIL);
Mailbox mailbox3_2 = ProviderTestUtils.setupMailbox("mbox3_2", account3.mId, true,
mockContext, Mailbox.TYPE_INBOX);
Mailbox mailbox4_1 = ProviderTestUtils.setupMailbox("mbox4_1", account4.mId, true,
mockContext, Mailbox.TYPE_INBOX);
Message message1_1_1 = ProviderTestUtils.setupMessage("message_1_1_1", account1.mId,
mailbox1_1.mId, false, true, mockContext);
Message message1_1_2 = ProviderTestUtils.setupMessage("message_1_1_2", account1.mId,
mailbox1_1.mId, false, true, mockContext);
Message message1_1_3 = ProviderTestUtils.setupMessage("message_1_1_3", account1.mId,
mailbox1_1.mId, false, true, mockContext);
Message message1_2_1 = ProviderTestUtils.setupMessage("message_1_2_1", account1.mId,
mailbox1_2.mId, false, true, mockContext);
Message message1_3_1 = ProviderTestUtils.setupMessage("message_1_3_1", account1.mId,
mailbox1_3.mId, false, true, mockContext);
Message message1_4_1 = ProviderTestUtils.setupMessage("message_1_4_1", account1.mId,
mailbox1_4.mId, false, true, mockContext);
Message message1_5_1 = ProviderTestUtils.setupMessage("message_1_5_1", account1.mId,
mailbox1_5.mId, false, true, mockContext);
Message message2_1_1 = ProviderTestUtils.setupMessage("message_2_1_1", account2.mId,
mailbox2_1.mId, false, true, mockContext);
Message message2_1_2 = ProviderTestUtils.setupMessage("message_2_1_2", account2.mId,
mailbox2_1.mId, false, true, mockContext);
Message message3_1_1 = ProviderTestUtils.setupMessage("message_3_1_1", account3.mId,
mailbox3_1.mId, false, true, mockContext);
Message message4_1_1 = ProviderTestUtils.setupMessage("message_4_1_1", account4.mId,
mailbox4_1.mId, false, true, mockContext);
Message message4_1_2 = ProviderTestUtils.setupMessage("message_4_1_2", account4.mId,
mailbox4_1.mId, false, true, mockContext);
Message message4_1_3 = ProviderTestUtils.setupMessage("message_4_1_3", account4.mId,
mailbox4_1.mId, false, true, mockContext);
Message message4_1_4 = ProviderTestUtils.setupMessage("message_4_1_4", account4.mId,
mailbox4_1.mId, false, true, mockContext);
// Verify the default case
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_1.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_2.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_3.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_4.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_5.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox2_1.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox3_1.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox3_2.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox4_1.mId));
// Test account; only INBOX is modified
Utility.updateLastSeenMessageKey(mockContext, account1.mId).get();
assertEquals(message1_1_3.mId, getLastUpdateKey(mockContext, mailbox1_1.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_2.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_3.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_4.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_5.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox2_1.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox3_1.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox3_2.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox4_1.mId));
// Missing INBOX
Utility.updateLastSeenMessageKey(mockContext, account2.mId).get();
assertEquals(message1_1_3.mId, getLastUpdateKey(mockContext, mailbox1_1.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_2.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_3.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_4.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_5.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox2_1.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox3_1.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox3_2.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox4_1.mId));
// No messages in mailbox
Utility.updateLastSeenMessageKey(mockContext, account3.mId).get();
assertEquals(message1_1_3.mId, getLastUpdateKey(mockContext, mailbox1_1.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_2.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_3.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_4.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_5.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox2_1.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox3_1.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox3_2.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox4_1.mId));
// Test combined accounts
Utility.updateLastSeenMessageKey(mockContext, 0x1000000000000000L).get();
assertEquals(message1_1_3.mId, getLastUpdateKey(mockContext, mailbox1_1.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_2.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_3.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_4.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox1_5.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox2_1.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox3_1.mId));
assertEquals(0L, getLastUpdateKey(mockContext, mailbox3_2.mId));
assertEquals(message4_1_4.mId, getLastUpdateKey(mockContext, mailbox4_1.mId));
}
// used by testToPrimitiveLongArray
private static Collection<Long> createLongCollection(long... values) {
ArrayList<Long> ret = new ArrayList<Long>();