Chris@0: container->get('theme_installer')->install(['stable', 'classy']); Chris@0: $this->container->get('config.factory')->getEditable('system.theme')->set('default', 'classy')->save(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public static function setUpBeforeClass() { Chris@0: parent::setUpBeforeClass(); Chris@0: Chris@0: // @todo Once block_rebuild() is refactored to auto-loadable code, remove Chris@0: // this require statement. Chris@0: require_once static::getDrupalRoot() . '/core/modules/block/block.module'; Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::block_rebuild Chris@0: */ Chris@0: public function testRebuildNoBlocks() { Chris@0: block_rebuild(); Chris@17: $messages = \Drupal::messenger()->all(); Chris@17: \Drupal::messenger()->deleteAll(); Chris@0: $this->assertEquals([], $messages); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::block_rebuild Chris@0: */ Chris@0: public function testRebuildNoInvalidBlocks() { Chris@0: $this->placeBlock('system_powered_by_block', ['region' => 'content']); Chris@0: Chris@0: block_rebuild(); Chris@17: $messages = \Drupal::messenger()->all(); Chris@17: \Drupal::messenger()->deleteAll(); Chris@0: $this->assertEquals([], $messages); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::block_rebuild Chris@0: */ Chris@0: public function testRebuildInvalidBlocks() { Chris@0: $this->placeBlock('system_powered_by_block', ['region' => 'content']); Chris@0: $block1 = $this->placeBlock('system_powered_by_block'); Chris@0: $block2 = $this->placeBlock('system_powered_by_block'); Chris@0: $block2->disable()->save(); Chris@0: // Use the config API directly to bypass Block::preSave(). Chris@0: \Drupal::configFactory()->getEditable('block.block.' . $block1->id())->set('region', 'INVALID')->save(); Chris@0: \Drupal::configFactory()->getEditable('block.block.' . $block2->id())->set('region', 'INVALID')->save(); Chris@0: Chris@0: // Reload block entities. Chris@0: $block1 = Block::load($block1->id()); Chris@0: $block2 = Block::load($block2->id()); Chris@0: Chris@0: $this->assertSame('INVALID', $block1->getRegion()); Chris@0: $this->assertTrue($block1->status()); Chris@0: $this->assertSame('INVALID', $block2->getRegion()); Chris@0: $this->assertFalse($block2->status()); Chris@0: Chris@0: block_rebuild(); Chris@0: Chris@0: // Reload block entities. Chris@0: $block1 = Block::load($block1->id()); Chris@0: $block2 = Block::load($block2->id()); Chris@0: Chris@17: $messages = \Drupal::messenger()->all(); Chris@17: \Drupal::messenger()->deleteAll(); Chris@0: $expected = ['warning' => [new TranslatableMarkup('The block %info was assigned to the invalid region %region and has been disabled.', ['%info' => $block1->id(), '%region' => 'INVALID'])]]; Chris@0: $this->assertEquals($expected, $messages); Chris@0: Chris@0: $default_region = system_default_region('classy'); Chris@0: $this->assertSame($default_region, $block1->getRegion()); Chris@0: $this->assertFalse($block1->status()); Chris@0: $this->assertSame($default_region, $block2->getRegion()); Chris@0: $this->assertFalse($block2->status()); Chris@0: } Chris@0: Chris@0: }