diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-05-27 11:10:39 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-05-27 11:10:39 +0200 |
commit | ccb87d5a13ecf6499d701e1e8ca1f9ed52e21d9d (patch) | |
tree | f1330211ce466d01ac1947375e6bd04272e279b3 /lib/plugins | |
parent | e2e0ca3f0585ab245bae91c7a48178454fe96a44 (diff) | |
download | gitbook-ccb87d5a13ecf6499d701e1e8ca1f9ed52e21d9d.zip gitbook-ccb87d5a13ecf6499d701e1e8ca1f9ed52e21d9d.tar.gz gitbook-ccb87d5a13ecf6499d701e1e8ca1f9ed52e21d9d.tar.bz2 |
Add unit tests for installPlugin
Diffstat (limited to 'lib/plugins')
-rw-r--r-- | lib/plugins/__tests__/installPlugin.js | 27 | ||||
-rw-r--r-- | lib/plugins/installPlugin.js | 47 | ||||
-rw-r--r-- | lib/plugins/installPlugins.js | 43 |
3 files changed, 75 insertions, 42 deletions
diff --git a/lib/plugins/__tests__/installPlugin.js b/lib/plugins/__tests__/installPlugin.js new file mode 100644 index 0000000..f98b369 --- /dev/null +++ b/lib/plugins/__tests__/installPlugin.js @@ -0,0 +1,27 @@ +var path = require('path'); + +var PluginDependency = require('../../models/pluginDependency'); +var Book = require('../../models/book'); +var NodeFS = require('../../fs/node'); +var installPlugin = require('../installPlugin'); + +var Parse = require('../../parse'); + +describe('installPlugin', function() { + var book; + + before(function() { + var fs = NodeFS(path.resolve(__dirname, '../../../')); + var baseBook = Book.createForFS(fs); + + return Parse.parseConfig(baseBook) + .then(function(_book) { + book = _book; + }); + }); + + it('must install a plugin from NPM', function() { + var dep = PluginDependency.createFromString('ga'); + return installPlugin(book, dep); + }); +}); diff --git a/lib/plugins/installPlugin.js b/lib/plugins/installPlugin.js new file mode 100644 index 0000000..37852df --- /dev/null +++ b/lib/plugins/installPlugin.js @@ -0,0 +1,47 @@ +var npmi = require('npmi'); + +var Promise = require('../utils/promise'); +var resolveVersion = require('./resolveVersion'); + +/** + Install a plugin for a book + + @param {Book} + @param {PluginDependency} + @return {Promise} +*/ +function installPlugin(book, plugin) { + var logger = book.getLogger(); + + var installFolder = book.getRoot(); + var name = plugin.getName(); + var requirement = plugin.getVersion(); + + logger.info.ln(''); + logger.info.ln('installing plugin "' + name + '"'); + + // Find a version to install + return resolveVersion(plugin) + .then(function(version) { + if (!version) { + throw new Error('Found no satisfactory version for plugin "' + name + '" with requirement "' + requirement + '"'); + } + + logger.info.ln('install plugin "' + name +'" (' + requirement + ') from NPM with version', version); + return Promise.nfcall(npmi, { + 'name': plugin.getNpmID(), + 'version': version, + 'path': installFolder, + 'npmLoad': { + 'loglevel': 'silent', + 'loaded': true, + 'prefix': installFolder + } + }); + }) + .then(function() { + logger.info.ok('plugin "' + name + '" installed with success'); + }); +} + +module.exports = installPlugin; diff --git a/lib/plugins/installPlugins.js b/lib/plugins/installPlugins.js index 3137a0a..a0365b3 100644 --- a/lib/plugins/installPlugins.js +++ b/lib/plugins/installPlugins.js @@ -3,48 +3,7 @@ var npmi = require('npmi'); var pkg = require('../../package.json'); var DEFAULT_PLUGINS = require('../constants/defaultPlugins'); var Promise = require('../utils/promise'); -var resolveVersion = require('./resolveVersion'); - -/** - Install a plugin for a book - - @param {Book} - @param {PluginDependency} - @return {Promise} -*/ -function installPlugin(book, plugin) { - var logger = book.getLogger(); - - var installFolder = book.getRoot(); - var name = plugin.getName(); - var requirement = plugin.getVersion(); - - logger.info.ln(''); - logger.info.ln('installing plugin "' + name + '"'); - - // Find a version to install - return resolveVersion(plugin) - .then(function(version) { - if (!version) { - throw new Error('Found no satisfactory version for plugin "' + name + '" with requirement "' + requirement + '"'); - } - - logger.info.ln('install plugin "' + name +'" (' + requirement + ') from NPM with version', version); - return Promise.nfcall(npmi, { - 'name': plugin.getNpmID(), - 'version': version, - 'path': installFolder, - 'npmLoad': { - 'loglevel': 'silent', - 'loaded': true, - 'prefix': installFolder - } - }); - }) - .then(function() { - logger.info.ok('plugin "' + name + '" installed with success'); - }); -} +var installPlugin = require('./installPlugin'); /** |