'Get plugin info', 'description' => 'Verify that plugin type definitions can properly set and overide values.', 'group' => 'ctools', 'dependencies' => array('ctools'), ); } /** * {@inheritdoc} */ public function setUp(array $modules = array()) { $modules[] = 'ctools'; $modules[] = 'ctools_plugin_test'; parent::setUp($modules); } /** * Assert helper to check that a specific plugin function exists. * * @param $module * The module that owns the plugin. * @param $type * The type of plugin. * @param $id * The id of the specific plugin to load. * @param $function * The identifier of the function. For example, 'settings form'. */ protected function assertPluginFunction($module, $type, $id, $function = 'function') { $func = ctools_plugin_load_function($module, $type, $id, $function); $this->assertTrue(function_exists($func), t('Plugin @plugin of plugin type @module:@type successfully retrieved @retrieved for @function.', array( '@plugin' => $id, '@module' => $module, '@type' => $type, '@function' => $function, '@retrieved' => $func, ))); } /** * Assert helper to check that a specific plugin function does NOT exist. * * @param $module * The module that owns the plugin. * @param $type * The type of plugin. * @param $id * The id of the specific plugin to load. * @param $function * The identifier of the function. For example, 'settings form'. */ protected function assertPluginMissingFunction($module, $type, $id, $function = 'function') { $func = ctools_plugin_load_function($module, $type, $id, $function); $this->assertEqual($func, NULL, t('Plugin @plugin of plugin type @module:@type for @function with missing function successfully failed.', array( '@plugin' => $id, '@module' => $module, '@type' => $type, '@function' => (string) $func, ))); } /** * Assert helper to check that a plugin can be loaded using a named class. * * @param $module * The module that owns the plugin. * @param $type * The type of plugin. * @param $id * The id of the specific plugin to load. * @param string $class * The name of the PHP class to load. */ protected function assertPluginClass($module, $type, $id, $class = 'handler') { $class_name = ctools_plugin_load_class($module, $type, $id, $class); $this->assertTrue(class_exists($class_name), t('Plugin @plugin of plugin type @module:@type successfully retrieved @retrieved for @class.', array( '@plugin' => $id, '@module' => $module, '@type' => $type, '@class' => $class, '@retrieved' => $class_name, ))); } /** * Assert helper to check that a plugin DOES NOT contain the named class. * * @param $module * The module that owns the plugin. * @param $type * The type of plugin. * @param $id * The id of the specific plugin to load. * @param string $class * The name of the PHP class to load. */ protected function assertPluginMissingClass($module, $type, $id, $class = 'handler') { $class_name = ctools_plugin_load_class($module, $type, $id, $class); $this->assertEqual($class_name, NULL, t('Plugin @plugin of plugin type @module:@type for @class with missing class successfully failed.', array( '@plugin' => $id, '@module' => $module, '@type' => $type, '@class' => $class, ))); } /** * Test that plugins are loaded correctly. */ public function testPluginLoading() { ctools_include('plugins'); $module = 'ctools_plugin_test'; $type = 'not_cached'; // Test function retrieval for plugins using different definition methods. $this->assertPluginFunction($module, $type, 'plugin_array', 'function'); $this->assertPluginFunction($module, $type, 'plugin_array2', 'function'); $this->assertPluginMissingFunction($module, $type, 'plugin_array_dne', 'function'); $this->assertPluginFunction($module, "big_hook_$type", 'test1', 'function'); // Test class retrieval for plugins using different definition methods. $this->assertPluginClass($module, $type, 'plugin_array', 'handler'); $this->assertPluginClass($module, $type, 'plugin_array2', 'handler'); $this->assertPluginMissingClass($module, $type, 'plugin_array_dne', 'handler'); // @todo Test big hook plugins. $type = 'cached'; // Test function retrieval for plugins using different definition methods. $this->assertPluginFunction($module, $type, 'plugin_array', 'function'); $this->assertPluginFunction($module, $type, 'plugin_array2', 'function'); $this->assertPluginMissingFunction($module, $type, 'plugin_array_dne', 'function'); $this->assertPluginFunction($module, "big_hook_$type", 'test1', 'function'); // Test class retrieval for plugins using different definition methods. $this->assertPluginClass($module, $type, 'plugin_array', 'handler'); $this->assertPluginClass($module, $type, 'plugin_array2', 'handler'); $this->assertPluginMissingClass($module, $type, 'plugin_array_dne', 'handler'); // @todo Test big hook plugins. } }