plugin tests

v1.18.x
barisusakli 9 years ago
parent 85ca547423
commit bfcef27c47

@ -5,7 +5,7 @@ var databaseName = nconf.get('database');
var winston = require('winston'); var winston = require('winston');
if (!databaseName) { if (!databaseName) {
winston.info('Database type not set! Run ./nodebb setup'); winston.error(new Error('Database type not set! Run ./nodebb setup'));
process.exit(); process.exit();
} }

@ -33,6 +33,7 @@ var middleware;
Plugins.customLanguageFallbacks = {}; Plugins.customLanguageFallbacks = {};
Plugins.libraryPaths = []; Plugins.libraryPaths = [];
Plugins.versionWarning = []; Plugins.versionWarning = [];
Plugins.languageCodes = [];
Plugins.initialized = false; Plugins.initialized = false;
@ -83,11 +84,6 @@ var middleware;
Plugins.acpScripts.length = 0; Plugins.acpScripts.length = 0;
Plugins.libraryPaths.length = 0; Plugins.libraryPaths.length = 0;
// Plugins.registerHook('core', {
// hook: 'static:app.load',
// method: addLanguages
// });
async.waterfall([ async.waterfall([
function (next) { function (next) {
// Build language code list // Build language code list

@ -112,7 +112,6 @@ module.exports = function (Plugins) {
} }
hookObj.method(params, next); hookObj.method(params, next);
}, function (err, values) { }, function (err, values) {
if (err) { if (err) {
winston.error('[plugins] ' + hook + ', ' + err.message); winston.error('[plugins] ' + hook + ', ' + err.message);

@ -1,16 +1,16 @@
'use strict'; 'use strict';
var fs = require('fs'), var fs = require('fs');
path = require('path'), var path = require('path');
semver = require('semver'), var semver = require('semver');
async = require('async'), var async = require('async');
winston = require('winston'), var winston = require('winston');
nconf = require('nconf'), var nconf = require('nconf');
_ = require('underscore'), var _ = require('underscore');
file = require('../file'); var file = require('../file');
var utils = require('../../public/src/utils'), var utils = require('../../public/src/utils');
meta = require('../meta'); var meta = require('../meta');
module.exports = function (Plugins) { module.exports = function (Plugins) {
@ -217,8 +217,7 @@ module.exports = function (Plugins) {
return callback(); return callback();
} }
var pathToFolder = path.join(__dirname, '../../node_modules/', pluginData.id, pluginData.languages), var pathToFolder = path.join(__dirname, '../../node_modules/', pluginData.id, pluginData.languages);
fallbackMap = {};
utils.walk(pathToFolder, function (err, languages) { utils.walk(pathToFolder, function (err, languages) {
if (err) { if (err) {

@ -0,0 +1,76 @@
'use strict';
/*global require*/
var assert = require('assert');
var path = require('path');
var nconf = require('nconf');
var db = require('./mocks/databasemock');
var plugins = require('../src/plugins');
describe('Plugins', function () {
it('should load plugin data', function (done) {
var pluginId = 'nodebb-plugin-markdown';
plugins.loadPlugin(path.join(nconf.get('base_dir'), 'node_modules/' + pluginId), function (err) {
assert.ifError(err);
assert(plugins.libraries[pluginId]);
assert(plugins.loadedHooks['static:app.load']);
assert(plugins.staticDirs['nodebb-plugin-markdown/js']);
assert.notEqual(plugins.lessFiles.indexOf('nodebb-plugin-markdown/public/less/default.less'), -1);
done();
});
});
it('should return true of hook has listeners', function (done) {
assert(plugins.hasListeners('filter:parse.post'));
done();
});
it('should register and fire a filter hook', function (done) {
function filterMethod1(data, callback) {
data.foo ++;
callback(null, data);
}
function filterMethod2(data, callback) {
data.foo += 5;
callback(null, data);
}
plugins.registerHook('test-plugin', {hook: 'filter:test.hook', method: filterMethod1});
plugins.registerHook('test-plugin', {hook: 'filter:test.hook', method: filterMethod2});
plugins.fireHook('filter:test.hook', {foo: 1}, function (err, data) {
assert.ifError(err);
assert.equal(data.foo, 7);
done();
});
});
it('should register and fire an action hook', function (done) {
function actionMethod(data) {
assert.equal(data.bar, 'test');
done();
}
plugins.registerHook('test-plugin', {hook: 'action:test.hook', method: actionMethod});
plugins.fireHook('action:test.hook', {bar: 'test'});
});
it('should register and fire a static hook', function (done) {
function actionMethod(data, callback) {
assert.equal(data.bar, 'test');
callback();
}
plugins.registerHook('test-plugin', {hook: 'static:test.hook', method: actionMethod});
plugins.fireHook('static:test.hook', {bar: 'test'}, function (err) {
assert.ifError(err);
done()
});
});
});
Loading…
Cancel
Save