You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
"use strict";
function consoleLogIsCalledBy(log, methodName) { it(methodName + " calls console.log", function() { log.setLevel(log.levels.TRACE); log[methodName]("Log message for call to " + methodName); expect(console.log.calls.length).toEqual(1); }); }
function mockConsole() { return {"log" : jasmine.createSpy("console.log")}; }
define(['../lib/loglevel'], function(log) { var originalConsole = window.console;
describe("Fallback functionality:", function() { describe("with no console present", function() { beforeEach(function() { window.console = undefined; });
afterEach(function() { window.console = originalConsole; });
it("silent method calls are allowed", function() { var result = log.setLevel(log.levels.SILENT); log.trace("hello");
expect(result).toBeUndefined(); });
it("setting an active level gently returns an error string", function() { var result = log.setLevel(log.levels.TRACE); expect(result).toEqual("No console available for logging"); });
it("active method calls are allowed, once the active setLevel fails", function() { log.setLevel(log.levels.TRACE); log.trace("hello"); });
describe("if a console later appears", function () { it("logging is re-enabled and works correctly when next used", function () { log.setLevel(log.levels.WARN);
window.console = mockConsole(); log.error("error");
expect(window.console.log).toHaveBeenCalled(); });
it("logging is re-enabled but does nothing when used at a blocked level", function () { log.setLevel(log.levels.WARN);
window.console = mockConsole(); log.trace("trace");
expect(window.console.log).not.toHaveBeenCalled(); });
it("changing level works correctly from that point", function () { window.console = mockConsole(); var result = log.setLevel(log.levels.WARN);
expect(result).toBeUndefined(); }); }); });
describe("with a console that only supports console.log", function() { beforeEach(function() { window.console = mockConsole(); });
afterEach(function() { window.console = originalConsole; });
it("log can be set to silent", function() { log.setLevel(log.levels.SILENT); });
it("log can be set to an active level", function() { log.setLevel(log.levels.ERROR); });
consoleLogIsCalledBy(log, "trace"); consoleLogIsCalledBy(log, "debug"); consoleLogIsCalledBy(log, "info"); consoleLogIsCalledBy(log, "warn"); consoleLogIsCalledBy(log, "trace"); }); }); });
|