aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorTobias Bosch2013-11-21 21:54:59 -0800
committerTobias Bosch2013-11-21 22:20:11 -0800
commite6521e7491242504250b57dd0ee66af49e653c33 (patch)
tree1a605bfc1a44c423ba7fec13ae94b984992bd0ab /test
parent0a7cbb33b06778833a4d99b1868cc07690a827a7 (diff)
downloadangular.js-e6521e7491242504250b57dd0ee66af49e653c33.tar.bz2
fix(ngView): Don't throw when the ngView element contains content with directives.
Fixes #5069
Diffstat (limited to 'test')
-rw-r--r--test/ngRoute/directive/ngViewSpec.js42
1 files changed, 37 insertions, 5 deletions
diff --git a/test/ngRoute/directive/ngViewSpec.js b/test/ngRoute/directive/ngViewSpec.js
index 533f0b53..f4b28058 100644
--- a/test/ngRoute/directive/ngViewSpec.js
+++ b/test/ngRoute/directive/ngViewSpec.js
@@ -515,12 +515,23 @@ describe('ngView', function() {
});
describe('ngView and transcludes', function() {
+ var element, directive;
+
+ beforeEach(module('ngRoute', function($compileProvider) {
+ element = null;
+ directive = $compileProvider.directive;
+ }));
+
+ afterEach(function() {
+ if (element) {
+ dealoc(element);
+ }
+ });
+
it('should allow access to directive controller from children when used in a replace template', function() {
var controller;
- module('ngRoute');
- module(function($compileProvider, $routeProvider) {
+ module(function($routeProvider) {
$routeProvider.when('/view', {templateUrl: 'view.html'});
- var directive = $compileProvider.directive;
directive('template', function() {
return {
template: '<div ng-view></div>',
@@ -542,14 +553,35 @@ describe('ngView and transcludes', function() {
});
inject(function($compile, $rootScope, $httpBackend, $location) {
$httpBackend.expectGET('view.html').respond('<div><div test></div></div>');
- var element = $compile('<div><div template></div></div>')($rootScope);
+ element = $compile('<div><div template></div></div>')($rootScope);
$location.url('/view');
$rootScope.$apply();
$httpBackend.flush();
expect(controller.flag).toBe(true);
- dealoc(element);
});
});
+
+ it("should compile it's content correctly (although we remove it later)", function() {
+ var testElement;
+ module(function($compileProvider, $routeProvider) {
+ $routeProvider.when('/view', {template: ' '});
+ var directive = $compileProvider.directive;
+ directive('test', function() {
+ return {
+ link: function(scope, element) {
+ testElement = element;
+ }
+ };
+ });
+ });
+ inject(function($compile, $rootScope, $location) {
+ element = $compile('<div><div ng-view><div test someAttr></div></div></div>')($rootScope);
+ $location.url('/view');
+ $rootScope.$apply();
+ expect(testElement[0].nodeName).toBe('DIV');
+ });
+
+ });
});
describe('ngView animations', function() {