Add basic tests for json generator

This commit is contained in:
Samy Pessé
2016-04-28 15:20:25 +02:00
parent 1360a744a7
commit cb3ee423c9
7 changed files with 72 additions and 7 deletions
+1 -1
View File
@@ -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));
+1 -1
View File
@@ -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));
+1
View File
@@ -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);
+29
View File
@@ -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');
});
});
});
+33
View File
@@ -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;
+1 -1
View File
@@ -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();
+6 -4
View File
@@ -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();