summaryrefslogtreecommitdiffstats
path: root/lib/modifiers/summary/__tests__
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2016-05-11 13:57:21 +0200
committerSamy Pessé <samypesse@gmail.com>2016-05-11 13:57:21 +0200
commit7bd49606e3aceb4078258c6693f53bc129eb5b93 (patch)
treeb61d65f716c402c847973186c6f1dd7b78311827 /lib/modifiers/summary/__tests__
parentd7c86353503106b2672b7948661c1c0aa9e727bb (diff)
parent19e9ff81d2d118bb45d8245da3f1ba4cad95416b (diff)
downloadgitbook-7bd49606e3aceb4078258c6693f53bc129eb5b93.zip
gitbook-7bd49606e3aceb4078258c6693f53bc129eb5b93.tar.gz
gitbook-7bd49606e3aceb4078258c6693f53bc129eb5b93.tar.bz2
Merge pull request #1291 from GitbookIO/summary-modifiers
Summary modifiers
Diffstat (limited to 'lib/modifiers/summary/__tests__')
-rw-r--r--lib/modifiers/summary/__tests__/insertArticle.js78
-rw-r--r--lib/modifiers/summary/__tests__/moveArticle.js2
-rw-r--r--lib/modifiers/summary/__tests__/moveArticleAfter.js82
-rw-r--r--lib/modifiers/summary/__tests__/removeArticle.js54
4 files changed, 215 insertions, 1 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__/moveArticle.js b/lib/modifiers/summary/__tests__/moveArticle.js
index 9a101f6..aed0b94 100644
--- a/lib/modifiers/summary/__tests__/moveArticle.js
+++ b/lib/modifiers/summary/__tests__/moveArticle.js
@@ -42,7 +42,7 @@ describe('moveArticle', function() {
}
]);
- it('should move an article at in place', function() {
+ it('should move an article to the same place', function() {
var newSummary = moveArticle(summary, '2.1', '2.1');
expect(Immutable.is(summary, newSummary)).toBe(true);
diff --git a/lib/modifiers/summary/__tests__/moveArticleAfter.js b/lib/modifiers/summary/__tests__/moveArticleAfter.js
new file mode 100644
index 0000000..c380575
--- /dev/null
+++ b/lib/modifiers/summary/__tests__/moveArticleAfter.js
@@ -0,0 +1,82 @@
+var Immutable = require('immutable');
+var Summary = require('../../../models/summary');
+var File = require('../../../models/file');
+
+describe('moveArticleAfter', function() {
+ var moveArticleAfter = require('../moveArticleAfter');
+ 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('moving right after itself should be invariant', function() {
+ var newSummary = moveArticleAfter(summary, '2.1', '2.1');
+
+ expect(Immutable.is(summary, newSummary)).toBe(true);
+ });
+
+ it('moving after previous one should be invariant too', function() {
+ var newSummary = moveArticleAfter(summary, '2.1', '2.0');
+
+ expect(Immutable.is(summary, newSummary)).toBe(true);
+ });
+
+ it('should move an article after a previous level', function() {
+ var newSummary = moveArticleAfter(summary, '2.2', '2.0');
+ var moved = newSummary.getByLevel('2.1');
+
+ expect(moved.getTitle()).toBe('2.2');
+ expect(newSummary.getByLevel('2.2').getTitle()).toBe('2.1');
+ });
+
+ it('should move an article after a previous and less deep level', function() {
+ var newSummary = moveArticleAfter(summary, '2.1.1', '2.0');
+ var moved = newSummary.getByLevel('2.1');
+
+ expect(moved.getTitle()).toBe('2.1.1');
+ expect(newSummary.getByLevel('2.2.1').getTitle()).toBe('2.1.2');
+ expect(newSummary.getByLevel('2.2').getTitle()).toBe('2.1');
+ });
+
+ it('should move an article after a next level', function() {
+ var newSummary = moveArticleAfter(summary, '2.1', '2.2');
+ var moved = newSummary.getByLevel('2.2');
+
+ expect(moved.getTitle()).toBe('2.1');
+ expect(newSummary.getByLevel('2.1').getTitle()).toBe('2.2');
+ });
+
+});
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);
+ });
+});