Files
tubestation/browser/extensions/activity-stream/test/unit/unit-entry.js
2018-06-08 11:51:53 -07:00

189 lines
5.0 KiB
JavaScript

import {EventEmitter, FakePerformance, FakePrefs, GlobalOverrider} from "test/unit/utils";
import Adapter from "enzyme-adapter-react-16";
import {chaiAssertions} from "test/schemas/pings";
import chaiJsonSchema from "chai-json-schema";
import enzyme from "enzyme";
enzyme.configure({adapter: new Adapter()});
class DownloadElementShell {
downloadsCmd_open() {}
downloadsCmd_show() {}
downloadsCmd_openReferrer() {}
downloadsCmd_delete() {}
get sizeStrings() { return {stateLabel: "1.5 MB"}; }
displayName() {}
}
// Cause React warnings to make tests that trigger them fail
const origConsoleError = console.error; // eslint-disable-line no-console
console.error = function(msg, ...args) { // eslint-disable-line no-console
// eslint-disable-next-line no-console
origConsoleError.apply(console, [msg, ...args]);
if (/(Invalid prop|Failed prop type|Check the render method|React Intl)/.test(msg)) {
throw new Error(msg);
}
};
const req = require.context(".", true, /\.test\.jsx?$/);
const files = req.keys();
// This exposes sinon assertions to chai.assert
sinon.assert.expose(assert, {prefix: ""});
chai.use(chaiAssertions);
chai.use(chaiJsonSchema);
const overrider = new GlobalOverrider();
const TEST_GLOBAL = {
AddonManager: {
getActiveAddons() {
return Promise.resolve({addons: [], fullData: false});
}
},
AppConstants: {MOZILLA_OFFICIAL: true},
ChromeUtils: {
defineModuleGetter() {},
generateQI() { return {}; },
import() {}
},
Components: {isSuccessCode: () => true},
// eslint-disable-next-line object-shorthand
ContentSearchUIController: function() {}, // NB: This is a function/constructor
Cc: {
"@mozilla.org/browser/nav-bookmarks-service;1": {
addObserver() {},
getService() {
return this;
},
removeObserver() {},
SOURCES: {},
TYPE_BOOKMARK: {}
},
"@mozilla.org/browser/nav-history-service;1": {
addObserver() {},
executeQuery() {},
getNewQuery() {},
getNewQueryOptions() {},
getService() {
return this;
},
insert() {},
markPageAsTyped() {},
removeObserver() {}
}
},
Ci: {
nsIHttpChannel: {REFERRER_POLICY_UNSAFE_URL: 5},
nsITimer: {TYPE_ONE_SHOT: 1}
},
Cu: {
importGlobalProperties() {},
now: () => window.performance.now(),
reportError() {}
},
dump() {},
fetch() {},
// eslint-disable-next-line object-shorthand
Image: function() {}, // NB: This is a function/constructor
LightweightThemeManager: {currentThemeForDisplay: {}},
PlacesUtils: {
get bookmarks() {
return TEST_GLOBAL.Cc["@mozilla.org/browser/nav-bookmarks-service;1"];
},
get history() {
return TEST_GLOBAL.Cc["@mozilla.org/browser/nav-history-service;1"];
}
},
PluralForm: {get() {}},
Preferences: FakePrefs,
DownloadsViewUI: {DownloadElementShell},
Services: {
locale: {
getAppLocaleAsLangTag() { return "en-US"; },
getAppLocalesAsLangTags() {},
negotiateLanguages() {}
},
urlFormatter: {formatURL: str => str},
mm: {
addMessageListener: (msg, cb) => cb(),
removeMessageListener() {}
},
appShell: {hiddenDOMWindow: {performance: new FakePerformance()}},
obs: {
addObserver() {},
removeObserver() {}
},
telemetry: {
setEventRecordingEnabled: () => {},
recordEvent: eventDetails => {}
},
console: {logStringMessage: () => {}},
prefs: {
addObserver() {},
prefHasUserValue() {},
removeObserver() {},
getStringPref() {},
getIntPref() {},
getBoolPref() {},
setBoolPref() {},
getBranch() {},
getDefaultBranch() {
return {
setBoolPref() {},
setIntPref() {},
setStringPref() {},
clearUserPref() {}
};
}
},
tm: {
dispatchToMainThread: cb => cb(),
idleDispatchToMainThread: cb => cb()
},
eTLD: {
getBaseDomain({spec}) { return spec.match(/\/([^/]+)/)[1]; },
getPublicSuffix() {}
},
io: {
newURI: spec => ({
mutate: () => ({
setRef: ref => ({
finalize: () => ({
ref,
spec
})
})
}),
spec
})
},
search: {
init(cb) { cb(); },
getVisibleEngines: () => [{identifier: "google"}, {identifier: "bing"}],
defaultEngine: {identifier: "google"}
},
scriptSecurityManager: {
createNullPrincipal() {},
getSystemPrincipal() {}
},
wm: {getMostRecentWindow: () => window}
},
XPCOMUtils: {
defineLazyGetter(_1, _2, f) { f(); },
defineLazyGlobalGetters() {},
defineLazyModuleGetter() {},
defineLazyServiceGetter() {},
generateQI() { return {}; }
},
EventEmitter,
ShellService: {isDefaultBrowser: () => true},
FilterExpressions: {eval() { return Promise.resolve(true); }}
};
overrider.set(TEST_GLOBAL);
describe("activity-stream", () => {
after(() => overrider.restore());
files.forEach(file => req(file));
});