Bug 1367696 - PART III add OnboardingTourType tests;r=mossop draft
authorgasolin <gasolin@gmail.com>
Thu, 22 Jun 2017 17:50:29 +0800
changeset 601449 c7f7149644dfed261f9be35fb3d8303337e7ba6d
parent 601448 0bd1d093833cc882e481abe37fabaa6b554f7076
child 635254 20d2019864625df43977b4397dfe9caf14354786
push id66057
push userbmo:gasolin@mozilla.com
push dateWed, 28 Jun 2017 19:20:11 +0000
reviewersmossop
bugs1367696
milestone56.0a1
Bug 1367696 - PART III add OnboardingTourType tests;r=mossop MozReview-Commit-ID: 8tyiqkQJ5CX
browser/extensions/onboarding/test/unit/head.js
browser/extensions/onboarding/test/unit/test-onboarding-tour-type.js
--- a/browser/extensions/onboarding/test/unit/head.js
+++ b/browser/extensions/onboarding/test/unit/head.js
@@ -19,20 +19,29 @@ extensionDir.append("features");
 extensionDir.append(EXTENSION_ID);
 // If the unpacked extension doesn't exist, use the packed version.
 if (!extensionDir.exists()) {
   extensionDir.leafName += ".xpi";
 }
 Components.manager.addBootstrappedManifestLocation(extensionDir);
 
 const TOURSET_VERSION = 1;
+const NEXT_TOURSET_VERSION = 2;
 const PREF_TOUR_TYPE = "browser.onboarding.tour-type";
 const PREF_TOURSET_VERSION = "browser.onboarding.tourset-version";
 const PREF_SEEN_TOURSET_VERSION = "browser.onboarding.seen-tourset-version";
 const PREF_ONBOARDING_HIDDEN = "browser.onboarding.hidden";
 
 function resetOnboardingDefaultState() {
   // All the prefs should be reset to what prefs should looks like in a new user profile
   Services.prefs.setBoolPref(PREF_ONBOARDING_HIDDEN, false);
   Services.prefs.setIntPref(PREF_TOURSET_VERSION, TOURSET_VERSION);
   Services.prefs.clearUserPref(PREF_SEEN_TOURSET_VERSION);
   Services.prefs.clearUserPref(PREF_TOUR_TYPE);
 }
+
+function resetOldProfileDefaultState() {
+  // All the prefs should be reset to what prefs should looks like in a older new user profile
+  Services.prefs.setIntPref(PREF_TOURSET_VERSION, TOURSET_VERSION);
+  Services.prefs.setIntPref(PREF_SEEN_TOURSET_VERSION, 0);
+  Services.prefs.clearUserPref(PREF_ONBOARDING_HIDDEN);
+  Services.prefs.clearUserPref(PREF_TOUR_TYPE);
+}
--- a/browser/extensions/onboarding/test/unit/test-onboarding-tour-type.js
+++ b/browser/extensions/onboarding/test/unit/test-onboarding-tour-type.js
@@ -1,13 +1,99 @@
 /*
  * Test for onboarding tour type check.
  */
 
 "use strict";
 
+Cu.import("resource://onboarding/modules/OnboardingTourType.jsm");
+
 add_task(async function() {
-  do_print("Starting testcase: New user state");
+  do_print("Starting testcase: When New user open the browser first time");
+  resetOnboardingDefaultState();
+  OnboardingTourType.check();
+
+  do_check_eq(Preferences.get(PREF_TOUR_TYPE), "new", "should show the new user tour");
+  do_check_eq(Preferences.get(PREF_TOURSET_VERSION), TOURSET_VERSION,
+    "tourset version should not change");
+  do_check_eq(Preferences.get(PREF_SEEN_TOURSET_VERSION), TOURSET_VERSION,
+    "seen tourset version should be set as the tourset version");
+  do_check_eq(Preferences.get(PREF_ONBOARDING_HIDDEN), false, "should show the user tour");
+});
+
+add_task(async function() {
+  do_print("Starting testcase: When New user restart the browser");
   resetOnboardingDefaultState();
+  Preferences.set(PREF_TOUR_TYPE, "new");
+  Preferences.set(PREF_SEEN_TOURSET_VERSION, TOURSET_VERSION);
+  Preferences.set(PREF_ONBOARDING_HIDDEN, false);
+  OnboardingTourType.check();
+
+  do_check_eq(Preferences.get(PREF_TOUR_TYPE), "new", "should show the new user tour");
+  do_check_eq(Preferences.get(PREF_TOURSET_VERSION), TOURSET_VERSION),
+    "tourset version should not change";
+  do_check_eq(Preferences.get(PREF_SEEN_TOURSET_VERSION), TOURSET_VERSION,
+    "seen tourset version should be set as the tourset version");
+  do_check_eq(Preferences.get(PREF_ONBOARDING_HIDDEN), false, "should show the user tour");
+});
+
+add_task(async function() {
+  do_print("Starting testcase: When New User choosed to hide the overlay and restart the browser");
+  resetOnboardingDefaultState();
+  Preferences.set(PREF_TOUR_TYPE, "new");
+  Preferences.set(PREF_SEEN_TOURSET_VERSION, TOURSET_VERSION);
+  Preferences.set(PREF_ONBOARDING_HIDDEN, true);
+  OnboardingTourType.check();
+
+  do_check_eq(Preferences.get(PREF_TOUR_TYPE), "new", "should show the new user tour");
+  do_check_eq(Preferences.get(PREF_TOURSET_VERSION), TOURSET_VERSION),
+    "tourset version should not change";
+  do_check_eq(Preferences.get(PREF_SEEN_TOURSET_VERSION), TOURSET_VERSION,
+    "seen tourset version should be set as the tourset version");
+  do_check_eq(Preferences.get(PREF_ONBOARDING_HIDDEN), true, "should hide the user tour");
+});
 
-  do_check_eq(Preferences.get(PREF_TOURSET_VERSION), TOURSET_VERSION);
-  do_check_eq(Preferences.get(PREF_ONBOARDING_HIDDEN), false);
+add_task(async function() {
+  do_print("Starting testcase: When New User updated to the next major version and restart the browser");
+  resetOnboardingDefaultState();
+  Preferences.set(PREF_TOURSET_VERSION, NEXT_TOURSET_VERSION);
+  Preferences.set(PREF_TOUR_TYPE, "new");
+  Preferences.set(PREF_SEEN_TOURSET_VERSION, TOURSET_VERSION);
+  Preferences.set(PREF_ONBOARDING_HIDDEN, false);
+  OnboardingTourType.check();
+
+  do_check_eq(Preferences.get(PREF_TOUR_TYPE), "update", "should show the update user tour");
+  do_check_eq(Preferences.get(PREF_TOURSET_VERSION), NEXT_TOURSET_VERSION),
+    "tourset version should not change";
+  do_check_eq(Preferences.get(PREF_SEEN_TOURSET_VERSION), NEXT_TOURSET_VERSION,
+    "seen tourset version should be set as the tourset version");
+  do_check_eq(Preferences.get(PREF_ONBOARDING_HIDDEN), false, "should show the user tour");
 });
+
+add_task(async function() {
+  do_print("Starting testcase: When New User prefer hide the tour, then updated to the next major version and restart the browser");
+  resetOnboardingDefaultState();
+  Preferences.set(PREF_TOURSET_VERSION, NEXT_TOURSET_VERSION);
+  Preferences.set(PREF_TOUR_TYPE, "new");
+  Preferences.set(PREF_SEEN_TOURSET_VERSION, TOURSET_VERSION);
+  Preferences.set(PREF_ONBOARDING_HIDDEN, true);
+  OnboardingTourType.check();
+
+  do_check_eq(Preferences.get(PREF_TOUR_TYPE), "update", "should show the update user tour");
+  do_check_eq(Preferences.get(PREF_TOURSET_VERSION), NEXT_TOURSET_VERSION),
+    "tourset version should not change";
+  do_check_eq(Preferences.get(PREF_SEEN_TOURSET_VERSION), NEXT_TOURSET_VERSION,
+    "seen tourset version should be set as the tourset version");
+  do_check_eq(Preferences.get(PREF_ONBOARDING_HIDDEN), false, "should show the user tour");
+});
+
+add_task(async function() {
+  do_print("Starting testcase: When User update from browser version < 56");
+  resetOldProfileDefaultState();
+  OnboardingTourType.check();
+
+  do_check_eq(Preferences.get(PREF_TOUR_TYPE), "update", "should show the update user tour");
+  do_check_eq(Preferences.get(PREF_TOURSET_VERSION), TOURSET_VERSION),
+    "tourset version should not change";
+  do_check_eq(Preferences.get(PREF_SEEN_TOURSET_VERSION), TOURSET_VERSION,
+    "seen tourset version should be set as the tourset version");
+  do_check_eq(Preferences.get(PREF_ONBOARDING_HIDDEN), false, "should show the user tour");
+});