MDL-39087 Add new helper methods to the plugin_manager API

These are mainly intended for callers that had to iterate over
get_plugins() result manually.
This commit is contained in:
David Mudrák
2013-04-12 01:44:34 +02:00
parent c6f4c88ffb
commit d7d48b4091
6 changed files with 92 additions and 10 deletions
+25
View File
@@ -49,9 +49,24 @@ class plugin_manager_test extends advanced_testcase {
$this->assertTrue($pluginman instanceof testable_plugin_manager);
}
public function test_get_plugins_of_type() {
$pluginman = testable_plugin_manager::instance();
$mods = $pluginman->get_plugins_of_type('mod');
$this->assertEquals('array', gettype($mods));
$this->assertEquals(2, count($mods));
$this->assertTrue($mods['foo'] instanceof testable_plugininfo_mod);
$this->assertTrue($mods['bar'] instanceof testable_plugininfo_mod);
$foolishes = $pluginman->get_plugins_of_type('foolish');
$this->assertEquals(1, count($foolishes));
$this->assertTrue($foolishes['frog'] instanceof testable_pluginfo_foolish);
$unknown = $pluginman->get_plugins_of_type('muhehe');
$this->assertSame(array(), $unknown);
}
public function test_get_plugins() {
$pluginman = testable_plugin_manager::instance();
$plugins = $pluginman->get_plugins();
$this->assertEquals('array', gettype($plugins));
$this->assertTrue(isset($plugins['mod']['foo']));
$this->assertTrue(isset($plugins['mod']['bar']));
$this->assertTrue(isset($plugins['foolish']['frog']));
@@ -60,6 +75,16 @@ class plugin_manager_test extends advanced_testcase {
$this->assertTrue($plugins['foolish']['frog'] instanceof testable_pluginfo_foolish);
}
public function test_get_subplugins_of_plugin() {
$pluginman = testable_plugin_manager::instance();
$this->assertSame(array(), $pluginman->get_subplugins_of_plugin('mod_missing'));
$this->assertSame(array(), $pluginman->get_subplugins_of_plugin('mod_bar'));
$foosubs = $pluginman->get_subplugins_of_plugin('mod_foo');
$this->assertEquals('array', gettype($foosubs));
$this->assertEquals(1, count($foosubs));
$this->assertTrue($foosubs['foolish_frog'] instanceof testable_pluginfo_foolish);
}
public function test_get_subplugins() {
$pluginman = testable_plugin_manager::instance();
$subplugins = $pluginman->get_subplugins();