You are here

public function EventIntegrationTest::testMultipleEvents in Rules 8.3

Test that rules config supports multiple events.

File

tests/src/Kernel/EventIntegrationTest.php, line 230

Class

EventIntegrationTest
Test for the Symfony event mapping to Rules events.

Namespace

Drupal\Tests\rules\Kernel

Code

public function testMultipleEvents() {
  $rule = $this->expressionManager
    ->createRule();
  $rule
    ->addCondition('rules_test_true');
  $rule
    ->addAction('rules_test_debug_log');
  $config_entity = $this->storage
    ->create([
    'id' => 'test_rule',
  ]);
  $config_entity
    ->set('events', [
    [
      'event_name' => 'rules_user_login',
    ],
    [
      'event_name' => 'rules_user_logout',
    ],
  ]);
  $config_entity
    ->set('expression', $rule
    ->getConfiguration());
  $config_entity
    ->save();

  // The logger instance has changed, refresh it.
  $this->logger = $this->container
    ->get('logger.channel.rules_debug');
  $this->logger
    ->addLogger($this->debugLog);
  $account = User::create([
    'name' => 'test_user',
  ]);

  // Invoke the hook manually which should trigger the rules_user_login event.
  rules_user_login($account);

  // Invoke the hook manually which should trigger the rules_user_logout
  // event.
  rules_user_logout($account);

  // Test that the action in the rule logged something.
  $this
    ->assertRulesDebugLogEntryExists('action called');
  $this
    ->assertRulesDebugLogEntryExists('action called', 1);
}