Rift.IO OSM R1 Initial Submission
Signed-off-by: Jeremy Mordkoff <jeremy.mordkoff@riftio.com>
diff --git a/skyquake/tests/unit/plugin_discoverer.js b/skyquake/tests/unit/plugin_discoverer.js
new file mode 100644
index 0000000..337f2fe
--- /dev/null
+++ b/skyquake/tests/unit/plugin_discoverer.js
@@ -0,0 +1,62 @@
+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();
+ });
+ },
+ });
+});