add hasPlugin and getPlugin API methods and tests

This commit is contained in:
Hakim El Hattab 2019-04-01 11:07:11 +02:00
parent d6f0f41f77
commit df25fbebba
2 changed files with 40 additions and 2 deletions

View file

@ -1594,6 +1594,29 @@
}
/**
* Checks if a specific plugin has been registered.
*
* @param {String} id Unique plugin identifier
*/
function hasPlugin( id ) {
return !!plugins[id];
}
/**
* Returns the specific plugin instance, if a plugin
* with the given ID has been registered.
*
* @param {String} id Unique plugin identifier
*/
function getPlugin( id ) {
return plugins[id];
}
/**
* Add a custom key binding with optional description to
* be added to the help screen.
@ -5975,8 +5998,10 @@
addKeyBinding: addKeyBinding,
removeKeyBinding: removeKeyBinding,
// Called by plugins to register themselves
// API for registering and retrieving plugins
registerPlugin: registerPlugin,
hasPlugin: hasPlugin,
getPlugin: getPlugin,
// Programatically triggers a keyboard event
triggerKey: function( keyCode ) {

View file

@ -57,6 +57,8 @@
initCounter['PluginD'] += 1;
} };
var PluginE = {};
Reveal.registerPlugin( 'PluginA', PluginA );
Reveal.registerPlugin( 'PluginB', PluginB );
Reveal.registerPlugin( 'PluginC', PluginC );
@ -71,7 +73,7 @@
assert.strictEqual( initCounter['PluginB'], 1, 'prevents duplicate registration' );
});
QUnit.test( 'Can initialie asynchronously', function( assert ) {
QUnit.test( 'Can initialize asynchronously', function( assert ) {
assert.expect( 3 );
var done = assert.async( 2 );
@ -86,6 +88,17 @@
done();
});
} );
QUnit.test( 'Can check if plugin is registered', function( assert ) {
assert.strictEqual( Reveal.hasPlugin( 'PluginA' ), true );
assert.strictEqual( Reveal.hasPlugin( 'PluginE' ), false );
Reveal.registerPlugin( 'PluginE', PluginE );
assert.strictEqual( Reveal.hasPlugin( 'PluginE' ), true );
} );
QUnit.test( 'Can retrieve plugin instance', function( assert ) {
assert.strictEqual( Reveal.getPlugin( 'PluginB' ), PluginB );
} );
</script>
</body>