Bug 1367696 - PART II add xpcshell structure for onboarding;r=mossop draft
authorgasolin <gasolin@gmail.com>
Thu, 22 Jun 2017 16:25:53 +0800
changeset 601448 0bd1d093833cc882e481abe37fabaa6b554f7076
parent 601353 0845131f0ad065f2d9c12f6a8d8d4d50897fa666
child 601449 c7f7149644dfed261f9be35fb3d8303337e7ba6d
push id66057
push userbmo:gasolin@mozilla.com
push dateWed, 28 Jun 2017 19:20:11 +0000
reviewersmossop
bugs1367696
milestone56.0a1
Bug 1367696 - PART II add xpcshell structure for onboarding;r=mossop MozReview-Commit-ID: LA3LD8qx35d
browser/extensions/onboarding/moz.build
browser/extensions/onboarding/test/unit/.eslintrc.js
browser/extensions/onboarding/test/unit/head.js
browser/extensions/onboarding/test/unit/test-onboarding-tour-type.js
browser/extensions/onboarding/test/unit/xpcshell.ini
--- a/browser/extensions/onboarding/moz.build
+++ b/browser/extensions/onboarding/moz.build
@@ -14,9 +14,11 @@ FINAL_TARGET_PP_FILES.features['onboardi
 ]
 
 FINAL_TARGET_FILES.features['onboarding@mozilla.org'] += [
   'bootstrap.js',
 ]
 
 BROWSER_CHROME_MANIFESTS += ['test/browser/browser.ini']
 
+XPCSHELL_TESTS_MANIFESTS += ['test/unit/xpcshell.ini']
+
 JAR_MANIFESTS += ['jar.mn']
new file mode 100644
--- /dev/null
+++ b/browser/extensions/onboarding/test/unit/.eslintrc.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = {
+  "extends": [
+    "plugin:mozilla/xpcshell-test",
+  ],
+};
new file mode 100644
--- /dev/null
+++ b/browser/extensions/onboarding/test/unit/head.js
@@ -0,0 +1,38 @@
+/**
+ * Provides infrastructure for automated onboarding components tests.
+ */
+
+"use strict";
+
+/* global Cc, Ci, Cu */
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+Cu.import("resource://gre/modules/Preferences.jsm");
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+
+// Load our bootstrap extension manifest so we can access our chrome/resource URIs.
+// Cargo culted from formautofill system add-on
+const EXTENSION_ID = "onboarding@mozilla.org";
+let extensionDir = Services.dirsvc.get("GreD", Ci.nsIFile);
+extensionDir.append("browser");
+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 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);
+}
new file mode 100644
--- /dev/null
+++ b/browser/extensions/onboarding/test/unit/test-onboarding-tour-type.js
@@ -0,0 +1,13 @@
+/*
+ * Test for onboarding tour type check.
+ */
+
+"use strict";
+
+add_task(async function() {
+  do_print("Starting testcase: New user state");
+  resetOnboardingDefaultState();
+
+  do_check_eq(Preferences.get(PREF_TOURSET_VERSION), TOURSET_VERSION);
+  do_check_eq(Preferences.get(PREF_ONBOARDING_HIDDEN), false);
+});
new file mode 100644
--- /dev/null
+++ b/browser/extensions/onboarding/test/unit/xpcshell.ini
@@ -0,0 +1,5 @@
+[DEFAULT]
+firefox-appdir = browser
+head = head.js
+
+[test-onboarding-tour-type.js]