Add tests for page hook

This commit is contained in:
Samy Pessé
2016-04-18 17:14:55 +02:00
parent c218f7d0e3
commit d07aa13822
5 changed files with 99 additions and 24 deletions
+43 -22
View File
@@ -68,24 +68,8 @@ function setupDefaultBook(files, summary, opts) {
}), opts);
}
// Output a book with a specific generator
function outputDefaultBook(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);
});
});
}
// Output a book with a specific generator
function outputBook(Output, files, opts) {
// Prepare output for a book
function setupOutput(Output, files, opts) {
return setupBook(files, opts)
.then(function(book) {
// Parse the book
@@ -93,13 +77,43 @@ function outputBook(Output, files, opts) {
// Start generation
.then(function() {
var output = new Output(book);
return output.generate()
.thenResolve(output);
return new Output(book);
});
});
}
// 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() {
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
};
+8
View File
@@ -0,0 +1,8 @@
module.exports = {
hooks: {
page: function(page) {
page.sections[0].content = 'Hello (sections) ' + page.content;
return page;
}
}
};
+7
View File
@@ -0,0 +1,7 @@
{
"name": "gitbook-plugin-test-deprecated",
"version": "1.0.0",
"engines": {
"gitbook": "*"
}
}
+4 -2
View File
@@ -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;
}
}
};
+37
View File
@@ -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');
});
});
});
});
});
});