diff options
Diffstat (limited to 'test/plugins.js')
-rw-r--r-- | test/plugins.js | 271 |
1 files changed, 0 insertions, 271 deletions
diff --git a/test/plugins.js b/test/plugins.js deleted file mode 100644 index 392024a..0000000 --- a/test/plugins.js +++ /dev/null @@ -1,271 +0,0 @@ -var _ = require('lodash'); -var path = require('path'); - -var mock = require('./mock'); -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'); - -function TestPlugin(book, name) { - return new BookPlugin(book, name, path.resolve(PLUGINS_ROOT, 'gitbook-plugin-'+name)); -} - -describe('Plugins', function() { - var book; - - before(function() { - return mock.setupBook({}) - .then(function(_book) { - book = _book; - }); - }); - - describe('Resolve Version', function() { - it('should resolve a plugin version', function() { - return registry.resolve('ga') - .should.be.fulfilled(); - }); - }); - - describe('Installation', function() { - it('should install a plugin from NPM without a specific version', function() { - return registry.install(book, 'ga') - .should.be.fulfilled(); - }); - - it('should install a plugin from NPM with a specific version', function() { - return registry.install(book, 'ga', '1.0.0') - .should.be.fulfilled(); - }); - - it('should correctly install all dependencies (if none)', function() { - return mock.setupBook({}) - .then(function(book) { - var plugins = new PluginsManager(book); - return plugins.install() - .should.be.fulfilledWith(0); - }); - }); - - it('should correctly install all dependencies (if any)', function() { - return mock.setupBook({ - 'book.json': { - plugins: ['ga'] - } - }) - .then(function(book) { - return book.prepareConfig() - .then(function() { - var plugins = new PluginsManager(book); - return plugins.install(); - }); - }) - .should.be.fulfilledWith(1); - }); - - it('should correctly install dependencies from GitHub', function() { - return mock.setupBook({ - 'book.json': { - plugins: ['ga@git+https://github.com/GitbookIO/plugin-ga#master'] - } - }) - .then(function(book) { - return book.prepareConfig() - .then(function() { - var plugins = new PluginsManager(book); - return plugins.install(); - }); - }) - .should.be.fulfilledWith(1); - }); - - // This test requires a SSH key, we only run it locally - if (!process.env.CI) { - it('should correctly install dependencies from GitHub via ssh', function() { - return mock.setupBook({ - 'book.json': { - plugins: ['ga@git@github.com:GitbookIO/plugin-ga.git#master'] - } - }) - .then(function(book) { - return book.prepareConfig() - .then(function() { - var plugins = new PluginsManager(book); - return plugins.install(); - }); - }) - .should.be.fulfilledWith(1); - }); - } - }); - - describe('Loading', function() { - it('should load default plugins', function() { - return mock.outputDefaultBook(Output) - .then(function(output) { - output.plugins.count().should.be.greaterThan(0); - }); - }); - }); - - describe('Configuration', function() { - it('should fail loading a plugin with an invalid configuration', function() { - var plugin = TestPlugin(book, 'test-config'); - return plugin.load(PLUGINS_ROOT) - .should.be.rejectedWith('Error with book\'s configuration: pluginsConfig.test-config.myProperty is required'); - }); - - it('should extend configuration with default properties', function() { - return mock.setupBook({ - 'book.json': { - pluginsConfig: { - 'test-config': { - 'myProperty': 'world' - } - } - } - }) - .then(function(book2) { - return book2.prepareConfig() - .then(function() { - var plugin = TestPlugin(book2, 'test-config'); - return plugin.load(PLUGINS_ROOT); - }) - .then(function() { - book2.config.get('pluginsConfig.test-config.myDefaultProperty', '').should.equal('hello'); - }); - }); - }); - }); - - describe('Resources', function() { - var plugin; - - before(function() { - plugin = TestPlugin(book, 'test-resources'); - return plugin.load(PLUGINS_ROOT); - }); - - - it('should list all resources for website', function() { - return plugin.getResources('website') - .then(function(resources) { - resources.assets.should.equal('./assets'); - - resources.js.should.have.lengthOf(2); - resources.js[0].path.should.equal('gitbook-plugin-test-resources/myfile.js'); - resources.js[1].url.should.equal('https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js'); - - resources.css.should.have.lengthOf(1); - resources.css[0].path.should.equal('gitbook-plugin-test-resources/myfile.css'); - }); - }); - }); - - describe('Filters', function() { - var plugin, filters; - - before(function() { - plugin = TestPlugin(book, 'test-filters'); - return plugin.load(PLUGINS_ROOT) - - .then(function() { - filters = plugin.getFilters(); - }); - }); - - it('should list all filters', function() { - _.size(filters).should.equal(2); - }); - - it('should correctly execute a filter', function() { - filters.hello('World').should.equal('Hello World!'); - }); - - it('should correctly set contexts for filter', function() { - filters.testContext('Hello'); - }); - }); - - describe('Blocks', function() { - var plugin, blocks; - - before(function() { - plugin = TestPlugin(book, 'test-blocks'); - return plugin.load(PLUGINS_ROOT) - - .then(function() { - blocks = plugin.getBlocks(); - }); - }); - - it('should list all blocks', function() { - _.size(blocks).should.equal(2); - }); - - it('should correctly normalize block', function() { - blocks.hello.process({ body: 'World' }).should.equal('Hello World!'); - }); - - it('should correctly set contexts for filter', function() { - blocks.testContext.process({ body: 'Hello' }); - }); - }); - - describe('Hooks', function() { - var plugin; - - before(function() { - plugin = TestPlugin(book, 'test-hooks'); - return plugin.load(PLUGINS_ROOT); - }); - - it('can call a hook', function() { - return plugin.hook('init') - .then(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'); - }); - }); - }); - }); - }); -}); - |