class BlockRebuildTest in Drupal 10
Same name and namespace in other branches
- 8 core/modules/block/tests/src/Kernel/BlockRebuildTest.php \Drupal\Tests\block\Kernel\BlockRebuildTest
- 9 core/modules/block/tests/src/Kernel/BlockRebuildTest.php \Drupal\Tests\block\Kernel\BlockRebuildTest
Tests block_rebuild().
@group block
Hierarchy
- class \Drupal\KernelTests\KernelTestBase extends \PHPUnit\Framework\TestCase implements ServiceProviderInterface uses \Drupal\Tests\PhpUnitCompatibilityTrait, \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait, AssertContentTrait, ConfigTestTrait, ExtensionListTestTrait, RandomGeneratorTrait, TestRequirementsTrait, PhpUnitWarnings
- class \Drupal\Tests\block\Kernel\BlockRebuildTest uses BlockCreationTrait
Expanded class hierarchy of BlockRebuildTest
File
- core/
modules/ block/ tests/ src/ Kernel/ BlockRebuildTest.php, line 15
Namespace
Drupal\Tests\block\KernelView source
class BlockRebuildTest extends KernelTestBase {
use BlockCreationTrait;
/**
* {@inheritdoc}
*/
protected static $modules = [
'block',
'system',
];
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
$this->container
->get('theme_installer')
->install([
'stark',
]);
$this->container
->get('config.factory')
->getEditable('system.theme')
->set('default', 'stark')
->save();
}
/**
* {@inheritdoc}
*/
public static function setUpBeforeClass() : void {
parent::setUpBeforeClass();
// @todo Once block_rebuild() is refactored to auto-loadable code, remove
// this require statement.
require_once static::getDrupalRoot() . '/core/modules/block/block.module';
}
/**
* @covers ::block_rebuild
*/
public function testRebuildNoBlocks() {
block_rebuild();
$messages = \Drupal::messenger()
->all();
\Drupal::messenger()
->deleteAll();
$this
->assertEquals([], $messages);
}
/**
* @covers ::block_rebuild
*/
public function testRebuildNoInvalidBlocks() {
$this
->placeBlock('system_powered_by_block', [
'region' => 'content',
]);
block_rebuild();
$messages = \Drupal::messenger()
->all();
\Drupal::messenger()
->deleteAll();
$this
->assertEquals([], $messages);
}
/**
* @covers ::block_rebuild
*/
public function testRebuildInvalidBlocks() {
$this
->placeBlock('system_powered_by_block', [
'region' => 'content',
]);
$block1 = $this
->placeBlock('system_powered_by_block');
$block2 = $this
->placeBlock('system_powered_by_block');
$block2
->disable()
->save();
// Use the config API directly to bypass Block::preSave().
\Drupal::configFactory()
->getEditable('block.block.' . $block1
->id())
->set('region', 'INVALID')
->save();
\Drupal::configFactory()
->getEditable('block.block.' . $block2
->id())
->set('region', 'INVALID')
->save();
// Reload block entities.
$block1 = Block::load($block1
->id());
$block2 = Block::load($block2
->id());
$this
->assertSame('INVALID', $block1
->getRegion());
$this
->assertTrue($block1
->status());
$this
->assertSame('INVALID', $block2
->getRegion());
$this
->assertFalse($block2
->status());
block_rebuild();
// Reload block entities.
$block1 = Block::load($block1
->id());
$block2 = Block::load($block2
->id());
$messages = \Drupal::messenger()
->all();
\Drupal::messenger()
->deleteAll();
$expected = [
'warning' => [
new TranslatableMarkup('The block %info was assigned to the invalid region %region and has been disabled.', [
'%info' => $block1
->id(),
'%region' => 'INVALID',
]),
],
];
$this
->assertEquals($expected, $messages);
$default_region = system_default_region('stark');
$this
->assertSame($default_region, $block1
->getRegion());
$this
->assertFalse($block1
->status());
$this
->assertSame($default_region, $block2
->getRegion());
$this
->assertFalse($block2
->status());
}
}