function EntityMethodConfigActionsTest::testSetNestedProperty
Test setting a nested property on a config entity.
File
-
core/
tests/ Drupal/ KernelTests/ Core/ Recipe/ EntityMethodConfigActionsTest.php, line 190
Class
- EntityMethodConfigActionsTest
- @group Recipe
Namespace
Drupal\KernelTests\Core\RecipeCode
public function testSetNestedProperty() : void {
$this->container
->get(ThemeInstallerInterface::class)
->install([
'claro',
]);
$block = $this->placeBlock('local_tasks_block', [
'theme' => 'claro',
]);
$this->configActionManager
->applyAction('setProperties', $block->getConfigDependencyName(), [
'settings.label' => 'Magic!',
]);
$settings = Block::load($block->id())
->get('settings');
$this->assertSame('Magic!', $settings['label']);
// If the property is not nested, it should still work.
$settings['label'] = 'Mundane';
$this->configActionManager
->applyAction('setProperties', $block->getConfigDependencyName(), [
'settings' => $settings,
]);
$settings = Block::load($block->id())
->get('settings');
$this->assertSame('Mundane', $settings['label']);
// We can use this to set a scalar property normally.
$this->configActionManager
->applyAction('setProperties', $block->getConfigDependencyName(), [
'region' => 'highlighted',
]);
$this->assertSame('highlighted', Block::load($block->id())
->getRegion());
// We should get an exception if we try to set a nested value on a property
// that isn't an array.
$this->expectException(ConfigActionException::class);
$this->expectExceptionMessage('The setProperties config action can only set nested values on arrays.');
$this->configActionManager
->applyAction('setProperties', $block->getConfigDependencyName(), [
'theme.name' => 'stark',
]);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.