blob: 337f2fe701ebb80fbc0fb7b81f495ade7174a5ba [file] [log] [blame]
define(function (require) {
var base_plugins = ['about', 'accounts', 'composer', 'debug', 'goodbyeworld', 'helloworld', 'launchpad', 'logging'];
var registerSuite = require('intern!object');
var assert = require('intern/chai!assert');
var plugin_discoverer = require('intern/dojo/node!../../framework/core/modules/plugin_discoverer.js');
var skyquakeEmitter = require('intern/dojo/node!../../framework/core/modules/skyquakeEmitter.js');
var _ = require('intern/dojo/node!lodash');
var fs = require('intern/dojo/node!fs');
registerSuite({
name: 'plugin_discoverer',
before: function() {
},
after: function() {
// Exit process.
// TODO: Should cleanup plugin_discoverer instead and call that
setTimeout(function() {
var path = process.cwd() + '/plugins/helloworld/test.txt';
fs.unlinkSync(path);
process.exit(0);
});
},
'Test init': function () {
var res = plugin_discoverer.init();
assert.isUndefined(res, 'return value is undefined');
},
'Test config': function() {
var path = process.cwd() + '/plugins';
var res = plugin_discoverer.config({
plugins_path: path
});
assert.isUndefined(res, 'return value is undefined');
},
'Test run plugin add discovery': function() {
var deferred = this.async();
var plugins_detected = [];
skyquakeEmitter.on('plugin_discoverer.plugin_discovered', function(plugin_name) {
plugins_detected.push(plugin_name);
if (_.intersection(plugins_detected, base_plugins).length == 8 ) {
// all expected plugins were discovered
deferred.resolve('All expected plugins discovered');
}
});
var res = plugin_discoverer.run();
},
'Test run plugin update discovery': function() {
var deferred = this.async();
setTimeout(function() {
var path = process.cwd() + '/plugins/helloworld/test.txt';
fs.openSync(path, 'a+');
});
skyquakeEmitter.on('plugin_discoverer.plugin_updated', function(plugin_name) {
deferred.resolve();
});
},
});
});