Skip to content
Snippets Groups Projects
Commit c8ef0bb6 authored by catch's avatar catch
Browse files

Issue #3046680 by claudiu.cristea, Lendude: Convert NewDefaultThemeBlocksTest into a Kernel test

parent 684c23c9
Branches
Tags
2 merge requests!7452Issue #1797438. HTML5 validation is preventing form submit and not fully...,!789Issue #3210310: Adjust Database API to remove deprecated Drupal 9 code in Drupal 10
<?php <?php
namespace Drupal\Tests\block\Functional; namespace Drupal\Tests\block\Kernel;
use Drupal\Tests\BrowserTestBase; use Drupal\KernelTests\KernelTestBase;
use Drupal\Tests\block\Traits\BlockCreationTrait;
/** /**
* Tests that the new default theme gets blocks. * Tests that the new default theme gets blocks.
* *
* @group block * @group block
*/ */
class NewDefaultThemeBlocksTest extends BrowserTestBase { class NewDefaultThemeBlocksTest extends KernelTestBase {
use BlockCreationTrait;
/** /**
* Modules to install. * {@inheritdoc}
*
* @var array
*/ */
public static $modules = ['block']; protected static $modules = [
'block',
'system',
];
/** /**
* Check the enabled Bartik blocks are correctly copied over. * Check the enabled Bartik blocks are correctly copied over.
*/ */
public function testNewDefaultThemeBlocks() { public function testNewDefaultThemeBlocks() {
$theme_handler = $this->container->get('theme_handler');
$default_theme = $this->config('system.theme')->get('default'); $default_theme = $this->config('system.theme')->get('default');
// Add two instances of the user login block. // Add two instances of the user login block.
$this->drupalPlaceBlock('user_login_block', [ $this->placeBlock('user_login_block', [
'id' => $default_theme . '_' . strtolower($this->randomMachineName(8)), 'id' => $default_theme . '_' . strtolower($this->randomMachineName(8)),
]); ]);
$this->drupalPlaceBlock('user_login_block', [ $this->placeBlock('user_login_block', [
'id' => $default_theme . '_' . strtolower($this->randomMachineName(8)), 'id' => $default_theme . '_' . strtolower($this->randomMachineName(8)),
]); ]);
// Add an instance of a different block. // Add an instance of a different block.
$this->drupalPlaceBlock('system_powered_by_block', [ $this->placeBlock('system_powered_by_block', [
'id' => $default_theme . '_' . strtolower($this->randomMachineName(8)), 'id' => $default_theme . '_' . strtolower($this->randomMachineName(8)),
]); ]);
// Install a different theme. // Install a different theme.
$new_theme = 'bartik'; $new_theme = 'bartik';
$this->assertFalse($new_theme == $default_theme, 'The new theme is different from the previous default theme.'); // The new theme is different from the previous default theme.
\Drupal::service('theme_handler')->install([$new_theme]); $this->assertNotEquals($new_theme, $default_theme);
$theme_handler->install([$new_theme]);
$this->config('system.theme') $this->config('system.theme')
->set('default', $new_theme) ->set('default', $new_theme)
->save(); ->save();
/** @var \Drupal\Core\Entity\EntityStorageInterface $block_storage */
$block_storage = $this->container->get('entity_type.manager')->getStorage('block'); $block_storage = $this->container->get('entity_type.manager')->getStorage('block');
// Ensure that the new theme has all the blocks as the previous default. // Ensure that the new default theme has the same blocks as the previous
// default theme.
$default_block_names = $block_storage->getQuery() $default_block_names = $block_storage->getQuery()
->condition('theme', $default_theme) ->condition('theme', $default_theme)
->execute(); ->execute();
$new_blocks = $block_storage->getQuery() $new_blocks = $block_storage->getQuery()
->condition('theme', $new_theme) ->condition('theme', $new_theme)
->execute(); ->execute();
$this->assertTrue(count($default_block_names) == count($new_blocks), 'The new default theme has the same number of blocks as the previous theme.'); $this->assertEquals(count($default_block_names), count($new_blocks));
foreach ($default_block_names as $default_block_name) { foreach ($default_block_names as $default_block_name) {
// Remove the matching block from the list of blocks in the new theme. // Remove the matching block from the list of blocks in the new theme.
// E.g., if the old theme has block.block.stark_admin, // E.g., if the old theme has block.block.stark_admin,
// unset block.block.bartik_admin. // unset block.block.bartik_admin.
unset($new_blocks[str_replace($default_theme . '_', $new_theme . '_', $default_block_name)]); unset($new_blocks[str_replace($default_theme . '_', $new_theme . '_', $default_block_name)]);
} }
$this->assertTrue(empty($new_blocks), 'The new theme has exactly the same blocks as the previous default theme.'); $this->assertEmpty($new_blocks);
// Install a hidden base theme and ensure blocks are not copied. // Install a hidden base theme and ensure blocks are not copied.
$base_theme = 'test_basetheme'; $base_theme = 'test_basetheme';
\Drupal::service('theme_handler')->install([$base_theme]); $theme_handler->install([$base_theme]);
$new_blocks = $block_storage->getQuery() $new_blocks = $block_storage->getQuery()
->condition('theme', $base_theme) ->condition('theme', $base_theme)
->execute(); ->execute();
$this->assertTrue(empty($new_blocks), 'Installing a hidden base theme does not copy blocks from the default theme.'); // Installing a hidden base theme does not copy the blocks from the default
// theme.
$this->assertEmpty($new_blocks);
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment