From fca06389aafcb8f8713ea82d29ee4258212927bb Mon Sep 17 00:00:00 2001 From: Matt Lewis Date: Tue, 7 Feb 2017 17:30:54 +0000 Subject: [PATCH] fix($jsonpCallbacks): allow $window to be mocked in unit tests Fixes #15685 --- src/ng/jsonpCallbacks.js | 6 +++--- test/ng/jsonpCallbacksSpec.js | 13 +++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/ng/jsonpCallbacks.js b/src/ng/jsonpCallbacks.js index fa71bdbcf92a..35699f6cb0e8 100644 --- a/src/ng/jsonpCallbacks.js +++ b/src/ng/jsonpCallbacks.js @@ -10,8 +10,8 @@ * how they vary compared to the requested url. */ var $jsonpCallbacksProvider = /** @this */ function() { - this.$get = ['$window', function($window) { - var callbacks = $window.angular.callbacks; + this.$get = function() { + var callbacks = angular.callbacks; var callbackMap = {}; function createCallback(callbackId) { @@ -78,5 +78,5 @@ var $jsonpCallbacksProvider = /** @this */ function() { delete callbackMap[callbackPath]; } }; - }]; + }; }; diff --git a/test/ng/jsonpCallbacksSpec.js b/test/ng/jsonpCallbacksSpec.js index f36f2aa2f900..260583f84d58 100644 --- a/test/ng/jsonpCallbacksSpec.js +++ b/test/ng/jsonpCallbacksSpec.js @@ -79,4 +79,17 @@ describe('$jsonpCallbacks', function() { expect($window.angular.callbacks._0).toBeUndefined(); })); }); + + describe('$window mocked', function() { + + beforeEach(module(function($provide) { + $provide.value('$window', {}); + })); + + it('should not throw when $window.angular does not exist', inject(function($injector) { + expect(function() { + $injector.get('$jsonpCallbacks'); + }).not.toThrow(); + })); + }); });