VulpesOS/gaia/apps/communications/test/unit/mocks_helper.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

58 lines
1.3 KiB
JavaScript
Executable file

'use strict';
var MocksHelper = function(mocks) {
this.mocks = mocks;
this.realWindowObjects = {};
};
MocksHelper.prototype = {
init: function mh_init() {
this.mocks.forEach(function(objName) {
if (! window[objName]) {
window[objName] = null;
}
});
},
setup: function mh_setup() {
this._forEachMock('mSetup');
},
suiteSetup: function mh_suiteSetup() {
this.mocks.forEach(function(objName) {
var mockName = 'Mock' + objName;
if (!window[mockName]) {
var errMsg = 'Mock ' + mockName + ' has not been loaded into the test';
throw new Error(errMsg);
}
this.realWindowObjects[objName] = window[objName];
window[objName] = window[mockName];
}, this);
this._forEachMock('mSuiteSetup');
},
suiteTeardown: function mh_suiteTeardown() {
this._forEachMock('mSuiteTeardown');
this.mocks.forEach(function(objName) {
window[objName] = this.realWindowObjects[objName];
}, this);
},
teardown: function mh_teardown() {
this._forEachMock('mTeardown');
},
_forEachMock: function mh_forEachMock(funcName) {
this.mocks.forEach(function(objName) {
var mockName = 'Mock' + objName;
var mock = window[mockName];
if (mock[funcName]) {
mock[funcName]();
}
});
}
};