"use strict"; define(['test/test-helpers'], function(testHelpers) { var it = testHelpers.itWithFreshLog; describe("Setting the methodFactory tests:", function() { it("methodFactory should be called once for each loggable level", function(log) { log.methodFactory = jasmine.createSpy("methodFactory"); log.setLevel("trace"); expect(log.methodFactory.calls.count()).toEqual(5); expect(log.methodFactory.calls.argsFor(0)).toEqual(["trace", 0, undefined]); expect(log.methodFactory.calls.argsFor(1)).toEqual(["debug", 0, undefined]); expect(log.methodFactory.calls.argsFor(2)).toEqual(["info", 0, undefined]); expect(log.methodFactory.calls.argsFor(3)).toEqual(["warn", 0, undefined]); expect(log.methodFactory.calls.argsFor(4)).toEqual(["error", 0, undefined]); log.setLevel("error"); expect(log.methodFactory.calls.count()).toEqual(6); expect(log.methodFactory.calls.argsFor(5)).toEqual(["error", 4, undefined]); }); it("functions returned by methodFactory should be used as logging functions", function(log) { var logFunction = function() {}; log.methodFactory = function() { return logFunction; }; log.setLevel("error"); expect(log.warn).not.toEqual(logFunction); expect(log.error).toEqual(logFunction); }); it("the third argument should be logger's name", function(log) { var logger = log.getLogger("newLogger"); logger.methodFactory = jasmine.createSpy("methodFactory"); logger.setLevel("error"); expect(logger.methodFactory.calls.argsFor(0)).toEqual(["error", 4, "newLogger"]); }); }); });