This repository has been archived by the owner on Feb 29, 2020. It is now read-only.
/
unit-entry.js
110 lines (101 loc) · 3.05 KB
/
unit-entry.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
const {GlobalOverrider, FakePrefs, FakePerformance, EventEmitter} = require("test/unit/utils");
const {chaiAssertions} = require("test/schemas/pings");
const Adapter = require("enzyme-adapter-react-15.4");
const enzyme = require("enzyme");
enzyme.configure({adapter: new Adapter()});
// 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)/.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);
let overrider = new GlobalOverrider();
overrider.set({
AppConstants: {MOZILLA_OFFICIAL: true},
Components: {
classes: {},
interfaces: {},
utils: {
import() {},
importGlobalProperties() {},
reportError() {},
now: () => window.performance.now()
},
isSuccessCode: () => true
},
// eslint-disable-next-line object-shorthand
ContentSearchUIController: function() {}, // NB: This is a function/constructor
dump() {},
fetch() {},
// eslint-disable-next-line object-shorthand
Image: function() {}, // NB: This is a function/constructor
Preferences: FakePrefs,
Services: {
locale: {
getAppLocalesAsLangTags() {},
getRequestedLocale() {
return "en-US";
},
negotiateLanguages() {}
},
urlFormatter: {formatURL: str => str},
mm: {
addMessageListener: (msg, cb) => cb(),
removeMessageListener() {}
},
appShell: {hiddenDOMWindow: {performance: new FakePerformance()}},
obs: {
addObserver() {},
removeObserver() {}
},
console: {logStringMessage: () => {}},
prefs: {
addObserver() {},
prefHasUserValue() {},
removeObserver() {},
getStringPref() {},
getBoolPref() {},
getBranch() {},
getDefaultBranch() {
return {
setBoolPref() {},
setIntPref() {},
setStringPref() {},
clearUserPref() {}
};
}
},
tm: {dispatchToMainThread: cb => cb()},
eTLD: {
getBaseDomain({spec}) { return spec.match(/\/([^/]+)/)[1]; },
getPublicSuffix() {}
},
io: {newURI(url) { return {spec: url}; }},
search: {
init(cb) { cb(); },
getVisibleEngines: () => [{identifier: "google"}, {identifier: "bing"}],
defaultEngine: {identifier: "google"}
},
scriptSecurityManager: {getSystemPrincipal() {}}
},
XPCOMUtils: {
defineLazyGetter(_1, _2, f) { f(); },
defineLazyModuleGetter() {},
defineLazyServiceGetter() {},
generateQI() { return {}; }
},
EventEmitter,
ShellService: {isDefaultBrowser: () => true}
});
describe("activity-stream", () => {
after(() => overrider.restore());
files.forEach(file => req(file));
});