chai-fireproof
Version:
Firebase and Fireproof support for the Chai assertion library.
68 lines (46 loc) • 1.38 kB
JavaScript
// we have to hijack console.log to capture Firebase messages
chai.use(function() {
/**
* Retrieve log messages generated by Firebase.
* @method getFirebaseMessage
* @memberof chai
* @param {String} name The kind of message to get: log, warning, or error.
* @returns {String} message
*/
chai.getFirebaseMessage = function(name) {
return chai._firebaseMsg[name];
};
chai.flushFirebaseMessages = function() {
chai._firebaseMsg = {
log: '',
warn: '',
error: ''
};
};
chai.flushFirebaseMessages();
function hijackedLog(logFn, name) {
return function() {
var message = '';
for (var i = 0; i < arguments.length; i++) {
if (arguments[i] !== null && arguments[i] !== undefined) {
message += arguments[i].toString();
}
}
if (message.match(/^FIREBASE.*?: /)) {
chai._firebaseMsg[name] += message.replace(/^FIREBASE.*?: /, '') + '\n';
} else {
logFn.apply(console, arguments);
}
};
}
if (console && console.log) {
chai._firebaseLog = '';
chai._firebaseWarn = '';
var oldLog = console.log,
oldWarn = console.warn,
oldError = console.error;
console.log = hijackedLog(oldLog, 'log');
console.warn = hijackedLog(oldWarn, 'warn');
console.error = hijackedLog(oldError, 'error');
}
});