Merge "Sort of port over tests for GeneralPrefsFragment" into ub-mail-master
diff --git a/src/com/android/mail/preferences/PreferenceMigratorHolder.java b/src/com/android/mail/preferences/PreferenceMigratorHolder.java
index 36a84e2..7b3a5ea 100644
--- a/src/com/android/mail/preferences/PreferenceMigratorHolder.java
+++ b/src/com/android/mail/preferences/PreferenceMigratorHolder.java
@@ -31,6 +31,10 @@
     }
 
     public static BasePreferenceMigrator createPreferenceMigrator() {
-        return sCreator.createPreferenceMigrator();
+        if (sCreator != null) {
+            return sCreator.createPreferenceMigrator();
+        } else {
+            return null;
+        }
     }
 }
diff --git a/src/com/android/mail/preferences/VersionedPrefs.java b/src/com/android/mail/preferences/VersionedPrefs.java
index 6c252b2..f115f88 100644
--- a/src/com/android/mail/preferences/VersionedPrefs.java
+++ b/src/com/android/mail/preferences/VersionedPrefs.java
@@ -70,8 +70,16 @@
         setCurrentVersion(CURRENT_VERSION_NUMBER);
 
         if (!hasMigrationCompleted()) {
-            final boolean migrationComplete = PreferenceMigratorHolder.createPreferenceMigrator()
-                    .performMigration(context, oldVersion, CURRENT_VERSION_NUMBER);
+            final BasePreferenceMigrator preferenceMigrator =
+                    PreferenceMigratorHolder.createPreferenceMigrator();
+            final boolean migrationComplete;
+            if (preferenceMigrator != null) {
+                migrationComplete = preferenceMigrator
+                        .performMigration(context, oldVersion, CURRENT_VERSION_NUMBER);
+            } else {
+                LogUtils.w(LogUtils.TAG, "No preference migrator found, not migrating preferences");
+                migrationComplete = false;
+            }
 
             if (migrationComplete) {
                 setMigrationComplete();
diff --git a/tests/Android.mk b/tests/Android.mk
index 06efb23..be4845b 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -26,7 +26,7 @@
 
 # LOCAL_JAVA_LIBRARIES := android.test.runner
 
-LOCAL_SDK_VERSION := 14
+LOCAL_SDK_VERSION := current
 LOCAL_PACKAGE_NAME := UnifiedEmailTests
 LOCAL_INSTRUMENTATION_FOR := UnifiedEmail
 
diff --git a/tests/src/com/android/mail/ui/settings/GeneralPrefsFragmentTest.java b/tests/src/com/android/mail/ui/settings/GeneralPrefsFragmentTest.java
new file mode 100644
index 0000000..c1a5311
--- /dev/null
+++ b/tests/src/com/android/mail/ui/settings/GeneralPrefsFragmentTest.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ *      Copyright (C) 2014 Google Inc.
+ *      Licensed to The Android Open Source Project.
+ *
+ *      Licensed under the Apache License, Version 2.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *           http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ *******************************************************************************/
+
+package com.android.mail.ui.settings;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.preference.PreferenceActivity;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.UiThreadTest;
+import android.test.suitebuilder.annotation.MediumTest;
+import android.test.suitebuilder.annotation.Suppress;
+
+// TODO: Insert the unified prefs class here once it's written
+@Suppress
+public class GeneralPrefsFragmentTest
+        extends ActivityInstrumentationTestCase2<Activity> {
+
+    public GeneralPrefsFragmentTest() {
+        super(Activity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        final Intent i = new Intent();
+        i.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT, "com.android.mail.ui.settings.");
+        setActivityIntent(i);
+        getActivity();
+    }
+
+    @UiThreadTest
+    @MediumTest
+    public void testChangeAutoAdvance() throws Throwable {
+        // A weak proxy test that a click on auto-advance will actually persist the proper value.
+        // A better test would simulate a dialog, dialog click, and check that the value is
+        // both displayed and persisted.
+        /*
+        final Activity activity = getActivity();
+        final MailPrefs mailPrefs = MailPrefs.get(activity);
+
+        activity.getFragmentManager().executePendingTransactions();
+
+        final GeneralPrefsFragment fragment = activity.getGeneralPrefsFragment();
+        final ListPreference autoAdvancePref = (ListPreference) fragment
+                .findPreference(GeneralPrefsFragment.AUTO_ADVANCE_WIDGET);
+
+        fragment.onPreferenceChange(autoAdvancePref, UIProvider.AUTO_ADVANCE_MODE_OLDER);
+
+        assertEquals(AutoAdvance.OLDER, mailPrefs.getAutoAdvanceMode());
+
+        fragment.onPreferenceChange(autoAdvancePref, UIProvider.AUTO_ADVANCE_MODE_NEWER);
+
+        assertEquals(AutoAdvance.NEWER, mailPrefs.getAutoAdvanceMode());
+        */
+    }
+
+    @UiThreadTest
+    @MediumTest
+    public void testChangeSnapHeader() throws Throwable {
+        /*
+        final Activity activity = getActivity();
+        final MailPrefs mailPrefs = MailPrefs.get(activity);
+
+        activity.getFragmentManager().executePendingTransactions();
+
+        final GeneralPrefsFragment fragment = activity.getGeneralPrefsFragment();
+        final ListPreference snapPref = (ListPreference) fragment
+                .findPreference(GeneralPrefsFragment.SNAP_HEADER_MODE_WIDGET);
+
+        final int neverValue = GeneralPrefsFragment.prefValueToWidgetIndex(
+                GeneralPrefsFragment.SNAP_HEADER_VALUES, SnapHeaderValue.NEVER, -1);
+        snapPref.setValueIndex(neverValue);
+
+        assertEquals(SnapHeaderValue.NEVER, mailPrefs.getSnapHeaderMode());
+
+        final int alwaysValue = GeneralPrefsFragment.prefValueToWidgetIndex(
+                GeneralPrefsFragment.SNAP_HEADER_VALUES, SnapHeaderValue.ALWAYS, -1);
+        snapPref.setValueIndex(alwaysValue);
+
+        assertEquals(SnapHeaderValue.ALWAYS, mailPrefs.getSnapHeaderMode());
+        */
+    }
+
+}