function CoreIntegrationTest::testGlobalContext
Tests using global context.
File
-
tests/
src/ Kernel/ CoreIntegrationTest.php, line 290
Class
- CoreIntegrationTest
- Test using Drupal core integration of Rules API.
Namespace
Drupal\Tests\rules\KernelCode
public function testGlobalContext() {
$account = User::create([
'name' => 'hubert',
]);
$account->save();
$this->container
->get('current_user')
->setAccount($account);
$rule = $this->expressionManager
->createRule()
->addAction('rules_system_message', ContextConfig::create()->map('message', '@user.current_user_context:current_user.name.value')
->setValue('type', 'status'));
$component = RulesComponent::create($rule);
$this->assertEquals(0, $component->checkIntegrity()
->count());
// Ensure the execution-state is aware of global context.
$result = $component->getState()
->hasVariable('@user.current_user_context:current_user');
$this->assertTrue($result);
// Test asking for non-existing variables.
$this->assertFalse($component->getState()
->hasVariable('@user.current_user_context:invalid'));
$this->assertFalse($component->getState()
->hasVariable('@user.invalid_service'));
$this->assertFalse($component->getState()
->hasVariable('invalid-var'));
// Test using global context during execution.
$component->execute();
$messages = $this->messenger
->all();
$this->assertEquals((string) $messages[MessengerInterface::TYPE_STATUS][0], 'hubert');
}