diff options
| author | Igor Minar | 2013-02-23 22:54:35 -0800 | 
|---|---|---|
| committer | Igor Minar | 2013-02-23 23:22:14 -0800 | 
| commit | bec614fd90c48c3921a4b659912008574e553b40 (patch) | |
| tree | 8bedf2592843b868d942590f93983d88de6fd1cc /test/ng/compileSpec.js | |
| parent | 509ec745fdbb54b54672fbf8595a4958c16f2b53 (diff) | |
| download | angular.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.js | 22 | 
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( | 
