summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2016-04-28 11:35:30 +0200
committerSamy Pessé <samypesse@gmail.com>2016-04-28 11:35:30 +0200
commit78e00db018f1f3e69a612fe8a7cf8787bdef4fd5 (patch)
tree1c9e1a329818ca5fb357910d638f1d37f37fb66c
parente62bc31e6363084fb3e138a5fcfd799105d353b8 (diff)
downloadgitbook-78e00db018f1f3e69a612fe8a7cf8787bdef4fd5.zip
gitbook-78e00db018f1f3e69a612fe8a7cf8787bdef4fd5.tar.gz
gitbook-78e00db018f1f3e69a612fe8a7cf8787bdef4fd5.tar.bz2
Add tests for SummaryModifier.editPartTitle
-rw-r--r--lib/models/__tests__/summary.js1
-rw-r--r--lib/models/summary.js11
-rw-r--r--lib/modifiers/summary/__tests__/editPartTitle.js44
-rw-r--r--lib/parse/parseSummary.js7
4 files changed, 57 insertions, 6 deletions
diff --git a/lib/models/__tests__/summary.js b/lib/models/__tests__/summary.js
index e7b496e..ad040cf 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 444c191..b04630f 100644
--- a/lib/models/summary.js
+++ b/lib/models/summary.js
@@ -20,6 +20,17 @@ Summary.prototype.getParts = function() {
};
/**
+ 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 0000000..d1b916b
--- /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 74df563..ebe47d2 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()