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.
		
		
		
		
		
			
		
			
				
					
					
						
							98 lines
						
					
					
						
							3.2 KiB
						
					
					
				
			
		
		
	
	
							98 lines
						
					
					
						
							3.2 KiB
						
					
					
				"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"); | 
						|
        }); | 
						|
    }); | 
						|
}); | 
						|
 | 
						|
 |