Code coverage report for spec/javascript-compiler.js

Statements: 41.3% (19 / 46)      Branches: 50% (2 / 4)      Functions: 21.05% (4 / 19)      Lines: 41.3% (19 / 46)      Ignored: none     

All files » spec/ » javascript-compiler.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72  3 3 1     2 2 2     2       2             2 2 2       2       2                       2 2 2         2           2           2                
/*global Handlebars, beforeEach, handlebarsEnv, shouldCompileTo */
describe('javascript-compiler api', function() {
  if (!Handlebars.JavaScriptCompiler) {
    return;
  }
 
  describe('#nameLookup', function() {
    var $superName;
    beforeEach(function() {
      $superName = handlebarsEnv.JavaScriptCompiler.prototype.nameLookup;
    });
    afterEach(function() {
      handlebarsEnv.JavaScriptCompiler.prototype.nameLookup = $superName;
    });
 
    it('should allow override', function() {
      handlebarsEnv.JavaScriptCompiler.prototype.nameLookup = function(parent, name) {
        return parent + '.bar_' + name;
      };
      shouldCompileTo("{{foo}}", { bar_foo: "food" }, "food");
    });
  });
  describe('#compilerInfo', function() {
    var $superCheck, $superInfo;
    beforeEach(function() {
      $superCheck = handlebarsEnv.VM.checkRevision;
      $superInfo = handlebarsEnv.JavaScriptCompiler.prototype.compilerInfo;
    });
    afterEach(function() {
      handlebarsEnv.VM.checkRevision = $superCheck;
      handlebarsEnv.JavaScriptCompiler.prototype.compilerInfo = $superInfo;
    });
    it('should allow compilerInfo override', function() {
      handlebarsEnv.JavaScriptCompiler.prototype.compilerInfo = function() {
        return 'crazy';
      };
      handlebarsEnv.VM.checkRevision = function(compilerInfo) {
        if (compilerInfo !== 'crazy') {
          throw new Error('It didn\'t work');
        }
      };
      shouldCompileTo("{{foo}} ", { foo: "food" }, "food ");
    });
  });
  describe('buffer', function() {
    var $superAppend, $superCreate;
    beforeEach(function() {
      handlebarsEnv.JavaScriptCompiler.prototype.forceBuffer = true;
      $superAppend = handlebarsEnv.JavaScriptCompiler.prototype.appendToBuffer;
      $superCreate = handlebarsEnv.JavaScriptCompiler.prototype.initializeBuffer;
    });
    afterEach(function() {
      handlebarsEnv.JavaScriptCompiler.prototype.forceBuffer = false;
      handlebarsEnv.JavaScriptCompiler.prototype.appendToBuffer = $superAppend;
      handlebarsEnv.JavaScriptCompiler.prototype.initializeBuffer = $superCreate;
    });
 
    it('should allow init buffer override', function() {
      handlebarsEnv.JavaScriptCompiler.prototype.initializeBuffer = function() {
        return this.quotedString('foo_');
      };
      shouldCompileTo("{{foo}} ", { foo: "food" }, "foo_food ");
    });
    it('should allow append buffer override', function() {
      handlebarsEnv.JavaScriptCompiler.prototype.appendToBuffer = function(string) {
        return $superAppend.call(this, string + ' + "_foo"');
      };
      shouldCompileTo("{{foo}}", { foo: "food" }, "food_foo");
    });
  });
});