commit 6dfe80df757aeaad47c8958be8c7fbc466b44fc9 Author: fago Date: Tue Jul 30 14:56:43 2013 +0200 Added tests. diff --git a/tests/rules.test b/tests/rules.test index 4dbbd14..20f1c9d 100644 --- a/tests/rules.test +++ b/tests/rules.test @@ -213,6 +213,26 @@ class RulesTestCase extends DrupalWebTestCase { } /** + * Tests making use of class based actions. + */ + function testClassBasedActions() { + $cache = rules_get_cache(); + $this->assertTrue(!empty($cache['action_info']['rules_test_class_action']), 'Action has been discovered.'); + $action = rules_action('rules_test_class_action'); + + $parameters = $action->parameterInfo(); + $this->assertTrue($parameters['node'], 'Action parameter needs a value.'); + + $node = $this->drupalCreateNode(); + $action->execute($node); + $log = RulesLog::logger()->get(); + $last = array_pop($log); + $last = array_pop($log); + $this->assertEqual($last[0], 'Action called with node ' . $node->nid, 'Action called'); + RulesLog::logger()->checkLog(); + } + + /** * Tests CRUD functionality. */ function testRulesCRUD() { diff --git a/tests/rules_test.rules.inc b/tests/rules_test.rules.inc index 1420cbb..dd236a9 100644 --- a/tests/rules_test.rules.inc +++ b/tests/rules_test.rules.inc @@ -213,6 +213,36 @@ function rules_test_action() { } /** + * Action for testing writing class-based actions. + */ +class RulesTestClassAction extends RulesActionHandlerBase { + + /** + * Defines the action. + */ + public static function getInfo() { + return array( + 'name' => 'rules_test_class_action', + 'label' => t('Test class based action'), + 'group' => t('Node'), + 'parameter' => array( + 'node' => array( + 'type' => 'node', + 'label' => t('Node'), + ), + ), + ); + } + + /** + * Executes the action. + */ + public function execute($node) { + rules_log('Action called with node ' . $node->nid); + } +} + +/** * Implements hook_rules_data_info(). */ function rules_test_rules_data_info() {