summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSoreine <nicolas@gitbook.com>2016-05-09 18:49:02 +0200
committerSoreine <nicolas@gitbook.com>2016-05-11 13:11:31 +0200
commitd85663b153adba5f237055444d18aae05eb4c03b (patch)
treeafa3125552202fbffebcf73dd5e4c2e89d7dff57
parent481a7d790cd499c5738768a723bf6075683997f6 (diff)
downloadgitbook-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.js78
-rw-r--r--lib/modifiers/summary/__tests__/removeArticle.js54
-rw-r--r--lib/modifiers/summary/insertArticle.js4
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();