summaryrefslogtreecommitdiffstats
path: root/lib/plugins
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2016-05-27 11:10:39 +0200
committerSamy Pessé <samypesse@gmail.com>2016-05-27 11:10:39 +0200
commitccb87d5a13ecf6499d701e1e8ca1f9ed52e21d9d (patch)
treef1330211ce466d01ac1947375e6bd04272e279b3 /lib/plugins
parente2e0ca3f0585ab245bae91c7a48178454fe96a44 (diff)
downloadgitbook-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.js27
-rw-r--r--lib/plugins/installPlugin.js47
-rw-r--r--lib/plugins/installPlugins.js43
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');
/**