aboutsummaryrefslogtreecommitdiffstats
path: root/test/ng/compileSpec.js
diff options
context:
space:
mode:
authorIgor Minar2013-02-23 22:54:35 -0800
committerIgor Minar2013-02-23 23:22:14 -0800
commitbec614fd90c48c3921a4b659912008574e553b40 (patch)
tree8bedf2592843b868d942590f93983d88de6fd1cc /test/ng/compileSpec.js
parent509ec745fdbb54b54672fbf8595a4958c16f2b53 (diff)
downloadangular.js-bec614fd90c48c3921a4b659912008574e553b40.tar.bz2
fix($compile): handle elements with no childNodes property
see the test for more details
Diffstat (limited to 'test/ng/compileSpec.js')
-rw-r--r--test/ng/compileSpec.js22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js
index d2eddafc..74b1e9e3 100644
--- a/test/ng/compileSpec.js
+++ b/test/ng/compileSpec.js
@@ -178,6 +178,28 @@ describe('$compile', function() {
expect(calcCacheSize()).toEqual(0);
});
+
+ it('should not blow up when elements with no childNodes property are compiled', inject(
+ function($compile, $rootScope) {
+ // it turns out that when a browser plugin is bound to an DOM element (typically <object>),
+ // the plugin's context rather than the usual DOM apis are exposed on this element, so
+ // childNodes might not exist.
+ if (msie < 9) return;
+
+ element = jqLite('<div>{{1+2}}</div>');
+ element[0].childNodes[1] = {nodeType: 3, nodeName: 'OBJECT', textContent: 'fake node'};
+
+ if (!element[0].childNodes[1]) return; //browser doesn't support this kind of mocking
+ expect(element[0].childNodes[1].textContent).toBe('fake node');
+
+ $compile(element)($rootScope);
+ $rootScope.$apply();
+
+ // object's children can't be compiled in this case, so we expect them to be raw
+ expect(element.html()).toBe("3");
+ }));
+
+
describe('multiple directives per element', function() {
it('should allow multiple directives per element', inject(function($compile, $rootScope, log){
element = $compile(