aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/directive/ngViewSpec.js19
-rw-r--r--test/loaderSpec.js2
-rw-r--r--test/service/controllerSpec.js41
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);