From fc0f6e98784866094dfdae9c06cbf12399b7812e Mon Sep 17 00:00:00 2001 From: polesye Date: Tue, 23 Dec 2014 11:52:48 +0200 Subject: [PATCH] Logger: Add possibility to send sync requests. --- common/static/js/spec/logger_spec.js | 15 +++++++++++++-- common/static/js/src/logger.js | 11 ++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/common/static/js/spec/logger_spec.js b/common/static/js/spec/logger_spec.js index 37e41c7a74..b492bed370 100644 --- a/common/static/js/spec/logger_spec.js +++ b/common/static/js/spec/logger_spec.js @@ -49,7 +49,7 @@ Logger.listen('new_event', null, this.callbacks[3]); }); - it('can listen events when the element name is unknown', function() { + it('can listen to events when the element name is unknown', function() { Logger.log('example', 'data'); expect(this.callbacks[0]).toHaveBeenCalledWith('example', 'data', null); expect(this.callbacks[1]).toHaveBeenCalledWith('example', 'data', null); @@ -57,13 +57,24 @@ expect(this.callbacks[3]).not.toHaveBeenCalled(); }); - it('can listen events when the element name is known', function() { + it('can listen to events when the element name is known', function() { Logger.log('example', 'data', 'element'); expect(this.callbacks[0]).not.toHaveBeenCalled(); expect(this.callbacks[1]).not.toHaveBeenCalled(); expect(this.callbacks[2]).toHaveBeenCalledWith('example', 'data', 'element'); expect(this.callbacks[3]).not.toHaveBeenCalled(); }); + + it('can catch exceptions', function() { + var callback = function () { + Logger.log('exception', 'data'); + }; + Logger.listen('exception', null, function () { + throw new Error(); + }); + expect(callback).not.toThrow(); + expect(jQuery.ajaxWithPrefix).toHaveBeenCalled(); + }); }); describe('bind', function() { diff --git a/common/static/js/src/logger.js b/common/static/js/src/logger.js index 2495358e45..c9412e872e 100644 --- a/common/static/js/src/logger.js +++ b/common/static/js/src/logger.js @@ -39,7 +39,16 @@ // Make the callbacks. callbacks = listeners[eventType][element]; $.each(callbacks, function(index, callback) { - callback(eventType, data, element); + try { + callback(eventType, data, element); + } catch (err) { + console.error({ + eventType: eventType, + data: data, + element: element, + error: err + }); + } }); } }