diff options
author | Samy Pesse <samypesse@gmail.com> | 2016-04-26 14:25:54 +0200 |
---|---|---|
committer | Samy Pesse <samypesse@gmail.com> | 2016-04-26 14:25:54 +0200 |
commit | ce99c8c7061eb9b4a2a5f4ff534d7fbeaf37cad0 (patch) | |
tree | 52a562bf762dc23ee6a155ec0bd978ccfad15c8b | |
parent | be828cf004056d143c1e46c10ab29cc147fc14f8 (diff) | |
download | gitbook-ce99c8c7061eb9b4a2a5f4ff534d7fbeaf37cad0.zip gitbook-ce99c8c7061eb9b4a2a5f4ff534d7fbeaf37cad0.tar.gz gitbook-ce99c8c7061eb9b4a2a5f4ff534d7fbeaf37cad0.tar.bz2 |
Add more tests for summary
-rw-r--r-- | lib/models/__tests__/summary.js | 77 | ||||
-rw-r--r-- | lib/models/summary.js | 17 | ||||
-rw-r--r-- | lib/models/summaryArticle.js | 2 | ||||
-rw-r--r-- | lib/models/summaryPart.js | 2 |
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({ |