diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-01-22 21:04:36 +0100 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-01-22 21:04:36 +0100 |
commit | 877f2e477b010f9f37a9044606f110a90f077680 (patch) | |
tree | 5cd61cf3b00ba10dc6110535ed9fdf67d8baba72 /test/mock.js | |
parent | c8e2fc0e57d223c01a51d6ee186fc1662cd74d13 (diff) | |
download | gitbook-877f2e477b010f9f37a9044606f110a90f077680.zip gitbook-877f2e477b010f9f37a9044606f110a90f077680.tar.gz gitbook-877f2e477b010f9f37a9044606f110a90f077680.tar.bz2 |
Start rewrite
Diffstat (limited to 'test/mock.js')
-rw-r--r-- | test/mock.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/test/mock.js b/test/mock.js new file mode 100644 index 0000000..f562fa9 --- /dev/null +++ b/test/mock.js @@ -0,0 +1,61 @@ +var Q = require('q'); +var _ = require('lodash'); +var tmp = require('tmp'); +var path = require('path'); + +require('should'); +require('should-promised'); + +var Book = require('../').Book; +var NodeFS = require('../lib/fs/node'); + +// Create filesystem instance for testing +var fs = new NodeFS(); + +function setupFS(fs, rootFolder, files) { + return _.chain(_.pairs(files)) + .sortBy(0) + .reduce(function(prev, pair) { + return prev.then(function() { + var filename = path.resolve(rootFolder, pair[0]); + var buf = pair[1]; + + if (_.isObject(buf)) buf = JSON.stringify(buf); + if (_.isString(buf)) buf = new Buffer(buf, 'utf-8'); + + return fs.write(filename, buf); + }); + }, Q()) + .value() + .then(function() { + return fs; + }); +} + +// Setup a mock book for testing using a map of files +function setupBook(files, opts) { + opts = opts || {}; + + return Q.nfcall(tmp.dir.bind(tmp)).get(0) + .then(function(folder) { + opts.fs = fs; + opts.root = folder; + return setupFS(fs, folder, files); + }) + .then(function(fs) { + return new Book(opts); + }); +} + +// Setup a book with default README/SUMMARY +function setupDefaultBook(files, opts) { + return setupBook(_.defaults(files || {}, { + 'README.md': 'Hello', + 'SUMMARY.md': '# Summary' + }), opts); +} + +module.exports = { + setupBook: setupBook, + setupDefaultBook: setupDefaultBook +}; |