From 78e00db018f1f3e69a612fe8a7cf8787bdef4fd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samy=20Pess=C3=A9?= Date: Thu, 28 Apr 2016 11:35:30 +0200 Subject: [PATCH] Add tests for SummaryModifier.editPartTitle --- lib/models/__tests__/summary.js | 1 - lib/models/summary.js | 11 +++++ .../summary/__tests__/editPartTitle.js | 44 +++++++++++++++++++ lib/parse/parseSummary.js | 7 +-- 4 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 lib/modifiers/summary/__tests__/editPartTitle.js diff --git a/lib/models/__tests__/summary.js b/lib/models/__tests__/summary.js index e7b496e22..ad040cf17 100644 --- a/lib/models/__tests__/summary.js +++ b/lib/models/__tests__/summary.js @@ -1,4 +1,3 @@ -jest.autoMockOff(); describe('Summary', function() { var File = require('../file'); diff --git a/lib/models/summary.js b/lib/models/summary.js index 444c191f8..b04630f90 100644 --- a/lib/models/summary.js +++ b/lib/models/summary.js @@ -19,6 +19,17 @@ Summary.prototype.getParts = function() { return this.get('parts'); }; +/** + Return a part by its index + + @param {Number} + @return {Part} +*/ +Summary.prototype.getPart = function(i) { + var parts = this.getParts(); + return parts.get(i); +}; + /** Return an article using an iterator to find it. if "partIter" is set, it can also return a Part. diff --git a/lib/modifiers/summary/__tests__/editPartTitle.js b/lib/modifiers/summary/__tests__/editPartTitle.js new file mode 100644 index 000000000..d1b916b5e --- /dev/null +++ b/lib/modifiers/summary/__tests__/editPartTitle.js @@ -0,0 +1,44 @@ +var Summary = require('../../../models/summary'); +var File = require('../../../models/file'); + +describe('editPartTitle', function() { + var editPartTitle = require('../editPartTitle'); + var summary = Summary.createFromParts(File(), [ + { + articles: [ + { + title: 'My First Article', + path: 'README.md' + }, + { + title: 'My Second Article', + path: 'article.md' + } + ] + }, + { + title: 'Test' + } + ]); + + it('should correctly set title of first part', function() { + var newSummary = editPartTitle(summary, 0, 'Hello World'); + var part = newSummary.getPart(0); + + expect(part.getTitle()).toBe('Hello World'); + }); + + it('should correctly set title of second part', function() { + var newSummary = editPartTitle(summary, 1, 'Hello'); + var part = newSummary.getPart(1); + + expect(part.getTitle()).toBe('Hello'); + }); + + it('should not fail if part doesn\'t exist', function() { + var newSummary = editPartTitle(summary, 3, 'Hello'); + expect(newSummary.getParts().size).toBe(2); + }); +}); + + diff --git a/lib/parse/parseSummary.js b/lib/parse/parseSummary.js index 74df5633c..ebe47d208 100644 --- a/lib/parse/parseSummary.js +++ b/lib/parse/parseSummary.js @@ -16,10 +16,6 @@ function parseSummary(book) { var logger = book.getLogger(); var readmeFile = readme.getFile(); - if (!readmeFile.exists()) { - return Promise.reject(new Error('Summary parsing should be done after readme parsing')); - } - return parseStructureFile(book, 'summary') .spread(function(file, result) { if (!file) { @@ -32,7 +28,8 @@ function parseSummary(book) { // Insert readme as first entry var firstArticle = summary.getFirstArticle(); - if (!firstArticle || firstArticle.getRef() !== readmeFile.getPath()) { + if (readmeFile.exists() && + (!firstArticle || firstArticle.getRef() !== readmeFile.getPath())) { summary = SummaryModifier.unshiftArticle(summary, { title: 'Introduction', ref: readmeFile.getPath()