mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-21 01:53:26 +00:00
Add basic tests for json generator
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
function indexArticleLevels(article, baseLevel) {
|
||||
baseLevel = baseLevel || article.getLevel();
|
||||
var articles = article.getArticle();
|
||||
var articles = article.getArticles();
|
||||
|
||||
articles = articles.map(function(inner, i) {
|
||||
return indexArticleLevels(inner, baseLevel + '.' + (i + 1));
|
||||
|
||||
@@ -9,7 +9,7 @@ var indexArticleLevels = require('./indexArticleLevels');
|
||||
*/
|
||||
function indexPartLevels(part, index) {
|
||||
var baseLevel = String(index + 1);
|
||||
var articles = part.getArticle();
|
||||
var articles = part.getArticles();
|
||||
|
||||
articles = articles.map(function(inner, i) {
|
||||
return indexArticleLevels(inner, baseLevel + '.' + (i + 1));
|
||||
|
||||
@@ -18,6 +18,7 @@ function unshiftArticle(summary, article) {
|
||||
|
||||
var articles = part.getArticles();
|
||||
articles = articles.unshift(article);
|
||||
part = part.set('articles', articles);
|
||||
|
||||
parts = parts.set(0, part);
|
||||
summary = summary.set('parts', parts);
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
var generateMock = require('../generateMock');
|
||||
var JSONGenerator = require('../json');
|
||||
|
||||
describe('JSONGenerator', function() {
|
||||
|
||||
pit('should generate a README.json', function() {
|
||||
return generateMock(JSONGenerator, {
|
||||
'README.md': 'Hello World'
|
||||
})
|
||||
.then(function(folder) {
|
||||
expect(folder).toHaveFile('README.json');
|
||||
});
|
||||
});
|
||||
|
||||
pit('should generate a json file for each articles', function() {
|
||||
return generateMock(JSONGenerator, {
|
||||
'README.md': 'Hello World',
|
||||
'SUMMARY.md': '# Summary\n\n* [Page](test/page.md)',
|
||||
'test': {
|
||||
'page.md': 'Hello 2'
|
||||
}
|
||||
})
|
||||
.then(function(folder) {
|
||||
expect(folder).toHaveFile('README.json');
|
||||
expect(folder).toHaveFile('test/page.json');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
var tmp = require('tmp');
|
||||
|
||||
var Book = require('../models/book');
|
||||
var createMockFS = require('../fs/mock');
|
||||
var parseBook = require('../parse/parseBook');
|
||||
var generateBook = require('./generateBook');
|
||||
|
||||
|
||||
/**
|
||||
Generate a book using JSON generator
|
||||
And returns the path to the output dir.
|
||||
|
||||
FOR TESTING PURPOSE ONLY
|
||||
|
||||
@param {Generator}
|
||||
@param {Map<String:String|Map>} files
|
||||
@return {Promise<String>}
|
||||
*/
|
||||
function generateMock(Generator, files) {
|
||||
var fs = createMockFS(files);
|
||||
var book = Book.createForFS(fs);
|
||||
var dir = tmp.dirSync();
|
||||
|
||||
return parseBook(book)
|
||||
.then(function(resultBook) {
|
||||
return generateBook(Generator, resultBook, {
|
||||
root: dir.name
|
||||
});
|
||||
})
|
||||
.thenResolve(dir.name);
|
||||
}
|
||||
|
||||
module.exports = generateMock;
|
||||
@@ -11,7 +11,7 @@ var CODEBLOCK = 'code';
|
||||
Return default modifier to prepare a page for
|
||||
rendering.
|
||||
|
||||
@return <Array>
|
||||
@return {Array<Modifier>}
|
||||
*/
|
||||
function getModifiers(output, page) {
|
||||
var book = output.getBook();
|
||||
|
||||
@@ -16,13 +16,15 @@ function parseSummary(book) {
|
||||
|
||||
return parseStructureFile(book, 'summary')
|
||||
.spread(function(file, result) {
|
||||
var summary;
|
||||
|
||||
if (!file) {
|
||||
logger.warn.ln('no summary file in this book');
|
||||
return book;
|
||||
summary = Summary();
|
||||
} else {
|
||||
logger.debug.ln('summary file found at', file.getPath());
|
||||
summary = Summary.createFromParts(file, result.parts);
|
||||
}
|
||||
logger.debug.ln('summary file found at', file.getPath());
|
||||
|
||||
var summary = Summary.createFromParts(file, result.parts);
|
||||
|
||||
// Insert readme as first entry
|
||||
var firstArticle = summary.getFirstArticle();
|
||||
|
||||
Reference in New Issue
Block a user