text: 'use strict';
  
  describe('ngBind*', function() {
    var element;
  
  
    afterEach(function() {
      dealoc(element);
    });
  
  
    describe('ngBind', function() {
  
      it('should set text', inject(function($rootScope, $compile) {
        element = $compile('<div ng-bind="a"></div>')($rootScope);
        expect(element.text()).toEqual('');
        $rootScope.a = 'misko';
        $rootScope.$digest();
        expect(element.hasClass('ng-binding')).toEqual(true);
        expect(element.text()).toEqual('misko');
      }));
  
  
      it('should set text to blank if undefined', inject(function($rootScope, $compile) {
        element = $compile('<div ng-bind="a"></div>')($rootScope);
        $rootScope.a = 'misko';
        $rootScope.$digest();
        expect(element.text()).toEqual('misko');
        $rootScope.a = undefined;
        $rootScope.$digest();
        expect(element.text()).toEqual('');
        $rootScope.a = null;
        $rootScope.$digest();
        expect(element.text()).toEqual('');
      }));
  
  
      it('should suppress rendering of falsy values', inject(function($rootScope, $compile) {
        element = $compile('<div><span ng-bind="null"></span>' +
                                '<span ng-bind="undefined"></span>' +
                                '<span ng-bind="\'\'"></span>-' +
                                '<span ng-bind="0"></span>' +
                                '<span ng-bind="false"></span>' +
                            '</div>')($rootScope);
        $rootScope.$digest();
        expect(element.text()).toEqual('-0false');
      }));
    });
  
  
    describe('ngBindTemplate', function() {
  
      it('should ngBindTemplate', inject(function($rootScope, $compile) {
        element = $compile('<div ng-bind-template="Hello {{name}}!"></div>')($rootScope);
        $rootScope.name = 'Misko';
        $rootScope.$digest();
        expect(element.hasClass('ng-binding')).toEqual(true);
        expect(element.text()).toEqual('Hello Misko!');
      }));
  
  
      it('should render object as JSON ignore $$', inject(function($rootScope, $compile) {
        element = $compile('<pre>{{ {key:"value", $$key:"hide"}  }}</pre>')($rootScope);
        $rootScope.$digest();
        expect(fromJson(element.text())).toEqual({key:'value'});
      }));
    });
  
  
    describe('ngBindHtml', function() {
      describe('SCE disabled', function() {
        beforeEach(function() {
          module(function($sceProvider) { $sceProvider.enabled(false); });
        });
  
        it('should set html', inject(function($rootScope, $compile) {
          element = $compile('<div ng-bind-html="html"></div>')($rootScope);
          $rootScope.html = '<div onclick="">hello</div>';
          $rootScope.$digest();
          expect(angular.lowercase(element.html())).toEqual('<div onclick="">hello</div>');
        }));
      });
  
  
      describe('SCE enabled', function() {
        it('should NOT set html for untrusted values', inject(function($rootScope, $compile) {
          element = $compile('<div ng-bind-html="html"></div>')($rootScope);
          $rootScope.html = '<div onclick="">hello</div>';
          expect($rootScope.$digest).toThrow();
        }));
  
        it('should NOT set html for wrongly typed values', inject(function($rootScope, $compile, $sce) {
          element = $compile('<div ng-bind-html="html"></div>')($rootScope);
          $rootScope.html = $sce.trustAsCss('<div onclick="">hello</div>');
          expect($rootScope.$digest).toThrow();
        }));
  
        it('should set html for trusted values', inject(function($rootScope, $compile, $sce) {
          element = $compile('<div ng-bind-html="html"></div>')($rootScope);
          $rootScope.html = $sce.trustAsHtml('<div onclick="">hello</div>');
          $rootScope.$digest();
          expect(angular.lowercase(element.html())).toEqual('<div onclick="">hello</div>');
        }));
  
        describe('when $sanitize is available', function() {
          beforeEach(function() { module('ngSanitize'); });
  
          it('should sanitize untrusted html', inject(function($rootScope, $compile) {
            element = $compile('<div ng-bind-html="html"></div>')($rootScope);
            $rootScope.html = '<div onclick="">hello</div>';
            $rootScope.$digest();
            expect(angular.lowercase(element.html())).toEqual('<div>hello</div>');
          }));
        });
      });
  
    });
  });
  