99 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "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");
 | |
|         });
 | |
|     });
 | |
| });
 | |
| 
 |