Merge "Add unit test for Utility#updateLastSeenMessageKey"
This commit is contained in:
commit
dd9d472569
|
@ -906,9 +906,11 @@ public class Utility {
|
||||||
* Updates the last seen message key in the mailbox data base for the INBOX of the currently
|
* 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
|
* shown account. If the account is {@link Account#ACCOUNT_ID_COMBINED_VIEW}, the INBOX for
|
||||||
* all accounts are updated.
|
* all accounts are updated.
|
||||||
|
* @return an {@link EmailAsyncTask} for test only.
|
||||||
*/
|
*/
|
||||||
public static void updateLastSeenMessageKey(final Context context, final long accountId) {
|
public static EmailAsyncTask<Void, Void, Void> updateLastSeenMessageKey(final Context context,
|
||||||
EmailAsyncTask.runAsyncParallel(new Runnable() {
|
final long accountId) {
|
||||||
|
return EmailAsyncTask.runAsyncParallel(new Runnable() {
|
||||||
private void updateLastSeenMessageKeyForAccount(long accountId) {
|
private void updateLastSeenMessageKeyForAccount(long accountId) {
|
||||||
ContentResolver resolver = context.getContentResolver();
|
ContentResolver resolver = context.getContentResolver();
|
||||||
if (accountId == Account.ACCOUNT_ID_COMBINED_VIEW) {
|
if (accountId == Account.ACCOUNT_ID_COMBINED_VIEW) {
|
||||||
|
|
|
@ -24,6 +24,8 @@ import com.android.email.provider.ProviderTestUtils;
|
||||||
import com.android.emailcommon.provider.EmailContent.Account;
|
import com.android.emailcommon.provider.EmailContent.Account;
|
||||||
import com.android.emailcommon.provider.EmailContent.Attachment;
|
import com.android.emailcommon.provider.EmailContent.Attachment;
|
||||||
import com.android.emailcommon.provider.EmailContent.Mailbox;
|
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 com.android.emailcommon.utility.Utility.NewFileCreator;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
@ -372,6 +374,127 @@ public class UtilityUnitTests extends AndroidTestCase {
|
||||||
assertEquals(lastPathSegment, Utility.getContentFileName(providerContext, notExistUri));
|
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
|
// used by testToPrimitiveLongArray
|
||||||
private static Collection<Long> createLongCollection(long... values) {
|
private static Collection<Long> createLongCollection(long... values) {
|
||||||
ArrayList<Long> ret = new ArrayList<Long>();
|
ArrayList<Long> ret = new ArrayList<Long>();
|
||||||
|
|
Loading…
Reference in New Issue