summaryrefslogtreecommitdiffstats
path: root/tests/src
diff options
context:
space:
mode:
authorMarc Blank <mblank@google.com>2011-08-18 16:47:31 -0700
committerMarc Blank <mblank@google.com>2011-08-19 13:17:25 -0700
commitf80dd6855e64091ccac83f1bf37cd808ef2f3e71 (patch)
tree3256251da720aada6650b9d86cec2264bd117c49 /tests/src
parent2bdfbb3612de25b86db1771a8d3adc87ca5454ed (diff)
downloadandroid_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.java109
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));
+ }
}