summaryrefslogtreecommitdiffstats
path: root/test/plugins.js
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2015-09-15 13:36:02 +0200
committerSamy Pessé <samypesse@gmail.com>2015-09-15 13:36:02 +0200
commite1930046599d430a6bb378af62bce78fb9d24ff7 (patch)
tree8e3abd0c5fc3aee6ba81403cb8b1e4b7b0918006 /test/plugins.js
parentfe3a9c33d0395ea9747ab8ef2fec24e81fc92715 (diff)
downloadgitbook-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.js122
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>");
});
});
});