138 lines
4.1 KiB
JavaScript
138 lines
4.1 KiB
JavaScript
var should = require('should');
|
|
var mock = require('./mock');
|
|
var validator = require('../lib/config/validator');
|
|
|
|
describe('Configuration', function() {
|
|
|
|
describe('Validation', function() {
|
|
it('should merge default', function() {
|
|
validator.validate({}).should.have.property('gitbook').which.equal('*');
|
|
});
|
|
|
|
it('should throw error for invalid configuration', function() {
|
|
should.throws(function() {
|
|
validator.validate({
|
|
direction: 'invalid'
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should not throw error for non existing configuration', function() {
|
|
validator.validate({
|
|
style: {
|
|
'pdf': 'test.css'
|
|
}
|
|
});
|
|
});
|
|
|
|
it('should validate plugins as an array', function() {
|
|
validator.validate({
|
|
plugins: ['hello']
|
|
});
|
|
});
|
|
|
|
it('should validate plugins as a string', function() {
|
|
validator.validate({
|
|
plugins: 'hello,world'
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
describe('No configuration', function() {
|
|
var book;
|
|
|
|
before(function() {
|
|
return mock.setupDefaultBook()
|
|
.then(function(_book) {
|
|
book = _book;
|
|
return book.prepareConfig();
|
|
});
|
|
});
|
|
|
|
it('should signal that configuration is not defined', function() {
|
|
book.config.exists().should.not.be.ok();
|
|
});
|
|
});
|
|
|
|
describe('JSON file', function() {
|
|
var book;
|
|
|
|
before(function() {
|
|
return mock.setupDefaultBook({
|
|
'book.json': { title: 'Hello World' }
|
|
})
|
|
.then(function(_book) {
|
|
book = _book;
|
|
return book.prepareConfig();
|
|
});
|
|
});
|
|
|
|
it('should correctly extend configuration', function() {
|
|
book.config.get('title', '').should.equal('Hello World');
|
|
});
|
|
});
|
|
|
|
describe('JS file', function() {
|
|
var book;
|
|
|
|
before(function() {
|
|
return mock.setupDefaultBook({
|
|
'book.js': 'module.exports = { title: "Hello World" };'
|
|
})
|
|
.then(function(_book) {
|
|
book = _book;
|
|
return book.prepareConfig();
|
|
});
|
|
});
|
|
|
|
it('should correctly extend configuration', function() {
|
|
book.config.get('title', '').should.equal('Hello World');
|
|
});
|
|
});
|
|
|
|
describe('Multilingual', function() {
|
|
var book;
|
|
|
|
before(function() {
|
|
return mock.setupDefaultBook({
|
|
'book.json': {
|
|
title: 'Hello World',
|
|
pluginsConfig: {
|
|
'test': {
|
|
'hello': true
|
|
}
|
|
}
|
|
},
|
|
'LANGS.md': '# Languages\n\n'
|
|
+ '* [en](./en)\n'
|
|
+ '* [fr](./fr)\n\n',
|
|
'en/README.md': '# Hello',
|
|
'fr/README.md': '# Bonjour',
|
|
'en/book.json': { description: 'In english' },
|
|
'fr/book.json': { description: 'En francais' }
|
|
})
|
|
.then(function(_book) {
|
|
book = _book;
|
|
return book.parse();
|
|
});
|
|
});
|
|
|
|
it('should correctly extend configuration', function() {
|
|
book.config.get('title', '').should.equal('Hello World');
|
|
book.config.get('description', '').should.equal('');
|
|
|
|
var en = book.books[0];
|
|
en.config.get('title', '').should.equal('Hello World');
|
|
en.config.get('description', '').should.equal('In english');
|
|
en.config.get('pluginsConfig.test.hello').should.equal(true);
|
|
|
|
var fr = book.books[1];
|
|
fr.config.get('title', '').should.equal('Hello World');
|
|
fr.config.get('description', '').should.equal('En francais');
|
|
fr.config.get('pluginsConfig.test.hello').should.equal(true);
|
|
});
|
|
});
|
|
});
|
|
|