summaryrefslogtreecommitdiffstats
path: root/lib/parse/__tests__
diff options
context:
space:
mode:
Diffstat (limited to 'lib/parse/__tests__')
-rw-r--r--lib/parse/__tests__/parseBook.js55
-rw-r--r--lib/parse/__tests__/parseGlossary.js36
-rw-r--r--lib/parse/__tests__/parseIgnore.js40
-rw-r--r--lib/parse/__tests__/parseReadme.js36
-rw-r--r--lib/parse/__tests__/parseSummary.js34
5 files changed, 201 insertions, 0 deletions
diff --git a/lib/parse/__tests__/parseBook.js b/lib/parse/__tests__/parseBook.js
new file mode 100644
index 0000000..25d1802
--- /dev/null
+++ b/lib/parse/__tests__/parseBook.js
@@ -0,0 +1,55 @@
+var Book = require('../../models/book');
+var createMockFS = require('../../fs/mock');
+
+describe('parseBook', function() {
+ var parseBook = require('../parseBook');
+
+ pit('should parse multilingual book', function() {
+ var fs = createMockFS({
+ 'LANGS.md': '# Languages\n\n* [en](en)\n* [fr](fr)',
+ 'en': {
+ 'README.md': 'Hello'
+ },
+ 'fr': {
+ 'README.md': 'Bonjour'
+ }
+ });
+ var book = Book.createForFS(fs);
+
+ return parseBook(book)
+ .then(function(resultBook) {
+ var languages = resultBook.getLanguages();
+ var books = resultBook.getBooks();
+
+ expect(resultBook.isMultilingual()).toBe(true);
+ expect(languages.getList().size).toBe(2);
+ expect(books.size).toBe(2);
+ });
+ });
+
+ pit('should parse book in a directory', function() {
+ var fs = createMockFS({
+ 'book.json': JSON.stringify({
+ root: './test'
+ }),
+ 'test': {
+ 'README.md': 'Hello World',
+ 'SUMMARY.md': '# Summary\n\n* [Page](page.md)\n',
+ 'page.md': 'Page'
+ }
+ });
+ var book = Book.createForFS(fs);
+
+ return parseBook(book)
+ .then(function(resultBook) {
+ var readme = resultBook.getReadme();
+ var summary = resultBook.getSummary();
+ var articles = summary.getArticlesAsList();
+
+ expect(summary.getFile().exists()).toBe(true);
+ expect(readme.getFile().exists()).toBe(true);
+ expect(articles.size).toBe(2);
+ });
+ });
+
+});
diff --git a/lib/parse/__tests__/parseGlossary.js b/lib/parse/__tests__/parseGlossary.js
new file mode 100644
index 0000000..53805fe
--- /dev/null
+++ b/lib/parse/__tests__/parseGlossary.js
@@ -0,0 +1,36 @@
+var Book = require('../../models/book');
+var createMockFS = require('../../fs/mock');
+
+describe('parseGlossary', function() {
+ var parseGlossary = require('../parseGlossary');
+
+ pit('should parse glossary if exists', function() {
+ var fs = createMockFS({
+ 'GLOSSARY.md': '# Glossary\n\n## Hello\nDescription for hello'
+ });
+ var book = Book.createForFS(fs);
+
+ return parseGlossary(book)
+ .then(function(resultBook) {
+ var glossary = resultBook.getGlossary();
+ var file = glossary.getFile();
+ var entries = glossary.getEntries();
+
+ expect(file.exists()).toBeTruthy();
+ expect(entries.size).toBe(1);
+ });
+ });
+
+ pit('should not fail if doesn\'t exist', function() {
+ var fs = createMockFS({});
+ var book = Book.createForFS(fs);
+
+ return parseGlossary(book)
+ .then(function(resultBook) {
+ var glossary = resultBook.getGlossary();
+ var file = glossary.getFile();
+
+ expect(file.exists()).toBeFalsy();
+ });
+ });
+});
diff --git a/lib/parse/__tests__/parseIgnore.js b/lib/parse/__tests__/parseIgnore.js
new file mode 100644
index 0000000..bee4236
--- /dev/null
+++ b/lib/parse/__tests__/parseIgnore.js
@@ -0,0 +1,40 @@
+var Book = require('../../models/book');
+var createMockFS = require('../../fs/mock');
+
+describe('parseIgnore', function() {
+ var parseIgnore = require('../parseIgnore');
+ var fs = createMockFS({
+ '.ignore': 'test-1.js',
+ '.gitignore': 'test-2.js\ntest-3.js',
+ '.bookignore': '!test-3.js',
+ 'test-1.js': '1',
+ 'test-2.js': '2',
+ 'test-3.js': '3'
+ });
+
+ function getBook() {
+ var book = Book.createForFS(fs);
+ return parseIgnore(book);
+ }
+
+ pit('should load rules from .ignore', function() {
+ return getBook()
+ .then(function(book) {
+ expect(book.isFileIgnored('test-1.js')).toBeTruthy();
+ });
+ });
+
+ pit('should load rules from .gitignore', function() {
+ return getBook()
+ .then(function(book) {
+ expect(book.isFileIgnored('test-2.js')).toBeTruthy();
+ });
+ });
+
+ pit('should load rules from .bookignore', function() {
+ return getBook()
+ .then(function(book) {
+ expect(book.isFileIgnored('test-3.js')).toBeFalsy();
+ });
+ });
+});
diff --git a/lib/parse/__tests__/parseReadme.js b/lib/parse/__tests__/parseReadme.js
new file mode 100644
index 0000000..1b1567b
--- /dev/null
+++ b/lib/parse/__tests__/parseReadme.js
@@ -0,0 +1,36 @@
+var Promise = require('../../utils/promise');
+var Book = require('../../models/book');
+var createMockFS = require('../../fs/mock');
+
+describe('parseReadme', function() {
+ var parseReadme = require('../parseReadme');
+
+ pit('should parse summary if exists', function() {
+ var fs = createMockFS({
+ 'README.md': '# Hello\n\nAnd here is the description.'
+ });
+ var book = Book.createForFS(fs);
+
+ return parseReadme(book)
+ .then(function(resultBook) {
+ var readme = resultBook.getReadme();
+ var file = readme.getFile();
+
+ expect(file.exists()).toBeTruthy();
+ expect(readme.getTitle()).toBe('Hello');
+ expect(readme.getDescription()).toBe('And here is the description.');
+ });
+ });
+
+ pit('should fail if doesn\'t exist', function() {
+ var fs = createMockFS({});
+ var book = Book.createForFS(fs);
+
+ return parseReadme(book)
+ .then(function(resultBook) {
+ throw new Error('It should have fail');
+ }, function() {
+ return Promise();
+ });
+ });
+});
diff --git a/lib/parse/__tests__/parseSummary.js b/lib/parse/__tests__/parseSummary.js
new file mode 100644
index 0000000..4b4650d
--- /dev/null
+++ b/lib/parse/__tests__/parseSummary.js
@@ -0,0 +1,34 @@
+var Book = require('../../models/book');
+var createMockFS = require('../../fs/mock');
+
+describe('parseSummary', function() {
+ var parseSummary = require('../parseSummary');
+
+ pit('should parse summary if exists', function() {
+ var fs = createMockFS({
+ 'SUMMARY.md': '# Summary\n\n* [Hello](hello.md)'
+ });
+ var book = Book.createForFS(fs);
+
+ return parseSummary(book)
+ .then(function(resultBook) {
+ var summary = resultBook.getSummary();
+ var file = summary.getFile();
+
+ expect(file.exists()).toBeTruthy();
+ });
+ });
+
+ pit('should not fail if doesn\'t exist', function() {
+ var fs = createMockFS({});
+ var book = Book.createForFS(fs);
+
+ return parseSummary(book)
+ .then(function(resultBook) {
+ var summary = resultBook.getSummary();
+ var file = summary.getFile();
+
+ expect(file.exists()).toBeFalsy();
+ });
+ });
+});