diff options
author | Samy Pessé <samypesse@gmail.com> | 2015-09-15 13:36:02 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2015-09-15 13:36:02 +0200 |
commit | e1930046599d430a6bb378af62bce78fb9d24ff7 (patch) | |
tree | 8e3abd0c5fc3aee6ba81403cb8b1e4b7b0918006 /test/plugins.js | |
parent | fe3a9c33d0395ea9747ab8ef2fec24e81fc92715 (diff) | |
download | gitbook-e1930046599d430a6bb378af62bce78fb9d24ff7.zip gitbook-e1930046599d430a6bb378af62bce78fb9d24ff7.tar.gz gitbook-e1930046599d430a6bb378af62bce78fb9d24ff7.tar.bz2 |
Fix passing context to block functions
Add test for it
Diffstat (limited to 'test/plugins.js')
-rw-r--r-- | test/plugins.js | 122 |
1 files changed, 64 insertions, 58 deletions
diff --git a/test/plugins.js b/test/plugins.js index 6d5b9de..e6df389 100644 --- a/test/plugins.js +++ b/test/plugins.js @@ -1,13 +1,12 @@ -var _ = require('lodash'); -var should = require('should'); -var path = require('path'); -var fs = require('fs'); +var _ = require("lodash"); +var should = require("should"); +var path = require("path"); -var Plugin = require('../lib/plugin'); +var Plugin = require("../lib/plugin"); var parsers = require("gitbook-parsers"); -var PLUGINS_ROOT = path.resolve(__dirname, 'plugins'); +var PLUGINS_ROOT = path.resolve(__dirname, "plugins"); -describe('Plugins', function () { +describe("Plugins", function () { var book; before(function() { @@ -17,7 +16,7 @@ describe('Plugins', function () { }); }); - describe('Invalid', function() { + describe("Invalid", function() { var plugin; before(function() { @@ -25,12 +24,12 @@ describe('Plugins', function () { plugin.load("./invalid", PLUGINS_ROOT); }); - it('should be detected', function() { + it("should be detected", function() { should(plugin.isValid()).be.exactly(false); }); }); - describe('Empty', function() { + describe("Empty", function() { var plugin; before(function() { @@ -38,11 +37,11 @@ describe('Plugins', function () { plugin.load("./empty", PLUGINS_ROOT); }); - it('should valid a plugin', function() { + it("should valid a plugin", function() { should(plugin.isValid()).be.exactly(true); }); - it('should return an empty list of resources', function() { + it("should return an empty list of resources", function() { return plugin.getResources() .then(function(resources) { _.each(Plugin.RESOURCES, function(resName) { @@ -52,7 +51,7 @@ describe('Plugins', function () { }); }); - describe('Resources', function() { + describe("Resources", function() { var plugin; before(function() { @@ -62,45 +61,45 @@ describe('Plugins', function () { return book.plugins.load(plugin); }); - it('should valid a plugin', function() { + it("should valid a plugin", function() { should(plugin.isValid()).be.exactly(true); }); - describe('Website', function() { - it('should return a valid list of resources', function() { + describe("Website", function() { + it("should return a valid list of resources", function() { return plugin.getResources("website") .then(function(resources) { - resources["js"].should.have.lengthOf(1); + resources.js.should.have.lengthOf(1); }); }); - it('should extend books plugins', function() { + it("should extend books plugins", function() { var resources = book.plugins.resources("website"); - resources["js"].should.have.lengthOf(1); + resources.js.should.have.lengthOf(1); }); }); - describe('eBook', function() { - it('should return a valid list of resources', function() { + describe("eBook", function() { + it("should return a valid list of resources", function() { return plugin.getResources("ebook") .then(function(resources) { - resources["css"].should.have.lengthOf(1); + resources.css.should.have.lengthOf(1); }); }); - it('should extend books plugins', function() { + it("should extend books plugins", function() { var resources = book.plugins.resources("ebook"); // There is resources from highlight plugin and this plugin - resources["css"].should.have.lengthOf(2); - should.exist(_.find(resources["css"], { - path: './resources/test' + resources.css.should.have.lengthOf(2); + should.exist(_.find(resources.css, { + path: "./resources/test" })); }); }); }); - describe('Filters', function() { + describe("Filters", function() { var plugin; before(function() { @@ -110,11 +109,11 @@ describe('Plugins', function () { return book.plugins.load(plugin); }); - it('should valid a plugin', function() { + it("should valid a plugin", function() { should(plugin.isValid()).be.exactly(true); }); - it('should return a map of filters', function() { + it("should return a map of filters", function() { var filters = plugin.getFilters(); _.size(filters).should.equal(2); @@ -122,22 +121,22 @@ describe('Plugins', function () { filters.should.have.property("helloCtx"); }); - it('should correctly extend template filters', function() { - return book.template.renderString('{{ "World"|hello }}') + it("should correctly extend template filters", function() { + return book.template.renderString("{{ \"World\"|hello }}") .then(function(content) { content.should.equal("Hello World"); }); }); - it('should correctly set book as context', function() { - return book.template.renderString('{{ "root"|helloCtx }}') + it("should correctly set book as context", function() { + return book.template.renderString("{{ \"root\"|helloCtx }}") .then(function(content) { content.should.equal("root:"+book.root); }); }); }); - describe('Blocks', function() { + describe("Blocks", function() { var plugin; before(function() { @@ -149,22 +148,22 @@ describe('Plugins', function () { var testTpl = function(str, args, options) { return book.template.renderString(str, args, options) - .then(book.template.postProcess) + .then(book.template.postProcess); }; - it('should valid a plugin', function() { + it("should valid a plugin", function() { should(plugin.isValid()).be.exactly(true); }); - it('should correctly extend template blocks', function() { - return testTpl('{% test %}hello{% endtest %}') + it("should correctly extend template blocks", function() { + return testTpl("{% test %}hello{% endtest %}") .then(function(content) { content.should.equal("testhellotest"); }); }); - it('should correctly accept shortcuts', function() { - return testTpl('$$hello$$', {}, { + it("should correctly accept shortcuts", function() { + return testTpl("$$hello$$", {}, { type: "markdown" }) .then(function(content) { @@ -172,43 +171,50 @@ describe('Plugins', function () { }); }); - it('should correctly extend template blocks with defined end', function() { - return testTpl('{% test2 %}hello{% endtest2end %}') + it("should correctly extend template blocks with defined end", function() { + return testTpl("{% test2 %}hello{% endtest2end %}") .then(function(content) { content.should.equal("test2hellotest2"); }); }); - it('should correctly extend template blocks with sub-blocks', function() { - return testTpl('{% test3join separator=";" %}hello{% also %}world{% endtest3join %}') + it("should correctly extend template blocks with sub-blocks", function() { + return testTpl("{% test3join separator=\";\" %}hello{% also %}world{% endtest3join %}") .then(function(content) { content.should.equal("hello;world"); }); }); - it('should correctly extend template blocks with different sub-blocks', function() { - return testTpl('{% test4join separator=";" %}hello{% also %}the{% finally %}world{% endtest4join %}') + it("should correctly extend template blocks with different sub-blocks", function() { + return testTpl("{% test4join separator=\";\" %}hello{% also %}the{% finally %}world{% endtest4join %}") .then(function(content) { content.should.equal("hello;the;world"); }); }); - it('should correctly extend template blocks with arguments', function() { - return testTpl('{% test5args "a", "b", "c" %}{% endtest5args %}') + it("should correctly extend template blocks with arguments", function() { + return testTpl("{% test5args 'a', 'b', 'c' %}{% endtest5args %}") .then(function(content) { content.should.equal("test5a,b,ctest5"); }); }); - it('should correctly extend template blocks with args and kwargs', function() { - return testTpl('{% test5kwargs "a", "b", "c", d="test", e="test2" %}{% endtest5kwargs %}') + it("should correctly extend template blocks with args and kwargs", function() { + return testTpl("{% test5kwargs 'a', 'b', 'c', d='test', e='test2' %}{% endtest5kwargs %}") .then(function(content) { content.should.equal("test5a,b,c,d:test,e:test2,__keywords:truetest5"); }); }); + + it("should correctly extend template blocks with access to context", function() { + return testTpl("{% set name = 'john' %}{% test6context %}{% endtest6context %}", {}) + .then(function(content) { + content.should.equal("test6johntest6"); + }); + }); }); - describe('Blocks without parsing', function() { + describe("Blocks without parsing", function() { var plugin; before(function() { @@ -222,21 +228,21 @@ describe('Plugins', function () { var filetype = parsers.get(markup); return book.template.renderString(str, args, options) - .then(filetype.page).get('sections').get(0).get('content') - .then(book.template.postProcess) + .then(filetype.page).get("sections").get(0).get("content") + .then(book.template.postProcess); }; - it('should correctly process unparsable for markdown', function() { - return testTpl('.md', '{% test %}**hello**{% endtest %}') + it("should correctly process unparsable for markdown", function() { + return testTpl(".md", "{% test %}**hello**{% endtest %}") .then(function(content) { content.should.equal("<p>test**hello**test</p>\n"); }); }); - it('should correctly process unparsable for asciidoc', function() { - return testTpl('.adoc', '{% test %}**hello**{% endtest %}') + it("should correctly process unparsable for asciidoc", function() { + return testTpl(".adoc", "{% test %}**hello**{% endtest %}") .then(function(content) { - content.should.equal('<div class="paragraph">\n<p>test**hello**test</p>\n</div>'); + content.should.equal("<div class=\"paragraph\">\n<p>test**hello**test</p>\n</div>"); }); }); }); |