summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Preynat <johan.preynat@gmail.com>2016-05-27 15:06:08 +0200
committerJohan Preynat <johan.preynat@gmail.com>2016-05-27 15:06:08 +0200
commit1afb23cadad7a3fc6c85a17c2c75bb3c6ed14ca8 (patch)
tree341e7022040911c3168aa1bc63dd8a59a8d0429e
parenta3b0f3f868ec231bed67b135f5c66a3c26b2a147 (diff)
downloadgitbook-1afb23cadad7a3fc6c85a17c2c75bb3c6ed14ca8.zip
gitbook-1afb23cadad7a3fc6c85a17c2c75bb3c6ed14ca8.tar.gz
gitbook-1afb23cadad7a3fc6c85a17c2c75bb3c6ed14ca8.tar.bz2
Add test file for sortPlugins()
-rw-r--r--lib/plugins/__tests__/sortPlugins.js70
1 files changed, 70 insertions, 0 deletions
diff --git a/lib/plugins/__tests__/sortPlugins.js b/lib/plugins/__tests__/sortPlugins.js
new file mode 100644
index 0000000..2e1b594
--- /dev/null
+++ b/lib/plugins/__tests__/sortPlugins.js
@@ -0,0 +1,70 @@
+var PluginDependency = require('../../models/pluginDependency');
+var sortPlugins = require('../sortPlugins');
+var listAll = require('../listAll');
+var THEME_PREFIX = require('../../constants/themePrefix');
+
+
+/**
+ Check if a plugin is a theme given its name
+
+ @return {Boolean}
+*/
+function isTheme(name) {
+ return (name && name.indexOf(THEME_PREFIX) === 0);
+}
+
+describe('sortPlugins', function() {
+ it('must load themes after plugins', function() {
+ var deps = PluginDependency.listFromString('theme-faq'),
+ allPlugins = listAll(deps);
+
+ return sortPlugins(allPlugins, [])
+ .then(function(sorted) {
+ var plugins = sorted.slice(0, -2),
+ themes = sorted.slice(-2);
+
+ var pluginsOk = plugins.every(function(plugin) {
+ return !isTheme(plugin.getName());
+ });
+
+ var themesOk = themes.every(function(theme) {
+ return isTheme(theme.getName());
+ });
+
+ expect(pluginsOk).toBe(true);
+ expect(plugins.has('search')).toBe(true);
+
+ expect(themesOk).toBe(true);
+ expect(themes.size).toBe(2);
+ expect(themes.has('theme-faq')).toBe(true);
+ expect(themes.has('theme-default')).toBe(true);
+ });
+ });
+
+ it('must load themes after plugins with a complex dependencies list', function() {
+ var deps = PluginDependency.listFromString('comment,theme-faq,-search,ga'),
+ allPlugins = listAll(deps);
+
+ return sortPlugins(allPlugins, [])
+ .then(function(sorted) {
+ var plugins = sorted.slice(0, -2),
+ themes = sorted.slice(-2);
+
+ var pluginsOk = plugins.every(function(plugin) {
+ return !isTheme(plugin.getName());
+ });
+
+ var themesOk = themes.every(function(theme) {
+ return isTheme(theme.getName());
+ });
+
+ expect(pluginsOk).toBe(true);
+ expect(plugins.has('search')).toBe(false);
+
+ expect(themesOk).toBe(true);
+ expect(themes.size).toBe(2);
+ expect(themes.has('theme-faq')).toBe(true);
+ expect(themes.has('theme-default')).toBe(true);
+ });
+ });
+}); \ No newline at end of file