aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/directivesSpec.js84
-rw-r--r--test/scenario/RunnerSpec.js3
-rw-r--r--test/scenario/SpecRunnerSpec.js8
-rw-r--r--test/service/formFactorySpec.js22
-rw-r--r--test/service/routeSpec.js21
-rw-r--r--test/service/scopeSpec.js31
-rw-r--r--test/widgetsSpec.js8
7 files changed, 77 insertions, 100 deletions
diff --git a/test/directivesSpec.js b/test/directivesSpec.js
index 1825dc49..7600a9c8 100644
--- a/test/directivesSpec.js
+++ b/test/directivesSpec.js
@@ -460,60 +460,66 @@ describe("directive", function() {
});
describe('ng:controller', function() {
+ var element;
- var temp;
+ beforeEach(inject(function($window) {
+ $window.Greeter = function($scope) {
+ // private stuff (not exported to scope)
+ this.prefix = 'Hello ';
- beforeEach(function() {
- temp = window.temp = {};
- temp.Greeter = function() {
- this.$root.greeter = this;
- this.greeting = 'hello';
- this.suffix = '!';
+ // public stuff (exported to scope)
+ var ctrl = this;
+ $scope.name = 'Misko';
+ $scope.greet = function(name) {
+ return ctrl.prefix + name + ctrl.suffix;
+ };
+
+ $scope.protoGreet = bind(this, this.protoGreet);
};
- temp.Greeter.prototype = {
- greet: function(name) {
- return this.greeting + ' ' + name + this.suffix;
+ $window.Greeter.prototype = {
+ suffix: '!',
+ protoGreet: function(name) {
+ return this.prefix + name + this.suffix;
}
};
- });
+
+ $window.Child = function($scope) {
+ $scope.name = 'Adam';
+ };
+ }));
afterEach(function() {
- window.temp = undefined;
+ dealoc(element);
});
- it('should bind', inject(function($rootScope, $compile) {
- var element = $compile('<div ng:controller="temp.Greeter"></div>')($rootScope);
- expect($rootScope.greeter.greeting).toEqual('hello');
- expect($rootScope.greeter.greet('misko')).toEqual('hello misko!');
+
+ it('should instantiate controller and bind methods', inject(function($compile, $rootScope) {
+ element = $compile('<div ng:controller="Greeter">{{greet(name)}}</div>')($rootScope);
+ $rootScope.$digest();
+ expect(element.text()).toBe('Hello Misko!');
}));
- it('should support nested controllers', inject(function($rootScope, $compile) {
- temp.ChildGreeter = function() {
- this.greeting = 'hey';
- this.$root.childGreeter = this;
- };
- temp.ChildGreeter.prototype = {
- greet: function() {
- return this.greeting + ' dude' + this.suffix;
- }
- };
- var element = $compile('<div ng:controller="temp.Greeter"><div ng:controller="temp.ChildGreeter">{{greet("misko")}}</div></div>')($rootScope);
- expect($rootScope.greeting).not.toBeDefined();
- expect($rootScope.greeter.greeting).toEqual('hello');
- expect($rootScope.greeter.greet('misko')).toEqual('hello misko!');
- expect($rootScope.greeter.greeting).toEqual('hello');
- expect($rootScope.childGreeter.greeting).toEqual('hey');
- expect($rootScope.childGreeter.$parent.greeting).toEqual('hello');
+
+ it('should allow nested controllers', inject(function($compile, $rootScope) {
+ element = $compile('<div ng:controller="Greeter"><div ng:controller="Child">{{greet(name)}}</div></div>')($rootScope);
+ $rootScope.$digest();
+ expect(element.text()).toBe('Hello Adam!');
+ dealoc(element);
+
+ element = $compile('<div ng:controller="Greeter"><div ng:controller="Child">{{protoGreet(name)}}</div></div>')($rootScope);
$rootScope.$digest();
- expect(element.text()).toEqual('hey dude!');
+ expect(element.text()).toBe('Hello Adam!');
}));
- it('should infer injection arguments', inject(function($rootScope, $compile, $http) {
- temp.MyController = function($http) {
- this.$root.someService = $http;
+
+ it('should instantiate controller defined on scope', inject(function($compile, $rootScope) {
+ $rootScope.Greeter = function($scope) {
+ $scope.name = 'Vojta';
};
- var element = $compile('<div ng:controller="temp.MyController"></div>')($rootScope);
- expect($rootScope.someService).toBe($http);
+
+ element = $compile('<div ng:controller="Greeter">{{name}}</div>')($rootScope);
+ $rootScope.$digest();
+ expect(element.text()).toBe('Vojta');
}));
});
diff --git a/test/scenario/RunnerSpec.js b/test/scenario/RunnerSpec.js
index 15bcc4b0..c4ad6f95 100644
--- a/test/scenario/RunnerSpec.js
+++ b/test/scenario/RunnerSpec.js
@@ -43,9 +43,6 @@ describe('angular.scenario.Runner', function() {
location: {}
};
runner = new angular.scenario.Runner($window);
- runner.createSpecRunner_ = function(scope) {
- return scope.$new(MockSpecRunner);
- };
runner.on('SpecError', angular.mock.rethrow);
runner.on('StepError', angular.mock.rethrow);
});
diff --git a/test/scenario/SpecRunnerSpec.js b/test/scenario/SpecRunnerSpec.js
index 4cffc63a..c104a9b7 100644
--- a/test/scenario/SpecRunnerSpec.js
+++ b/test/scenario/SpecRunnerSpec.js
@@ -40,7 +40,13 @@ describe('angular.scenario.SpecRunner', function() {
};
$root.application = new ApplicationMock($window);
$root.$window = $window;
- runner = $root.$new(angular.scenario.SpecRunner);
+ runner = $root.$new();
+
+ var Cls = angular.scenario.SpecRunner;
+ for (var name in Cls.prototype)
+ runner[name] = angular.bind(runner, Cls.prototype[name]);
+
+ Cls.call(runner);
}));
it('should bind futures to the spec', function() {
diff --git a/test/service/formFactorySpec.js b/test/service/formFactorySpec.js
index fbe601c6..1a23aa49 100644
--- a/test/service/formFactorySpec.js
+++ b/test/service/formFactorySpec.js
@@ -13,23 +13,24 @@ describe('$formFactory', function() {
var scope;
var log;
- function WidgetCtrl($formFactory){
- this.$formFactory = $formFactory;
+ function WidgetCtrl($formFactory, $scope) {
log += '<init>';
- this.$render = function() {
+ $scope.$render = function() {
log += '$render();';
};
- this.$on('$validate', function(e){
+ $scope.$on('$validate', function(e){
log += '$validate();';
});
+
+ this.$formFactory = $formFactory;
}
- WidgetCtrl.$inject = ['$formFactory'];
+ WidgetCtrl.$inject = ['$formFactory', '$scope'];
WidgetCtrl.prototype = {
- getFormFactory: function() {
- return this.$formFactory;
- }
+ getFormFactory: function() {
+ return this.$formFactory;
+ }
};
beforeEach(inject(function($rootScope, $formFactory) {
@@ -70,11 +71,6 @@ describe('$formFactory', function() {
expect(widget.$modelValue).toEqual('xyz');
}));
-
-
- it('should have controller prototype methods', inject(function($rootScope, $formFactory) {
- expect(widget.getFormFactory()).toEqual($formFactory);
- }));
});
diff --git a/test/service/routeSpec.js b/test/service/routeSpec.js
index 95560d29..1bb1312f 100644
--- a/test/service/routeSpec.js
+++ b/test/service/routeSpec.js
@@ -112,7 +112,7 @@ describe('$route', function() {
inject(function($route, $location, $rootScope) {
var onChangeSpy = jasmine.createSpy('onChange');
- function NotFoundCtrl() {this.notFoundProp = 'not found!';}
+ function NotFoundCtrl($scope) {$scope.notFoundProp = 'not found!';}
$route.when('/foo', {template: 'foo.html'});
$route.otherwise({template: '404.html', controller: NotFoundCtrl});
@@ -169,10 +169,11 @@ describe('$route', function() {
it('should infer arguments in injection', inject(function($route, $location, $rootScope) {
- $route.when('/test', {controller: function($route){ this.$route = $route; }});
+ var injectedRoute;
+ $route.when('/test', {controller: function($route) {injectedRoute = $route;}});
$location.path('/test');
$rootScope.$digest();
- expect($route.current.scope.$route).toBe($route);
+ expect(injectedRoute).toBe($route);
}));
@@ -304,9 +305,9 @@ describe('$route', function() {
$route.when('/foo', {controller: FooCtrl, reloadOnSearch: false});
$rootScope.$on('$beforeRouteChange', reloaded);
- function FooCtrl() {
+ function FooCtrl($scope) {
reloaded();
- this.$on('$routeUpdate', routeUpdateEvent);
+ $scope.$on('$routeUpdate', routeUpdateEvent);
}
expect(reloaded).not.toHaveBeenCalled();
@@ -368,8 +369,8 @@ describe('$route', function() {
$route.when('/foo', {controller: FooCtrl});
$route.when('/bar/:barId', {controller: FooCtrl, reloadOnSearch: false});
- function FooCtrl() {
- this.$watch(function() {
+ function FooCtrl($scope) {
+ $scope.$watch(function() {
return $route.current.params;
}, function(scope, value) {
routeParams(value);
@@ -414,10 +415,10 @@ describe('$route', function() {
}
function createController(name) {
- return function() {
+ return function($scope) {
log.push('init-' + name);
- this.$on('$destroy', logger('destroy-' + name));
- this.$on('$routeUpdate', logger('route-update'));
+ $scope.$on('$destroy', logger('destroy-' + name));
+ $scope.$on('$routeUpdate', logger('route-update'));
};
}
diff --git a/test/service/scopeSpec.js b/test/service/scopeSpec.js
index 96271bc9..68ef2834 100644
--- a/test/service/scopeSpec.js
+++ b/test/service/scopeSpec.js
@@ -53,35 +53,6 @@ describe('Scope', function() {
$rootScope.a = 123;
expect(child.a).toEqual(123);
}));
-
-
- it('should instantiate controller and bind functions', inject(function($rootScope) {
- function Cntl($browser, name) {
- this.$browser = $browser;
- this.callCount = 0;
- this.name = name;
- }
- Cntl.$inject = ['$browser', 'name'];
-
- Cntl.prototype = {
- myFn: function() {
- expect(this).toEqual(cntl);
- this.callCount++;
- }
- };
-
- var cntl = $rootScope.$new(Cntl, {name:'misko'});
-
- expect($rootScope.$browser).toBeUndefined();
- expect($rootScope.myFn).toBeUndefined();
-
- expect(cntl.$browser).toBeDefined();
- expect(cntl.name).toEqual('misko');
-
- cntl.myFn();
- cntl.$new().myFn();
- expect(cntl.callCount).toEqual(2);
- }));
});
@@ -341,7 +312,7 @@ describe('Scope', function() {
$rootScope.$digest();
expect(isNaN(log.shift())).toBe(true); //jasmine's toBe and toEqual don't work well with NaNs
expect(log).toEqual([undefined, '', false, {}, 23]);
- log = []
+ log = [];
$rootScope.$digest();
expect(log).toEqual([]);
}));
diff --git a/test/widgetsSpec.js b/test/widgetsSpec.js
index f119174f..88d9e1b8 100644
--- a/test/widgetsSpec.js
+++ b/test/widgetsSpec.js
@@ -713,12 +713,12 @@ describe('widget', function() {
$route.when('/foo', {controller: ParentCtrl, template: 'viewPartial.html'});
$rootScope.log = [];
- function ParentCtrl() {
- this.log.push('parent');
+ function ParentCtrl($scope) {
+ $scope.log.push('parent');
}
- $rootScope.ChildCtrl = function() {
- this.log.push('child');
+ $rootScope.ChildCtrl = function($scope) {
+ $scope.log.push('child');
};
$location.path('/foo');