Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
language: node_js
node_js:
- "0.10"
branches:
only:
- master
before_script:
- npm install -g grunt-cli
after_success:
- npm run coveralls
language: node_js
node_js:
- "0.12"
branches:
only:
- master
before_script:
- npm install -g grunt-cli
after_success:
- npm run coveralls
10 changes: 2 additions & 8 deletions stop-angular-overrides.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,6 @@
// proxy .filter calls to the new module
var _filter = angular.bind(m, m.filter);
m.filter = function (name, fn) {
if (!fn) {
return _filter(name);
}
if (existingFilters[name]) {
throw new Error('Angular filter ' + name + ' already exists');
}
Expand All @@ -37,15 +34,12 @@

// proxy .controller calls to the new module
var _controller = angular.bind(m, m.controller);
m.controller = function (name, deps) {
if (!deps) {
return _controller(name);
}
m.controller = function (name, fn) {
if (existingControllers[name]) {
throw new Error('Angular controller ' + name + ' already exists');
}
existingControllers[name] = true;
return _controller(name, deps);
return _controller(name, fn);
};

return m;
Expand Down
81 changes: 81 additions & 0 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@ QUnit.test('loading angular', function () {
QUnit.func(angular.module, 'angular.module is an object');
});

QUnit.test('angular check', function () {
QUnit.throws(function() {
benv.require('../stop-angular-overrides.js');
}, 'Missing angular');
});

QUnit.test('angular.bind', function () {
var angular = benv.require('../bower_components/angular/angular.js', 'angular');
QUnit.func(angular.bind, 'angular.bind is a function');
Expand All @@ -48,6 +54,53 @@ QUnit.test('last module overrides by default', function () {
QUnit.equal(angular.module('A'), second, 'A -> second module');
});

QUnit.test('last controller overrides by default', function () {
var angular = benv.require('../bower_components/angular/angular.js', 'angular');

var module = angular.module('A', []);
var First = function () {
this.name = 'first';
};
var Second = function () {
this.name = 'second';
};

module.controller('aController', First);
module.controller('aController', Second);

var $controller = angular.injector(['ng', 'A']).get('$controller');
var pseudoScope = $controller('aController', {$scope: {}});
QUnit.equal(pseudoScope.name, 'second', 'aController -> second module');

module.controller('aController');
$controller = angular.injector(['ng', 'A']).get('$controller');

QUnit.throws(function() {
$controller('aController', {$scope: {}});
}, 'Argument \'aController\' is not a function, got undefined');
});

QUnit.test('last filter overrides by default', function () {
var angular = benv.require('../bower_components/angular/angular.js', 'angular');

var module = angular.module('A', []);
var firstFilter = function () {};
var secondFilter = function () {};

module.filter('aFilter', function () { return firstFilter; });
module.filter('aFilter', function () { return secondFilter; });

var $filter = angular.injector(['ng', 'A']).get('$filter');
var loadedFilter = $filter('aFilter');
QUnit.equal(loadedFilter, secondFilter, 'aFilter -> secondFilter');

module.filter('aFilter');

QUnit.throws(function() {
angular.injector(['ng', 'A']).get('$filter');
}, 'Error');
});

QUnit.test('stop angular override', function () {
var angular = benv.require('../bower_components/angular/angular.js', 'angular');
benv.require('../stop-angular-overrides.js');
Expand Down Expand Up @@ -81,3 +134,31 @@ QUnit.test('stop angular filter override', function () {
angular.module('A2', []).filter('f', function () {});
}, 'Error');
});


QUnit.test('stops controller overrides with undefined', function () {
var angular = benv.require('../bower_components/angular/angular.js', 'angular');
benv.require('../stop-angular-overrides.js');

var module = angular.module('A', []);

module.controller('aController', function () {});

QUnit.throws(function() {
module.controller('aController');
}, 'Error');
});

QUnit.test('stops filter overrides with undefined', function () {
var angular = benv.require('../bower_components/angular/angular.js', 'angular');
benv.require('../stop-angular-overrides.js');

var module = angular.module('A', []);
var filter = function () {};

module.filter('aFilter', function () { return filter; });

QUnit.throws(function() {
module.filter('aFilter');
}, 'Error');
});