function CoreIntegrationTest::testEntityAutoSave
Tests that an entity is automatically saved after being changed.
File
-
tests/
src/ Kernel/ CoreIntegrationTest.php, line 87
Class
- CoreIntegrationTest
- Test using Drupal core integration of Rules API.
Namespace
Drupal\Tests\rules\KernelCode
public function testEntityAutoSave() {
$entity_type_manager = $this->container
->get('entity_type.manager');
$entity_type_manager->getStorage('node_type')
->create([
'type' => 'page',
])
->save();
$node = $entity_type_manager->getStorage('node')
->create([
'title' => 'test',
'type' => 'page',
]);
// We use the rules_test_node action plugin which marks its node context for
// auto saving.
// @see \Drupal\rules_test\Plugin\RulesAction\TestNodeAction
$action = $this->expressionManager
->createAction('rules_test_node')
->setConfiguration(ContextConfig::create()->map('node', 'node')
->map('title', 'title')
->toArray());
RulesComponent::create($action)->addContextDefinition('node', ContextDefinition::create('entity:node'))
->addContextDefinition('title', ContextDefinition::create('string'))
->setContextValue('node', $node)
->setContextValue('title', 'new title')
->execute();
$this->assertNotNull($node->id(), 'Node ID is set, which means that the node has been saved.');
}