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');
}