function PrepareExecutionMetadataStateTest::testPreparingUntil

Tests partial state setup until an expression is reached in the tree.

File

tests/src/Unit/Integration/Engine/PrepareExecutionMetadataStateTest.php, line 38

Class

PrepareExecutionMetadataStateTest
Tests that the setup of the execution metadata state for an expression works.

Namespace

Drupal\Tests\rules\Unit\Integration\Engine

Code

public function testPreparingUntil() {
  // Setup a rule with 2 actions.
  $rule = $this->rulesExpressionManager
    ->createRule();
  $rule->addAction('rules_variable_add', ContextConfig::create()->setValue('type', 'string')
    ->setValue('value', '')
    ->provideAs('variable_added', 'result1'));
  $second_action = $this->rulesExpressionManager
    ->createAction('rules_variable_add')
    ->setConfiguration(ContextConfig::create()->setValue('type', 'string')
    ->setValue('value', '')
    ->provideAs('variable_added', 'result2')
    ->toArray());
  $rule->addExpressionObject($second_action);
  $state = ExecutionMetadataState::create();
  // Preparing the state until the second action means the variable of the
  // first action is available, but the second is not yet.
  $found = $rule->prepareExecutionMetadataState($state, $second_action);
  $this->assertTrue($state->hasDataDefinition('result1'));
  $this->assertFalse($state->hasDataDefinition('result2'));
  $this->assertTrue($found);
}