class RulesEventDispatcherTestCase

Same name in other branches
  1. 7.x-2.x tests/rules.test \RulesEventDispatcherTestCase

Test event dispatcher functionality.

Hierarchy

Expanded class hierarchy of RulesEventDispatcherTestCase

File

d7-tests/rules_test_event_dispatcher_case.test, line 17

View source
class RulesEventDispatcherTestCase extends DrupalWebTestCase {
    static function getInfo() {
        return array(
            'name' => 'Rules event dispatchers',
            'description' => 'Tests event dispatcher functionality.',
            'group' => 'Rules',
        );
    }
    function setUp() {
        parent::setUp('rules', 'rules_test');
    }
    
    /**
     * Tests start and stop functionality.
     */
    public function testStartAndStop() {
        $handler = rules_get_event_handler('rules_test_event');
        $rule = rules_reaction_rule();
        $rule->event('rules_test_event');
        // The handler should not yet be watching.
        $this->assertFalse($handler->isWatching());
        // Once saved, the event cache rebuild should start the watcher.
        $rule->save();
        RulesEventSet::rebuildEventCache();
        $this->assertTrue($handler->isWatching());
        // Deleting should stop the watcher.
        $rule->delete();
        $this->assertFalse($handler->isWatching());
    }
    
    /**
     * Tests start and stop functionality when used with multiple events.
     */
    public function testStartAndStopMultiple() {
        $handler = rules_get_event_handler('rules_test_event');
        // Initially, the task handler should not be watching.
        $this->assertFalse($handler->isWatching());
        // Set up five rules that all use the same event.
        $rules = array();
        foreach (array(
            1,
            2,
            3,
            4,
            5,
        ) as $key) {
            $rules[$key] = rules_reaction_rule();
            $rules[$key]->event('rules_test_event');
            $rules[$key]->save();
        }
        // Once saved, the event cache rebuild should start the watcher.
        RulesEventSet::rebuildEventCache();
        $this->assertTrue($handler->isWatching());
        // It should continue watching until all events are deleted.
        foreach ($rules as $key => $rule) {
            $rule->delete();
            $this->assertEqual($key !== 5, $handler->isWatching());
        }
    }

}

Members

Title Sort descending Modifiers Object type Summary
RulesEventDispatcherTestCase::getInfo static function
RulesEventDispatcherTestCase::setUp function
RulesEventDispatcherTestCase::testStartAndStop public function Tests start and stop functionality.
RulesEventDispatcherTestCase::testStartAndStopMultiple public function Tests start and stop functionality when used with multiple events.