diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/directive/ngViewSpec.js | 19 | ||||
| -rw-r--r-- | test/loaderSpec.js | 2 | ||||
| -rw-r--r-- | test/service/controllerSpec.js | 41 |
3 files changed, 59 insertions, 3 deletions
diff --git a/test/directive/ngViewSpec.js b/test/directive/ngViewSpec.js index 52aefa3a..636e15a8 100644 --- a/test/directive/ngViewSpec.js +++ b/test/directive/ngViewSpec.js @@ -54,6 +54,25 @@ describe('ng-view', function() { }); + it('should support string controller declaration', function() { + var MyCtrl = jasmine.createSpy('MyCtrl'); + + module(function($controllerProvider, $routeProvider) { + $controllerProvider.register('MyCtrl', ['$scope', MyCtrl]); + $routeProvider.when('/foo', {controller: 'MyCtrl', template: '/tpl.html'}); + }); + + inject(function($route, $location, $rootScope, $templateCache) { + $templateCache.put('/tpl.html', [200, '<div></div>', {}]); + $location.path('/foo'); + $rootScope.$digest(); + + expect($route.current.controller).toBe('MyCtrl'); + expect(MyCtrl).toHaveBeenCalledWith(element.contents().scope()); + }); + }); + + it('should load content via xhr when route changes', function() { module(function($routeProvider) { $routeProvider.when('/foo', {template: 'myUrl1'}); diff --git a/test/loaderSpec.js b/test/loaderSpec.js index dff3787d..b2341a71 100644 --- a/test/loaderSpec.js +++ b/test/loaderSpec.js @@ -38,6 +38,7 @@ describe('module loader', function() { value('k', 'v'). filter('f', 'ff'). directive('d', 'dd'). + controller('ctrl', 'ccc'). config('init2'). constant('abc', 123). run('runBlock')).toBe(myModule); @@ -52,6 +53,7 @@ describe('module loader', function() { ['$provide', 'value', ['k', 'v'] ], ['$filterProvider', 'register', ['f', 'ff'] ], ['$compileProvider', 'directive', ['d', 'dd'] ], + ['$controllerProvider', 'register', ['ctrl', 'ccc']], ['$injector', 'invoke', ['init2'] ] ]); expect(myModule._runBlocks).toEqual(['runBlock']); diff --git a/test/service/controllerSpec.js b/test/service/controllerSpec.js index 2c0f8c62..91389013 100644 --- a/test/service/controllerSpec.js +++ b/test/service/controllerSpec.js @@ -1,12 +1,47 @@ 'use strict'; describe('$controller', function() { - var $controller; + var $controllerProvider, $controller; - beforeEach(inject(function($injector) { - $controller = $injector.get('$controller'); + beforeEach(module(function(_$controllerProvider_) { + $controllerProvider = _$controllerProvider_; })); + + beforeEach(inject(function(_$controller_) { + $controller = _$controller_; + })); + + + describe('provider', function() { + + it('should allow registration of controllers', function() { + var FooCtrl = function($scope) { $scope.foo = 'bar' }, + scope = {}, + ctrl; + + $controllerProvider.register('FooCtrl', FooCtrl); + ctrl = $controller('FooCtrl', {$scope: scope}); + + expect(scope.foo).toBe('bar'); + expect(ctrl instanceof FooCtrl).toBe(true); + }); + + + it('should allow registration of controllers annotated with arrays', function() { + var FooCtrl = function($scope) { $scope.foo = 'bar' }, + scope = {}, + ctrl; + + $controllerProvider.register('FooCtrl', ['$scope', FooCtrl]); + ctrl = $controller('FooCtrl', {$scope: scope}); + + expect(scope.foo).toBe('bar'); + expect(ctrl instanceof FooCtrl).toBe(true); + }); + }); + + it('should return instance of given controller class', function() { var MyClass = function() {}, ctrl = $controller(MyClass); |
