From d54dfecb00fba41455536c5ddd55310592fdaf84 Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Mon, 26 Mar 2012 13:01:24 -0700 Subject: feat($controller): support controller registration via $controllerProvider It's now possible to register controllers as: .register('MyCtrl', function($scope) { ... }); // or .register('MyCtrl', ['$scope', function($scope) { ... }); Additionally a module loader shortcut api was added as well: myModule.controller('MyCtr', function($scope) { ... }); --- test/service/controllerSpec.js | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) (limited to 'test/service') 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); -- cgit v1.2.3