summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2016-04-18 17:14:55 +0200
committerSamy Pessé <samypesse@gmail.com>2016-04-18 17:14:55 +0200
commitd07aa13822230ee5086bafcb9ea16cb8447fb562 (patch)
tree14259c6254d20919a9964f96f5e90133af1cc689
parentc218f7d0e30d8088ebd09951691647ffed7fe91d (diff)
downloadgitbook-d07aa13822230ee5086bafcb9ea16cb8447fb562.zip
gitbook-d07aa13822230ee5086bafcb9ea16cb8447fb562.tar.gz
gitbook-d07aa13822230ee5086bafcb9ea16cb8447fb562.tar.bz2
Add tests for page hook
-rw-r--r--test/mock.js47
-rw-r--r--test/node_modules/gitbook-plugin-test-deprecated/index.js8
-rw-r--r--test/node_modules/gitbook-plugin-test-deprecated/package.json7
-rw-r--r--test/node_modules/gitbook-plugin-test-hooks/index.js6
-rw-r--r--test/plugins.js37
5 files changed, 90 insertions, 15 deletions
diff --git a/test/mock.js b/test/mock.js
index 5ff9f63..e15c4be 100644
--- a/test/mock.js
+++ b/test/mock.js
@@ -68,38 +68,52 @@ function setupDefaultBook(files, summary, opts) {
}), opts);
}
-// Output a book with a specific generator
-function outputDefaultBook(Output, files, summary, opts) {
- return setupDefaultBook(files, summary, opts)
+// Prepare output for a book
+function setupOutput(Output, files, opts) {
+ return setupBook(files, opts)
.then(function(book) {
// Parse the book
return book.parse()
// Start generation
.then(function() {
- var output = new Output(book);
- return output.generate()
- .thenResolve(output);
+ return new Output(book);
});
});
}
-// Output a book with a specific generator
-function outputBook(Output, files, opts) {
- return setupBook(files, opts)
+// Prepare output for a book
+function setupDefaultOutput(Output, files, summary, opts) {
+ return setupDefaultBook(files, summary, opts)
.then(function(book) {
// Parse the book
return book.parse()
// Start generation
.then(function() {
- var output = new Output(book);
- return output.generate()
- .thenResolve(output);
+ return new Output(book);
});
});
}
+// Output a book with a specific generator
+function outputDefaultBook(Output, files, summary, opts) {
+ return setupDefaultOutput(Output, files, summary, opts)
+ .then(function(output) {
+ return output.generate()
+ .thenResolve(output);
+ });
+}
+
+// Output a book with a specific generator
+function outputBook(Output, files, opts) {
+ return setupOutput(Output, files, opts)
+ .then(function(output) {
+ return output.generate()
+ .thenResolve(output);
+ });
+}
+
// Log an error
function logError(err) {
console.log(err.stack || err);
@@ -107,10 +121,17 @@ function logError(err) {
module.exports = {
fs: nodeFS,
+
setupFS: setupFS,
+
setupBook: setupBook,
- outputBook: outputBook,
setupDefaultBook: setupDefaultBook,
+
+ setupOutput: setupOutput,
+ setupDefaultOutput: setupDefaultOutput,
+
+ outputBook: outputBook,
outputDefaultBook: outputDefaultBook,
+
logError: logError
};
diff --git a/test/node_modules/gitbook-plugin-test-deprecated/index.js b/test/node_modules/gitbook-plugin-test-deprecated/index.js
new file mode 100644
index 0000000..2a77ce3
--- /dev/null
+++ b/test/node_modules/gitbook-plugin-test-deprecated/index.js
@@ -0,0 +1,8 @@
+module.exports = {
+ hooks: {
+ page: function(page) {
+ page.sections[0].content = 'Hello (sections) ' + page.content;
+ return page;
+ }
+ }
+};
diff --git a/test/node_modules/gitbook-plugin-test-deprecated/package.json b/test/node_modules/gitbook-plugin-test-deprecated/package.json
new file mode 100644
index 0000000..9da523c
--- /dev/null
+++ b/test/node_modules/gitbook-plugin-test-deprecated/package.json
@@ -0,0 +1,7 @@
+{
+ "name": "gitbook-plugin-test-deprecated",
+ "version": "1.0.0",
+ "engines": {
+ "gitbook": "*"
+ }
+} \ No newline at end of file
diff --git a/test/node_modules/gitbook-plugin-test-hooks/index.js b/test/node_modules/gitbook-plugin-test-hooks/index.js
index c0666ca..cd9d1b0 100644
--- a/test/node_modules/gitbook-plugin-test-hooks/index.js
+++ b/test/node_modules/gitbook-plugin-test-hooks/index.js
@@ -1,5 +1,3 @@
-var should = require('should');
-
module.exports = {
hooks: {
'init': function() {
@@ -11,6 +9,10 @@ module.exports = {
},
'finish:before': function() {
global._hooks.push('finish:before');
+ },
+ page: function(page) {
+ page.content = 'Hello ' + page.content;
+ return page;
}
}
};
diff --git a/test/plugins.js b/test/plugins.js
index 8d386af..392024a 100644
--- a/test/plugins.js
+++ b/test/plugins.js
@@ -6,6 +6,7 @@ var registry = require('../lib/plugins/registry');
var Output = require('../lib/output/base');
var PluginsManager = require('../lib/plugins');
var BookPlugin = require('../lib/plugins/plugin');
+var JSONOutput = require('../lib/output/json');
var PLUGINS_ROOT = path.resolve(__dirname, 'node_modules');
@@ -229,6 +230,42 @@ describe('Plugins', function() {
global._hooks.should.deepEqual(['init']);
});
});
+
+
+ describe('Hook "page"', function() {
+ var pluginDeprecated;
+
+ before(function() {
+ pluginDeprecated = TestPlugin(book, 'test-deprecated');
+ return pluginDeprecated.load(PLUGINS_ROOT);
+ });
+
+ it('should update content using "content" property', function() {
+ return mock.setupDefaultOutput(JSONOutput)
+ .then(function(output) {
+ output.plugins.load(plugin);
+
+ return output.generate()
+ .then(function() {
+ var json = require(output.resolve('README.json'));
+ json.page.content.should.equal('Hello <p>Hello</p>\n');
+ });
+ });
+ });
+
+ it('should update content using deprecated "sections" property', function() {
+ return mock.setupDefaultOutput(JSONOutput)
+ .then(function(output) {
+ output.plugins.load(pluginDeprecated);
+
+ return output.generate()
+ .then(function() {
+ var json = require(output.resolve('README.json'));
+ json.page.content.should.equal('Hello (sections) <p>Hello</p>\n');
+ });
+ });
+ });
+ });
});
});