'use strict';
describe('ngNonBindable', function() {
  var element;
  afterEach(function(){
    dealoc(element);
  });
  it('should prevent compilation of the owning element and its children',
      inject(function($rootScope, $compile) {
    element = $compile('
')($rootScope);
    element = $compile('' +
                       '  
{{a}}' +
                       '  
' +
                       '  
' +
                       '    {{b}}' +
                       '  
' +
                       '  
{{a}}' +
                       '  
' +
                       '
 ')($rootScope);
    $rootScope.a = "one";
    $rootScope.b = "two";
    $rootScope.$digest();
    // Bindings not contained by ng-non-bindable should resolve.
    var spans = element.find("span");
    expect(spans.eq(0).text()).toEqual('one');
    expect(spans.eq(1).text()).toEqual('two');
    expect(spans.eq(3).text()).toEqual('one');
    expect(spans.eq(4).text()).toEqual('two');
    // Bindings contained by ng-non-bindable should be left alone.
    var nonBindableDiv = element.find("div");
    expect(nonBindableDiv.attr('foo')).toEqual('{{a}}');
    expect(trim(nonBindableDiv.text())).toEqual('{{b}}');
  }));
});