function RulesEngineTest::testActionProvidedContext

Tests that multiple actions can consume and provide context variables.

File

tests/src/Kernel/RulesEngineTest.php, line 142

Class

RulesEngineTest
Test using the Rules API to create and evaluate rules.

Namespace

Drupal\Tests\rules\Kernel

Code

public function testActionProvidedContext() {
  // @todo Convert the test to make use of actions instead of conditions.
  $rule = $this->expressionManager
    ->createRule();
  // The condition provides a "provided_text" variable.
  $rule->addCondition('rules_test_provider');
  // The action provides a "concatenated" variable.
  $rule->addAction('rules_test_string', ContextConfig::create()->map('text', 'provided_text'));
  // Add the same action again which will provide a "concatenated2" variable
  // now.
  $rule->addAction('rules_test_string', ContextConfig::create()->map('text', 'concatenated')
    ->provideAs('concatenated', 'concatenated2'));
  $state = ExecutionState::create();
  $rule->executeWithState($state);
  // Check that the created variables exists and have the provided values.
  $concatenated = $state->getVariable('concatenated');
  $this->assertEquals($concatenated->getValue(), 'test valuetest value');
  $concatenated2 = $state->getVariable('concatenated2');
  $this->assertEquals($concatenated2->getValue(), 'test valuetest valuetest valuetest value');
}