diff options
author | Marc Blank <mblank@google.com> | 2011-08-18 16:47:31 -0700 |
---|---|---|
committer | Marc Blank <mblank@google.com> | 2011-08-19 13:17:25 -0700 |
commit | f80dd6855e64091ccac83f1bf37cd808ef2f3e71 (patch) | |
tree | 3256251da720aada6650b9d86cec2264bd117c49 /tests/src | |
parent | 2bdfbb3612de25b86db1771a8d3adc87ca5454ed (diff) | |
download | android_packages_apps_Exchange-f80dd6855e64091ccac83f1bf37cd808ef2f3e71.tar.gz android_packages_apps_Exchange-f80dd6855e64091ccac83f1bf37cd808ef2f3e71.tar.bz2 android_packages_apps_Exchange-f80dd6855e64091ccac83f1bf37cd808ef2f3e71.zip |
Save sync options if folders are deleted and restore when reloaded
Bug: 5176640
Change-Id: I7c709998b65080545f468997e2df5bc00162a89f
Diffstat (limited to 'tests/src')
-rw-r--r-- | tests/src/com/android/exchange/adapter/FolderSyncParserTests.java | 109 |
1 files changed, 107 insertions, 2 deletions
diff --git a/tests/src/com/android/exchange/adapter/FolderSyncParserTests.java b/tests/src/com/android/exchange/adapter/FolderSyncParserTests.java index e0cabf57..1538f995 100644 --- a/tests/src/com/android/exchange/adapter/FolderSyncParserTests.java +++ b/tests/src/com/android/exchange/adapter/FolderSyncParserTests.java @@ -16,12 +16,15 @@ package com.android.exchange.adapter; +import android.content.ContentResolver; +import android.test.suitebuilder.annotation.MediumTest; + +import com.android.emailcommon.provider.Account; import com.android.emailcommon.provider.Mailbox; +import com.android.emailcommon.service.SyncWindow; import com.android.exchange.EasSyncService; import com.android.exchange.provider.EmailContentSetupUtils; -import android.test.suitebuilder.annotation.MediumTest; - import java.io.IOException; import java.util.HashMap; @@ -32,6 +35,10 @@ import java.util.HashMap; @MediumTest public class FolderSyncParserTests extends SyncAdapterTestCase<EmailSyncAdapter> { + // We increment this to generate unique server id's + private int mServerIdCount = 0; + private final long mCreationTime = System.currentTimeMillis(); + public FolderSyncParserTests() { super(); } @@ -99,4 +106,102 @@ public class FolderSyncParserTests extends SyncAdapterTestCase<EmailSyncAdapter> // parent's parent is a mail type assertTrue(parser.isValidMailFolder(boxUnknownType, mailboxMap)); } + + private Mailbox setupBoxSync(int interval, int lookback, String serverId) { + // Don't save the box; just create it, and give it a server id + Mailbox box = EmailContentSetupUtils.setupMailbox("box1", mAccount.mId, false, + mProviderContext, Mailbox.TYPE_MAIL); + box.mSyncInterval = interval; + box.mSyncLookback = lookback; + if (serverId != null) { + box.mServerId = serverId; + } else { + box.mServerId = "serverId-" + mCreationTime + '-' + mServerIdCount++; + } + box.save(mProviderContext); + return box; + } + + private boolean syncOptionsSame(Mailbox a, Mailbox b) { + if (a.mSyncInterval != b.mSyncInterval) return false; + if (a.mSyncLookback != b.mSyncLookback) return false; + return true; + } + + public void testSaveAndRestoreMailboxSyncOptions() throws IOException { + EasSyncService service = getTestService(); + EmailSyncAdapter adapter = new EmailSyncAdapter(service); + FolderSyncParser parser = new FolderSyncParser(getTestInputStream(), adapter); + mAccount.save(mProviderContext); + + parser.mAccount = mAccount; + parser.mAccountId = mAccount.mId; + parser.mAccountIdAsString = Long.toString(mAccount.mId); + parser.mContext = mProviderContext; + parser.mContentResolver = mProviderContext.getContentResolver(); + + // Don't save the box; just create it, and give it a server id + Mailbox box1 = setupBoxSync(Account.CHECK_INTERVAL_NEVER, SyncWindow.SYNC_WINDOW_UNKNOWN, + null); + Mailbox box2 = setupBoxSync(Account.CHECK_INTERVAL_NEVER, SyncWindow.SYNC_WINDOW_UNKNOWN, + null); + Mailbox boxa = setupBoxSync(Account.CHECK_INTERVAL_NEVER, SyncWindow.SYNC_WINDOW_1_MONTH, + null); + Mailbox boxb = setupBoxSync(Account.CHECK_INTERVAL_NEVER, SyncWindow.SYNC_WINDOW_2_WEEKS, + null); + Mailbox boxc = setupBoxSync(Account.CHECK_INTERVAL_PUSH, SyncWindow.SYNC_WINDOW_UNKNOWN, + null); + Mailbox boxd = setupBoxSync(Account.CHECK_INTERVAL_PUSH, SyncWindow.SYNC_WINDOW_UNKNOWN, + null); + Mailbox boxe = setupBoxSync(Account.CHECK_INTERVAL_PUSH, SyncWindow.SYNC_WINDOW_1_DAY, + null); + + // Save the options (for a, b, c, d, e); + parser.saveMailboxSyncOptions(); + // There should be 5 entries in the map, and they should be the correct ones + assertNotNull(parser.mSyncOptionsMap.get(boxa.mServerId)); + assertNotNull(parser.mSyncOptionsMap.get(boxb.mServerId)); + assertNotNull(parser.mSyncOptionsMap.get(boxc.mServerId)); + assertNotNull(parser.mSyncOptionsMap.get(boxd.mServerId)); + assertNotNull(parser.mSyncOptionsMap.get(boxe.mServerId)); + + // Delete all the mailboxes in the account + ContentResolver cr = mProviderContext.getContentResolver(); + cr.delete(Mailbox.CONTENT_URI, Mailbox.ACCOUNT_KEY + "=?", + new String[] {parser.mAccountIdAsString}); + + // Create new boxes, all with default values for interval & window + Mailbox box1x = setupBoxSync(Account.CHECK_INTERVAL_NEVER, SyncWindow.SYNC_WINDOW_UNKNOWN, + box1.mServerId); + Mailbox box2x = setupBoxSync(Account.CHECK_INTERVAL_NEVER, SyncWindow.SYNC_WINDOW_UNKNOWN, + box2.mServerId); + Mailbox boxax = setupBoxSync(Account.CHECK_INTERVAL_NEVER, SyncWindow.SYNC_WINDOW_UNKNOWN, + boxa.mServerId); + Mailbox boxbx = setupBoxSync(Account.CHECK_INTERVAL_NEVER, SyncWindow.SYNC_WINDOW_UNKNOWN, + boxb.mServerId); + Mailbox boxcx = setupBoxSync(Account.CHECK_INTERVAL_NEVER, SyncWindow.SYNC_WINDOW_UNKNOWN, + boxc.mServerId); + Mailbox boxdx = setupBoxSync(Account.CHECK_INTERVAL_NEVER, SyncWindow.SYNC_WINDOW_UNKNOWN, + boxd.mServerId); + Mailbox boxex = setupBoxSync(Account.CHECK_INTERVAL_NEVER, SyncWindow.SYNC_WINDOW_UNKNOWN, + boxe.mServerId); + + // Restore the sync options + parser.restoreMailboxSyncOptions(); + box1x = Mailbox.restoreMailboxWithId(mProviderContext, box1x.mId); + box2x = Mailbox.restoreMailboxWithId(mProviderContext, box2x.mId); + boxax = Mailbox.restoreMailboxWithId(mProviderContext, boxax.mId); + boxbx = Mailbox.restoreMailboxWithId(mProviderContext, boxbx.mId); + boxcx = Mailbox.restoreMailboxWithId(mProviderContext, boxcx.mId); + boxdx = Mailbox.restoreMailboxWithId(mProviderContext, boxdx.mId); + boxex = Mailbox.restoreMailboxWithId(mProviderContext, boxex.mId); + + assertTrue(syncOptionsSame(box1, box1x)); + assertTrue(syncOptionsSame(box2, box2x)); + assertTrue(syncOptionsSame(boxa, boxax)); + assertTrue(syncOptionsSame(boxb, boxbx)); + assertTrue(syncOptionsSame(boxc, boxcx)); + assertTrue(syncOptionsSame(boxd, boxdx)); + assertTrue(syncOptionsSame(boxe, boxex)); + } } |