diff options
author | Samy Pesse <samypesse@gmail.com> | 2016-06-06 19:24:12 +0200 |
---|---|---|
committer | Samy Pesse <samypesse@gmail.com> | 2016-06-06 19:24:12 +0200 |
commit | 357e1e8e96174e1b0d74c3c952c1d83f7c04982f (patch) | |
tree | 977ac85460d8fc281cb4f02eb9261903b5cf3723 /lib/templating | |
parent | 7a89f9869a08b9427df0c28f6594a7ec9da7c0d7 (diff) | |
download | gitbook-357e1e8e96174e1b0d74c3c952c1d83f7c04982f.zip gitbook-357e1e8e96174e1b0d74c3c952c1d83f7c04982f.tar.gz gitbook-357e1e8e96174e1b0d74c3c952c1d83f7c04982f.tar.bz2 |
Add unit tests for postRender
Diffstat (limited to 'lib/templating')
-rw-r--r-- | lib/templating/__tests__/postRender.js | 51 | ||||
-rw-r--r-- | lib/templating/postRender.js | 28 | ||||
-rw-r--r-- | lib/templating/render.js | 16 |
3 files changed, 73 insertions, 22 deletions
diff --git a/lib/templating/__tests__/postRender.js b/lib/templating/__tests__/postRender.js new file mode 100644 index 0000000..131e29b --- /dev/null +++ b/lib/templating/__tests__/postRender.js @@ -0,0 +1,51 @@ +var TemplateEngine = require('../../models/templateEngine'); +var TemplateBlock = require('../../models/templateBlock'); + +var renderTemplate = require('../render'); +var postRender = require('../postRender'); + +describe('postRender', function() { + var testPost; + var engine = TemplateEngine.create({ + blocks: [ + TemplateBlock.create('lower', function(blk) { + return blk.body.toLowerCase(); + }), + TemplateBlock.create('prefix', function(blk) { + return { + body: '_' + blk.body + '_', + post: function() { + testPost = true; + } + }; + }) + ] + }); + + it('should correctly replace block', function() { + return renderTemplate(engine, 'README.md', 'Hello {% lower %}Samy{% endlower %}') + .then(function(output) { + expect(output.getContent()).toMatch(/Hello \{\{\-([\S]+)\-\}\}/); + expect(output.getBlocks().size).toBe(1); + + return postRender(engine, output); + }) + .then(function(result) { + expect(result).toBe('Hello samy'); + }); + }); + + it('should correctly replace blocks', function() { + return renderTemplate(engine, 'README.md', 'Hello {% lower %}Samy{% endlower %}{% prefix %}Pesse{% endprefix %}') + .then(function(output) { + expect(output.getContent()).toMatch(/Hello \{\{\-([\S]+)\-\}\}\{\{\-([\S]+)\-\}\}/); + expect(output.getBlocks().size).toBe(2); + return postRender(engine, output); + }) + .then(function(result) { + expect(result).toBe('Hello samy_Pesse_'); + expect(testPost).toBe(true); + }); + }); + +}); diff --git a/lib/templating/postRender.js b/lib/templating/postRender.js index ec67696..f464f86 100644 --- a/lib/templating/postRender.js +++ b/lib/templating/postRender.js @@ -2,12 +2,12 @@ var Promise = require('../utils/promise'); /** - Replace position markers of blocks by body after processing - This is done to avoid that markdown/asciidoc processer parse the block content - - @param {String} content - @return {Object} {blocks: Set, content: String} -*/ + * Replace position markers of blocks by body after processing + * This is done to avoid that markdown/asciidoc processer parse the block content + * + * @param {String} content + * @return {Object} {blocks: Set, content: String} + */ function replaceBlocks(content, blocks) { var newContent = content.replace(/\{\{\-\%([\s\S]+?)\%\-\}\}/g, function(match, key) { var replacedWith = match; @@ -24,14 +24,14 @@ function replaceBlocks(content, blocks) { } /** - Post render a template: - - Execute "post" for blocks - - Replace block content - - @param {TemplateEngine} engine - @param {TemplateOutput} content - @return {Promise<String>} -*/ + * Post render a template: + * - Execute "post" for blocks + * - Replace block content + * + * @param {TemplateEngine} engine + * @param {TemplateOutput} content + * @return {Promise<String>} + */ function postRender(engine, output) { var content = output.getContent(); var blocks = output.getBlocks(); diff --git a/lib/templating/render.js b/lib/templating/render.js index 68396f7..1a8b0cd 100644 --- a/lib/templating/render.js +++ b/lib/templating/render.js @@ -4,14 +4,14 @@ var TemplateOutput = require('../models/templateOutput'); var replaceShortcuts = require('./replaceShortcuts'); /** - Render a template - - @param {TemplateEngine} engine - @param {String} filePath: absolute path for the loader - @param {String} content - @param {Object} context - @return {Promise<TemplateOutput>} -*/ + * Render a template + * + * @param {TemplateEngine} engine + * @param {String} filePath: absolute path for the loader + * @param {String} content + * @param {Object} context (optional) + * @return {Promise<TemplateOutput>} + */ function renderTemplate(engine, filePath, content, context) { context = context || {}; |