fune/browser/modules/test/unit/test_LaterRun.js
Mark Banner 3d2e706269 Bug 1343521 - Move the mochitests in browser/modules/test/ to their own subdirectory. r=jaws
MozReview-Commit-ID: AV3QzLofo2w

--HG--
rename : browser/modules/test/.eslintrc.js => browser/modules/test/browser/.eslintrc.js
rename : browser/modules/test/browser.ini => browser/modules/test/browser/browser.ini
rename : browser/modules/test/browser_BrowserUITelemetry_buckets.js => browser/modules/test/browser/browser_BrowserUITelemetry_buckets.js
rename : browser/modules/test/browser_BrowserUITelemetry_defaults.js => browser/modules/test/browser/browser_BrowserUITelemetry_defaults.js
rename : browser/modules/test/browser_BrowserUITelemetry_sidebar.js => browser/modules/test/browser/browser_BrowserUITelemetry_sidebar.js
rename : browser/modules/test/browser_BrowserUITelemetry_syncedtabs.js => browser/modules/test/browser/browser_BrowserUITelemetry_syncedtabs.js
rename : browser/modules/test/browser_ContentSearch.js => browser/modules/test/browser/browser_ContentSearch.js
rename : browser/modules/test/browser_NetworkPrioritizer.js => browser/modules/test/browser/browser_NetworkPrioritizer.js
rename : browser/modules/test/browser_PermissionUI.js => browser/modules/test/browser/browser_PermissionUI.js
rename : browser/modules/test/browser_PermissionUI_prompts.js => browser/modules/test/browser/browser_PermissionUI_prompts.js
rename : browser/modules/test/browser_ProcessHangNotifications.js => browser/modules/test/browser/browser_ProcessHangNotifications.js
rename : browser/modules/test/browser_SelfSupportBackend.js => browser/modules/test/browser/browser_SelfSupportBackend.js
rename : browser/modules/test/browser_SitePermissions.js => browser/modules/test/browser/browser_SitePermissions.js
rename : browser/modules/test/browser_SitePermissions_combinations.js => browser/modules/test/browser/browser_SitePermissions_combinations.js
rename : browser/modules/test/browser_SitePermissions_expiry.js => browser/modules/test/browser/browser_SitePermissions_expiry.js
rename : browser/modules/test/browser_SitePermissions_tab_urls.js => browser/modules/test/browser/browser_SitePermissions_tab_urls.js
rename : browser/modules/test/browser_UnsubmittedCrashHandler.js => browser/modules/test/browser/browser_UnsubmittedCrashHandler.js
rename : browser/modules/test/browser_UsageTelemetry.js => browser/modules/test/browser/browser_UsageTelemetry.js
rename : browser/modules/test/browser_UsageTelemetry_content.js => browser/modules/test/browser/browser_UsageTelemetry_content.js
rename : browser/modules/test/browser_UsageTelemetry_content_aboutHome.js => browser/modules/test/browser/browser_UsageTelemetry_content_aboutHome.js
rename : browser/modules/test/browser_UsageTelemetry_private_and_restore.js => browser/modules/test/browser/browser_UsageTelemetry_private_and_restore.js
rename : browser/modules/test/browser_UsageTelemetry_searchbar.js => browser/modules/test/browser/browser_UsageTelemetry_searchbar.js
rename : browser/modules/test/browser_UsageTelemetry_urlbar.js => browser/modules/test/browser/browser_UsageTelemetry_urlbar.js
rename : browser/modules/test/browser_bug1319078.js => browser/modules/test/browser/browser_bug1319078.js
rename : browser/modules/test/browser_taskbar_preview.js => browser/modules/test/browser/browser_taskbar_preview.js
rename : browser/modules/test/browser_urlBar_zoom.js => browser/modules/test/browser/browser_urlBar_zoom.js
rename : browser/modules/test/contentSearch.js => browser/modules/test/browser/contentSearch.js
rename : browser/modules/test/contentSearchBadImage.xml => browser/modules/test/browser/contentSearchBadImage.xml
rename : browser/modules/test/contentSearchSuggestions.sjs => browser/modules/test/browser/contentSearchSuggestions.sjs
rename : browser/modules/test/contentSearchSuggestions.xml => browser/modules/test/browser/contentSearchSuggestions.xml
rename : browser/modules/test/head.js => browser/modules/test/browser/head.js
rename : browser/modules/test/usageTelemetrySearchSuggestions.sjs => browser/modules/test/browser/usageTelemetrySearchSuggestions.sjs
rename : browser/modules/test/usageTelemetrySearchSuggestions.xml => browser/modules/test/browser/usageTelemetrySearchSuggestions.xml
rename : browser/modules/test/xpcshell/.eslintrc.js => browser/modules/test/unit/.eslintrc.js
rename : browser/modules/test/xpcshell/test_AttributionCode.js => browser/modules/test/unit/test_AttributionCode.js
rename : browser/modules/test/xpcshell/test_DirectoryLinksProvider.js => browser/modules/test/unit/test_DirectoryLinksProvider.js
rename : browser/modules/test/xpcshell/test_E10SUtils_nested_URIs.js => browser/modules/test/unit/test_E10SUtils_nested_URIs.js
rename : browser/modules/test/xpcshell/test_LaterRun.js => browser/modules/test/unit/test_LaterRun.js
rename : browser/modules/test/xpcshell/test_SitePermissions.js => browser/modules/test/unit/test_SitePermissions.js
rename : browser/modules/test/xpcshell/xpcshell.ini => browser/modules/test/unit/xpcshell.ini
extra : rebase_source : e71a6ce0da1e6f286efce2b36cecc6081e004bf1
2017-03-01 17:10:16 +00:00

138 lines
7.1 KiB
JavaScript

"use strict";
const kEnabledPref = "browser.laterrun.enabled";
const kPagePrefRoot = "browser.laterrun.pages.";
const kSessionCountPref = "browser.laterrun.bookkeeping.sessionCount";
const kProfileCreationTime = "browser.laterrun.bookkeeping.profileCreationTime";
Components.utils.import("resource://gre/modules/Services.jsm");
Components.utils.import("resource:///modules/LaterRun.jsm");
Services.prefs.setBoolPref(kEnabledPref, true);
Components.utils.import("resource://testing-common/AppInfo.jsm");
updateAppInfo();
add_task(function* test_page_applies() {
Services.prefs.setCharPref(kPagePrefRoot + "test_LaterRun_unittest.url", "https://www.mozilla.org/%VENDOR%/%NAME%/%ID%/%VERSION%/");
Services.prefs.setIntPref(kPagePrefRoot + "test_LaterRun_unittest.minimumHoursSinceInstall", 10);
Services.prefs.setIntPref(kPagePrefRoot + "test_LaterRun_unittest.minimumSessionCount", 3);
let pages = LaterRun.readPages();
// We have to filter the pages because it's possible Firefox ships with other URLs
// that get included in this test.
pages = pages.filter(page => page.pref == kPagePrefRoot + "test_LaterRun_unittest.");
Assert.equal(pages.length, 1, "Got 1 page");
let page = pages[0];
Assert.equal(page.pref, kPagePrefRoot + "test_LaterRun_unittest.", "Should know its own pref");
Assert.equal(page.minimumHoursSinceInstall, 10, "Needs to have 10 hours since install");
Assert.equal(page.minimumSessionCount, 3, "Needs to have 3 sessions");
Assert.equal(page.requireBoth, false, "Either requirement is enough");
let expectedURL = "https://www.mozilla.org/" +
Services.appinfo.vendor + "/" +
Services.appinfo.name + "/" +
Services.appinfo.ID + "/" +
Services.appinfo.version + "/";
Assert.equal(page.url, expectedURL, "URL is stored correctly");
Assert.ok(page.applies({hoursSinceInstall: 1, sessionCount: 3}),
"Applies when session count has been met.");
Assert.ok(page.applies({hoursSinceInstall: 1, sessionCount: 4}),
"Applies when session count has been exceeded.");
Assert.ok(page.applies({hoursSinceInstall: 10, sessionCount: 2}),
"Applies when total session time has been met.");
Assert.ok(page.applies({hoursSinceInstall: 20, sessionCount: 2}),
"Applies when total session time has been exceeded.");
Assert.ok(page.applies({hoursSinceInstall: 10, sessionCount: 3}),
"Applies when both time and session count have been met.");
Assert.ok(!page.applies({hoursSinceInstall: 1, sessionCount: 1}),
"Does not apply when neither time and session count have been met.");
page.requireBoth = true;
Assert.ok(!page.applies({hoursSinceInstall: 1, sessionCount: 3}),
"Does not apply when only session count has been met.");
Assert.ok(!page.applies({hoursSinceInstall: 1, sessionCount: 4}),
"Does not apply when only session count has been exceeded.");
Assert.ok(!page.applies({hoursSinceInstall: 10, sessionCount: 2}),
"Does not apply when only total session time has been met.");
Assert.ok(!page.applies({hoursSinceInstall: 20, sessionCount: 2}),
"Does not apply when only total session time has been exceeded.");
Assert.ok(page.applies({hoursSinceInstall: 10, sessionCount: 3}),
"Applies when both time and session count have been met.");
Assert.ok(!page.applies({hoursSinceInstall: 1, sessionCount: 1}),
"Does not apply when neither time and session count have been met.");
// Check that pages that have run never apply:
Services.prefs.setBoolPref(kPagePrefRoot + "test_LaterRun_unittest.hasRun", true);
page.requireBoth = false;
Assert.ok(!page.applies({hoursSinceInstall: 1, sessionCount: 3}),
"Does not apply when page has already run (sessionCount equal).");
Assert.ok(!page.applies({hoursSinceInstall: 1, sessionCount: 4}),
"Does not apply when page has already run (sessionCount exceeding).");
Assert.ok(!page.applies({hoursSinceInstall: 10, sessionCount: 2}),
"Does not apply when page has already run (hoursSinceInstall equal).");
Assert.ok(!page.applies({hoursSinceInstall: 20, sessionCount: 2}),
"Does not apply when page has already run (hoursSinceInstall exceeding).");
Assert.ok(!page.applies({hoursSinceInstall: 10, sessionCount: 3}),
"Does not apply when page has already run (both criteria equal).");
Assert.ok(!page.applies({hoursSinceInstall: 1, sessionCount: 1}),
"Does not apply when page has already run (both criteria insufficient anyway).");
clearAllPagePrefs();
});
add_task(function* test_get_URL() {
Services.prefs.setIntPref(kProfileCreationTime, Math.floor((Date.now() - 11 * 60 * 60 * 1000) / 1000));
Services.prefs.setCharPref(kPagePrefRoot + "test_LaterRun_unittest.url", "https://www.mozilla.org/");
Services.prefs.setIntPref(kPagePrefRoot + "test_LaterRun_unittest.minimumHoursSinceInstall", 10);
Services.prefs.setIntPref(kPagePrefRoot + "test_LaterRun_unittest.minimumSessionCount", 3);
let pages = LaterRun.readPages();
// We have to filter the pages because it's possible Firefox ships with other URLs
// that get included in this test.
pages = pages.filter(page => page.pref == kPagePrefRoot + "test_LaterRun_unittest.");
Assert.equal(pages.length, 1, "Should only be 1 matching page");
let page = pages[0];
let url;
do {
url = LaterRun.getURL();
// We have to loop because it's possible Firefox ships with other URLs that get triggered by
// this test.
} while (url && url != "https://www.mozilla.org/");
Assert.equal(url, "https://www.mozilla.org/", "URL should be as expected when prefs are set.");
Assert.ok(Services.prefs.prefHasUserValue(kPagePrefRoot + "test_LaterRun_unittest.hasRun"), "Should have set pref");
Assert.ok(Services.prefs.getBoolPref(kPagePrefRoot + "test_LaterRun_unittest.hasRun"), "Should have set pref to true");
Assert.ok(page.hasRun, "Other page objects should know it has run, too.");
clearAllPagePrefs();
});
add_task(function* test_insecure_urls() {
Services.prefs.setCharPref(kPagePrefRoot + "test_LaterRun_unittest.url", "http://www.mozilla.org/");
Services.prefs.setIntPref(kPagePrefRoot + "test_LaterRun_unittest.minimumHoursSinceInstall", 10);
Services.prefs.setIntPref(kPagePrefRoot + "test_LaterRun_unittest.minimumSessionCount", 3);
let pages = LaterRun.readPages();
// We have to filter the pages because it's possible Firefox ships with other URLs
// that get triggered in this test.
pages = pages.filter(page => page.pref == kPagePrefRoot + "test_LaterRun_unittest.");
Assert.equal(pages.length, 0, "URL with non-https scheme should get ignored");
clearAllPagePrefs();
});
add_task(function* test_dynamic_pref_getter_setter() {
delete LaterRun._sessionCount;
Services.prefs.setIntPref(kSessionCountPref, 0);
Assert.equal(LaterRun.sessionCount, 0, "Should start at 0");
LaterRun.sessionCount++;
Assert.equal(LaterRun.sessionCount, 1, "Should increment.");
Assert.equal(Services.prefs.getIntPref(kSessionCountPref), 1, "Should update pref");
});
function clearAllPagePrefs() {
let allChangedPrefs = Services.prefs.getChildList(kPagePrefRoot);
for (let pref of allChangedPrefs) {
Services.prefs.clearUserPref(pref);
}
}