summaryrefslogtreecommitdiffstats
path: root/test/plugins.js
diff options
context:
space:
mode:
authorSamy Pesse <samypesse@gmail.com>2016-04-30 22:06:16 +0200
committerSamy Pesse <samypesse@gmail.com>2016-04-30 22:06:16 +0200
commitc1d53ec11fbe085932df911bda5686b7bf671f53 (patch)
tree97ae6db641eb79ec9b061af136a0b2e3c549db55 /test/plugins.js
parent36b49c66c6b75515bc84dd678fd52121a313e8d2 (diff)
downloadgitbook-c1d53ec11fbe085932df911bda5686b7bf671f53.zip
gitbook-c1d53ec11fbe085932df911bda5686b7bf671f53.tar.gz
gitbook-c1d53ec11fbe085932df911bda5686b7bf671f53.tar.bz2
Switch parsers to a model
Diffstat (limited to 'test/plugins.js')
-rw-r--r--test/plugins.js271
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');
- });
- });
- });
- });
- });
-});
-