diff options
author | Soreine <nicolas@gitbook.com> | 2016-05-09 18:49:02 +0200 |
---|---|---|
committer | Soreine <nicolas@gitbook.com> | 2016-05-11 13:11:31 +0200 |
commit | d85663b153adba5f237055444d18aae05eb4c03b (patch) | |
tree | afa3125552202fbffebcf73dd5e4c2e89d7dff57 | |
parent | 481a7d790cd499c5738768a723bf6075683997f6 (diff) | |
download | gitbook-d85663b153adba5f237055444d18aae05eb4c03b.zip gitbook-d85663b153adba5f237055444d18aae05eb4c03b.tar.gz gitbook-d85663b153adba5f237055444d18aae05eb4c03b.tar.bz2 |
Tests remove/insert articles and update insert signature
-rw-r--r-- | lib/modifiers/summary/__tests__/insertArticle.js | 78 | ||||
-rw-r--r-- | lib/modifiers/summary/__tests__/removeArticle.js | 54 | ||||
-rw-r--r-- | lib/modifiers/summary/insertArticle.js | 4 |
3 files changed, 134 insertions, 2 deletions
diff --git a/lib/modifiers/summary/__tests__/insertArticle.js b/lib/modifiers/summary/__tests__/insertArticle.js new file mode 100644 index 0000000..1ee1c8a --- /dev/null +++ b/lib/modifiers/summary/__tests__/insertArticle.js @@ -0,0 +1,78 @@ +var Summary = require('../../../models/summary'); +var SummaryArticle = require('../../../models/summaryArticle'); +var File = require('../../../models/file'); + +describe('insertArticle', function() { + var insertArticle = require('../insertArticle'); + var summary = Summary.createFromParts(File(), [ + { + articles: [ + { + title: '1.1', + path: '1.1' + }, + { + title: '1.2', + path: '1.2' + } + ] + }, + { + title: 'Part I', + articles: [ + { + title: '2.1', + path: '2.1', + articles: [ + { + title: '2.1.1', + path: '2.1.1' + }, + { + title: '2.1.2', + path: '2.1.2' + } + ] + }, + { + title: '2.2', + path: '2.2' + } + ] + } + ]); + + it('should insert an article at a given level', function() { + var article = SummaryArticle.create({ + title: 'Inserted' + }, 'fake.level'); + + var newSummary = insertArticle(summary, article, '2.1.1'); + + var inserted = newSummary.getByLevel('2.1.1'); + var nextOne = newSummary.getByLevel('2.1.2'); + + expect(inserted.getTitle()).toBe('Inserted'); + expect(inserted.getLevel()).toBe('2.1.1'); + + expect(nextOne.getTitle()).toBe('2.1.1'); + expect(nextOne.getLevel()).toBe('2.1.2'); + }); + + it('should insert an article in last position', function() { + var article = SummaryArticle.create({ + title: 'Inserted' + }, 'fake.level'); + + var newSummary = insertArticle(summary, article, '2.2'); + + var inserted = newSummary.getByLevel('2.2'); + var previousOne = newSummary.getByLevel('2.1'); + + expect(inserted.getTitle()).toBe('Inserted'); + expect(inserted.getLevel()).toBe('2.2'); + + expect(previousOne.getTitle()).toBe('2.1'); // Unchanged + expect(previousOne.getLevel()).toBe('2.1'); + }); +}); diff --git a/lib/modifiers/summary/__tests__/removeArticle.js b/lib/modifiers/summary/__tests__/removeArticle.js new file mode 100644 index 0000000..c961f14 --- /dev/null +++ b/lib/modifiers/summary/__tests__/removeArticle.js @@ -0,0 +1,54 @@ +var Summary = require('../../../models/summary'); +var SummaryArticle = require('../../../models/summaryArticle'); +var File = require('../../../models/file'); + +describe('removeArticle', function() { + var removeArticle = require('../removeArticle'); + var summary = Summary.createFromParts(File(), [ + { + articles: [ + { + title: '1.1', + path: '1.1' + }, + { + title: '1.2', + path: '1.2' + } + ] + }, + { + title: 'Part I', + articles: [ + { + title: '2.1', + path: '2.1', + articles: [ + { + title: '2.1.1', + path: '2.1.1' + }, + { + title: '2.1.2', + path: '2.1.2' + } + ] + }, + { + title: '2.2', + path: '2.2' + } + ] + } + ]); + + it('should remove an article at a given level', function() { + var newSummary = removeArticle(summary, '2.1.1'); + + var removed = newSummary.getByLevel('2.1.1'); + var nextOne = newSummary.getByLevel('2.1.2'); + + expect(removed.getTitle()).toBe('2.1.2'); + expect(nextOne).toBe(null); + }); +}); diff --git a/lib/modifiers/summary/insertArticle.js b/lib/modifiers/summary/insertArticle.js index 849f39e..3a084b3 100644 --- a/lib/modifiers/summary/insertArticle.js +++ b/lib/modifiers/summary/insertArticle.js @@ -8,11 +8,11 @@ var indexArticleLevels = require('./indexArticleLevels'); subsequent article shifted. @param {Summary} summary - @param {String|Article} level: level to insert at @param {Article} article + @param {String|Article} level: level to insert at @return {Summary} */ -function insertArticle(summary, level, article) { +function insertArticle(summary, article, level) { article = SummaryArticle(article); level = is.string(level)? level : level.getLevel(); |