blob: 2c076a6ac4156fd5f1c84cdd27965727f418fa88 [file] [log] [blame]
var assert = require("assert"),
utils = require("./utils");
var tab;
var Console;
before(function(done) {
utils.loadTab('logs.html', function(aTab) {
tab = aTab;
Console = aTab.Console;
Console.startListening(function() {
done();
})
});
});
// Console - startLogging(), stopLogging(), getCachedMessages(),
// clearCachedMessages(), event:page-error, event:console-api-call
describe('getCachedMessages()', function() {
it('should get messages from before listening', function(done) {
Console.getCachedLogs(function(err, messages) {
assert.strictEqual(err, null);
var hasLog = messages.some(function(message) {
return message.level == "log";
})
assert.ok(hasLog);
var hasDir = messages.some(function(message) {
return message.level == "dir";
})
assert.ok(hasDir);
var hasError = messages.some(function(message) {
return message.errorMessage == "ReferenceError: foo is not defined";
})
assert.ok(hasError);
done();
});
})
})
describe('clearCachedMessages()', function() {
it('should clear cached messages', function(done) {
Console.clearCachedLogs(function() {
Console.getCachedLogs(function(err, messages) {
assert.strictEqual(err, null);
// The error message should be left
assert.equal(messages.length, 1);
assert.equal(messages[0].errorMessage, "ReferenceError: foo is not defined")
done();
})
});
})
})
describe('"page-error" event', function() {
it('should receive "page-error" event with message', function(done) {
Console.once('page-error', function(event) {
assert.equal(event.errorMessage, "ReferenceError: foo is not defined");
assert.ok(event.sourceName.indexOf("logs.html") > 0);
assert.equal(event.lineNumber, 10);
assert.equal(event.columnNumber, 0);
assert.ok(event.exception);
done();
});
tab.reload();
})
})
describe('"console-api-call" event', function() {
it('should receive "console-api-call" for console.log', function(done) {
Console.on('console-api-call', function(event) {
if (event.level == "log") {
assert.deepEqual(event.arguments, ["hi"]);
Console.removeAllListeners('console-api-call');
done();
}
});
tab.reload();
})
it('should receive "console-api-call" for console.dir', function(done) {
Console.on('console-api-call', function(event) {
if (event.level == "dir") {
var obj = event.arguments[0];
assert.ok(obj.ownPropertyNames, "dir argument has JSObject methods");
Console.removeAllListeners('console-api-call');
done();
}
});
tab.reload();
})
})
after(function() {
Console.stopListening();
})