Mercurial > hg > isophonics-drupal-site
view core/modules/block/tests/src/Traits/BlockCreationTrait.php @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 4c8ae668cc8c |
children |
line wrap: on
line source
<?php namespace Drupal\Tests\block\Traits; use Drupal\block\Entity\Block; /** * Provides methods to create and place block with default settings. * * This trait is meant to be used only by test classes. */ trait BlockCreationTrait { /** * Creates a block instance based on default settings. * * @param string $plugin_id * The plugin ID of the block type for this block instance. * @param array $settings * (optional) An associative array of settings for the block entity. * Override the defaults by specifying the key and value in the array, for * example: * @code * $this->drupalPlaceBlock('system_powered_by_block', array( * 'label' => t('Hello, world!'), * )); * @endcode * The following defaults are provided: * - label: Random string. * - ID: Random string. * - region: 'sidebar_first'. * - theme: The default theme. * - visibility: Empty array. * * @return \Drupal\block\Entity\Block * The block entity. * * @todo * Add support for creating custom block instances. */ protected function placeBlock($plugin_id, array $settings = []) { $config = \Drupal::configFactory(); $settings += [ 'plugin' => $plugin_id, 'region' => 'sidebar_first', 'id' => strtolower($this->randomMachineName(8)), 'theme' => $config->get('system.theme')->get('default'), 'label' => $this->randomMachineName(8), 'visibility' => [], 'weight' => 0, ]; $values = []; foreach (['region', 'id', 'theme', 'plugin', 'weight', 'visibility'] as $key) { $values[$key] = $settings[$key]; // Remove extra values that do not belong in the settings array. unset($settings[$key]); } foreach ($values['visibility'] as $id => $visibility) { $values['visibility'][$id]['id'] = $id; } $values['settings'] = $settings; $block = Block::create($values); $block->save(); return $block; } }