summaryrefslogtreecommitdiffstats
path: root/lib/models
diff options
context:
space:
mode:
authorSamy Pesse <samypesse@gmail.com>2016-04-26 14:25:54 +0200
committerSamy Pesse <samypesse@gmail.com>2016-04-26 14:25:54 +0200
commitce99c8c7061eb9b4a2a5f4ff534d7fbeaf37cad0 (patch)
tree52a562bf762dc23ee6a155ec0bd978ccfad15c8b /lib/models
parentbe828cf004056d143c1e46c10ab29cc147fc14f8 (diff)
downloadgitbook-ce99c8c7061eb9b4a2a5f4ff534d7fbeaf37cad0.zip
gitbook-ce99c8c7061eb9b4a2a5f4ff534d7fbeaf37cad0.tar.gz
gitbook-ce99c8c7061eb9b4a2a5f4ff534d7fbeaf37cad0.tar.bz2
Add more tests for summary
Diffstat (limited to 'lib/models')
-rw-r--r--lib/models/__tests__/summary.js77
-rw-r--r--lib/models/summary.js17
-rw-r--r--lib/models/summaryArticle.js2
-rw-r--r--lib/models/summaryPart.js2
4 files changed, 68 insertions, 30 deletions
diff --git a/lib/models/__tests__/summary.js b/lib/models/__tests__/summary.js
index e641efe..b808307 100644
--- a/lib/models/__tests__/summary.js
+++ b/lib/models/__tests__/summary.js
@@ -4,35 +4,68 @@ describe('Summary', function() {
var File = require('../file');
var Summary = require('../summary');
- describe('createFromEntries', function() {
- var summary = Summary.createFromParts(File(), [
- {
- articles: [
- {
- title: 'My First Article',
- path: 'README.md'
- },
- {
- title: 'My Second Article',
- path: 'article.md'
- }
- ]
- },
- {
- title: 'Test'
- }
- ]);
+ var summary = Summary.createFromParts(File(), [
+ {
+ articles: [
+ {
+ title: 'My First Article',
+ path: 'README.md'
+ },
+ {
+ title: 'My Second Article',
+ path: 'article.md'
+ }
+ ]
+ },
+ {
+ title: 'Test'
+ }
+ ]);
+ describe('createFromEntries', function() {
it('must add all parts', function() {
var parts = summary.getParts();
expect(parts.size).toBe(2);
});
+ });
+
+ describe('getByLevel', function() {
+ it('can return a Part', function() {
+ var part = summary.getByLevel('1');
+
+ expect(part).toBeDefined();
+ expect(part.getArticles().size).toBe(2);
+ });
+
+ it('can return a Part (2)', function() {
+ var part = summary.getByLevel('2');
+
+ expect(part).toBeDefined();
+ expect(part.getTitle()).toBe('Test');
+ expect(part.getArticles().size).toBe(0);
+ });
+
+ it('can return an Article', function() {
+ var article = summary.getByLevel('1.1');
+
+ expect(article).toBeDefined();
+ expect(article.getTitle()).toBe('My First Article');
+ });
+ });
+
+ describe('getByPath', function() {
+ it('return correct article', function() {
+ var article = summary.getByPath('README.md');
+
+ expect(article).toBeDefined();
+ expect(article.getTitle()).toBe('My First Article');
+ });
- it('must index by level', function() {
- var part1 = summary.getByLevel('0');
+ it('return correct article', function() {
+ var article = summary.getByPath('article.md');
- expect(part1).toBeDefined();
- expect(part1.getArticles().size).toBe(2);
+ expect(article).toBeDefined();
+ expect(article.getTitle()).toBe('My Second Article');
});
});
});
diff --git a/lib/models/summary.js b/lib/models/summary.js
index d1df91f..d8d0603 100644
--- a/lib/models/summary.js
+++ b/lib/models/summary.js
@@ -18,17 +18,20 @@ Summary.prototype.getParts = function() {
};
/**
- Return an article using an iterator to find it
+ Return an article using an iterator to find it.
+ if "partIter" is set, it can also return a Part.
@param {Function} iter
- @return {Article}
+ @param {Function} partIter
+ @return {Article|Part}
*/
-Summary.prototype.getArticle = function(iter) {
+Summary.prototype.getArticle = function(iter, partIter) {
var parts = this.getParts();
return parts.reduce(function(result, part) {
if (result) return result;
+ if (partIter && partIter(part)) return part;
return SummaryArticle.findArticle(part, iter);
}, null);
};
@@ -41,9 +44,11 @@ Summary.prototype.getArticle = function(iter) {
@return {Article}
*/
Summary.prototype.getByLevel = function(level) {
- return this.getArticle(function(article) {
+ function iterByLevel(article) {
return (article.getLevel() === level);
- });
+ }
+
+ return this.getArticle(iterByLevel, iterByLevel);
};
/**
@@ -70,7 +75,7 @@ Summary.createFromParts = function createFromParts(file, parts) {
return part;
}
- return SummaryPart.create(part, i);
+ return SummaryPart.create(part, i + 1);
});
return new Summary({
diff --git a/lib/models/summaryArticle.js b/lib/models/summaryArticle.js
index ec1104c..d2fac68 100644
--- a/lib/models/summaryArticle.js
+++ b/lib/models/summaryArticle.js
@@ -108,7 +108,7 @@ SummaryArticle.create = function(def, level) {
if (article instanceof SummaryArticle) {
return article;
}
- return SummaryArticle.create(article, [level, i].join('.'));
+ return SummaryArticle.create(article, [level, i + 1].join('.'));
});
return new SummaryArticle({
diff --git a/lib/models/summaryPart.js b/lib/models/summaryPart.js
index c8c608d..f7a82ce 100644
--- a/lib/models/summaryPart.js
+++ b/lib/models/summaryPart.js
@@ -35,7 +35,7 @@ SummaryPart.create = function(def, level) {
if (article instanceof SummaryArticle) {
return article;
}
- return SummaryArticle.create(article, [level, i].join('.'));
+ return SummaryArticle.create(article, [level, i + 1].join('.'));
});
return new SummaryPart({