RulesComponentTest.php
Namespace
Drupal\Tests\rules\Unit\Integration\EngineFile
-
tests/
src/ Unit/ Integration/ Engine/ RulesComponentTest.php
View source
<?php
namespace Drupal\Tests\rules\Unit\Integration\Engine;
use Drupal\rules\Context\ContextConfig;
use Drupal\rules\Context\ContextDefinition;
use Drupal\rules\Engine\RulesComponent;
use Drupal\rules\Context\ExecutionStateInterface;
use Drupal\Tests\rules\Unit\Integration\RulesIntegrationTestBase;
/**
* Tests the Rules component class.
*
* @coversDefaultClass \Drupal\rules\Engine\RulesComponent
* @group Rules
*/
class RulesComponentTest extends RulesIntegrationTestBase {
/**
* Tests executing a rule providing context based upon given context.
*/
public function testRuleExecutionWithContext() {
$rule = $this->rulesExpressionManager
->createRule();
$rule->addAction('rules_test_string', ContextConfig::create()->map('text', 'text'));
$result = RulesComponent::create($rule)->addContextDefinition('text', ContextDefinition::create('string'))
->provideContext('concatenated')
->setContextValue('text', 'foo')
->execute();
// Ensure the provided context is returned.
$this->assertArrayHasKey('concatenated', $result);
// cspell:ignore foofoo
$this->assertEquals('foofoo', $result['concatenated']);
}
/**
* @covers ::getExpression
*/
public function testGetExpression() {
$rule = $this->rulesExpressionManager
->createRule();
$this->assertSame(RulesComponent::create($rule)->getExpression(), $rule);
}
/**
* @covers ::getContextDefinitions
*/
public function testGetContextDefinitions() {
$rule = $this->rulesExpressionManager
->createRule();
$definition = ContextDefinition::create('string');
$component = RulesComponent::create($rule)->addContextDefinition('test', $definition);
$this->assertEquals(array_keys($component->getContextDefinitions()), [
'test',
]);
$this->assertSame($component->getContextDefinitions()['test'], $definition);
}
/**
* @covers ::getProvidedContext
*/
public function testGetProvidedContext() {
$rule = $this->rulesExpressionManager
->createRule();
$component = RulesComponent::create($rule)->provideContext('test');
$this->assertEquals($component->getProvidedContext(), [
'test',
]);
}
/**
* @covers ::getState
*/
public function testGetState() {
$rule = $this->rulesExpressionManager
->createRule();
$component = RulesComponent::create($rule);
$this->assertInstanceOf(ExecutionStateInterface::class, $component->getState());
// Test that set context values are available in the state.
$component->addContextDefinition('foo', ContextDefinition::create('string'))
->setContextValue('foo', 'bar');
$this->assertEquals($component->getState()
->getVariableValue('foo'), 'bar');
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
RulesComponentTest | Tests the Rules component class. |