Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

feat($log): add $log.debug() #1625

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 45 additions & 1 deletion src/ng/log.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,33 @@
</example>
*/

/**
* @ngdoc object
* @name ng.$logProvider
* @description
* Use the `$logProvider` to configure how the application logs messages
*/
function $LogProvider(){
var debug = true,
self = this;

/**
* @ngdoc property
* @name ng.$logProvider#debugEnabled
* @methodOf ng.$logProvider
* @description
* @param {string=} flag enable or disable debug level messages
* @returns {*} current value if used as getter or itself (chaining) if used as setter
*/
this.debugEnabled = function(flag) {
if (isDefined(flag)) {
debug = flag;
return this;
} else {
return debug;
}
};

this.$get = ['$window', function($window){
return {
/**
Expand Down Expand Up @@ -74,7 +100,25 @@ function $LogProvider(){
* @description
* Write an error message
*/
error: consoleLog('error')
error: consoleLog('error'),

/**
* @ngdoc method
* @name ng.$log#debug
* @methodOf ng.$log
*
* @description
* Write a debug message
*/
debug: (function () {
var fn = consoleLog('debug');

return function() {
if (debug) {
fn.apply(self, arguments);
}
}
}())
};

function formatError(arg) {
Expand Down
51 changes: 44 additions & 7 deletions test/ng/logSpec.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
'use strict';

function initService(debugEnabled) {
return module(function($logProvider){
$logProvider.debugEnabled(debugEnabled);
});
}

describe('$log', function() {
var $window, logger, log, warn, info, error;
var $window, logger, log, warn, info, error, debug;



Expand All @@ -12,6 +18,7 @@ describe('$log', function() {
warn = function() { logger+= 'warn;'; };
info = function() { logger+= 'info;'; };
error = function() { logger+= 'error;'; };
debug = function() { logger+= 'debug;'; };

$provide.provider('$log', $LogProvider);
$provide.value('$exceptionHandler', angular.mock.rethrow);
Expand All @@ -23,14 +30,16 @@ describe('$log', function() {
$window.console = {log: log,
warn: warn,
info: info,
error: error};
error: error,
debug: debug};
},
function($log) {
$log.log();
$log.warn();
$log.info();
$log.error();
expect(logger).toEqual('log;warn;info;error;');
$log.debug();
expect(logger).toEqual('log;warn;info;error;debug;');
}
));

Expand All @@ -44,7 +53,8 @@ describe('$log', function() {
$log.warn();
$log.info();
$log.error();
expect(logger).toEqual('log;log;log;log;');
$log.debug();
expect(logger).toEqual('log;log;log;log;log;');
}
));

Expand All @@ -55,6 +65,7 @@ describe('$log', function() {
$log.warn();
$log.info();
$log.error();
$log.debug();
}
));

Expand All @@ -64,22 +75,48 @@ describe('$log', function() {
log.apply = log.call =
warn.apply = warn.call =
info.apply = info.call =
error.apply = error.call = null;
error.apply = error.call =
debug.apply = debug.call = null;

$window.console = {log: log,
warn: warn,
info: info,
error: error};
error: error,
debug: debug};
},
function($log) {
$log.log.apply($log);
$log.warn.apply($log);
$log.info.apply($log);
$log.error.apply($log);
expect(logger).toEqual('log;warn;info;error;');
$log.debug.apply($log);
expect(logger).toEqual('log;warn;info;error;debug;');
})
);

describe("$log.debug", function () {

beforeEach(initService(false));

it("should skip debugging output if disabled", inject(
function(){
$window.console = {log: log,
warn: warn,
info: info,
error: error,
debug: debug};
},
function($log) {
$log.log();
$log.warn();
$log.info();
$log.error();
$log.debug();
expect(logger).toEqual('log;warn;info;error;');
}
));

});

describe('$log.error', function() {
var e, $log, errorArgs;
Expand Down