container->get('theme_installer')->install(['bartik', 'test_theme']); $this->installConfig(['block_content']); $this->installEntitySchema('block_content'); // Set Bartik as the default public theme. $config = $this->config('system.theme'); $config->set('default', 'bartik'); $config->save(); $this->executeMigrations([ 'd6_filter_format', 'block_content_type', 'block_content_body_field', 'd6_custom_block', 'd6_user_role', 'd6_block', ]); block_rebuild(); } /** * Asserts various aspects of a block. * * @param string $id * The block ID. * @param array $visibility * The block visibility settings. * @param string $region * The display region. * @param string $theme * The theme. * @param string $weight * The block weight. * @param array $settings * (optional) The block settings. * @param bool $status * Whether the block is expected to be enabled or disabled. */ public function assertEntity($id, $visibility, $region, $theme, $weight, array $settings = NULL, $status = TRUE) { $block = Block::load($id); $this->assertTrue($block instanceof Block); $this->assertSame($visibility, $block->getVisibility()); $this->assertSame($region, $block->getRegion()); $this->assertSame($theme, $block->getTheme()); $this->assertSame($weight, $block->getWeight()); $this->assertSame($status, $block->status()); if ($settings) { $block_settings = $block->get('settings'); $block_settings['id'] = current(explode(':', $block_settings['id'])); $this->assertEquals($settings, $block_settings); } } /** * Tests the block migration. */ public function testBlockMigration() { $blocks = Block::loadMultiple(); $this->assertCount(14, $blocks); // Check user blocks. $visibility = [ 'request_path' => [ 'id' => 'request_path', 'negate' => TRUE, 'pages' => "\n/node/1\n/blog/*", ], ]; $settings = [ 'id' => 'user_login_block', 'label' => '', 'provider' => 'user', 'label_display' => '0', ]; $this->assertEntity('user', $visibility, 'sidebar_first', 'bartik', -10, $settings); $visibility = []; $settings = [ 'id' => 'system_menu_block', 'label' => '', 'provider' => 'system', 'label_display' => '0', 'level' => 1, 'depth' => 0, ]; $this->assertEntity('user_1', $visibility, 'sidebar_first', 'bartik', -11, $settings); $visibility = [ 'user_role' => [ 'id' => 'user_role', 'roles' => [ 'authenticated' => 'authenticated', ], 'context_mapping' => [ 'user' => '@user.current_user_context:current_user', ], 'negate' => FALSE, ], ]; $settings = [ 'id' => 'broken', 'label' => '', 'provider' => 'core', 'label_display' => '0', 'items_per_page' => '5', ]; $this->assertEntity('user_2', $visibility, 'sidebar_second', 'bartik', -11, $settings); $visibility = [ 'user_role' => [ 'id' => 'user_role', 'roles' => [ 'migrate_test_role_1' => 'migrate_test_role_1', ], 'context_mapping' => [ 'user' => '@user.current_user_context:current_user', ], 'negate' => FALSE, ], ]; $settings = [ 'id' => 'broken', 'label' => '', 'provider' => 'core', 'label_display' => '0', 'items_per_page' => '10', ]; $this->assertEntity('user_3', $visibility, 'sidebar_second', 'bartik', -10, $settings); // Check system block. $visibility = [ 'request_path' => [ 'id' => 'request_path', 'negate' => TRUE, 'pages' => '/node/1', ], ]; $settings = [ 'id' => 'system_powered_by_block', 'label' => '', 'provider' => 'system', 'label_display' => '0', ]; $this->assertEntity('system', $visibility, 'footer_fifth', 'bartik', -5, $settings); // Check menu blocks. $settings = [ 'id' => 'broken', 'label' => '', 'provider' => 'core', 'label_display' => '0', ]; $this->assertEntity('menu', [], 'header', 'bartik', -5, $settings); // Check aggregator block. $settings = [ 'id' => 'aggregator_feed_block', 'label' => '', 'provider' => 'aggregator', 'label_display' => '0', 'block_count' => 7, 'feed' => '5', ]; $this->assertEntity('aggregator', [], 'sidebar_second', 'bartik', -2, $settings); // Check book block. $settings = [ 'id' => 'book_navigation', 'label' => '', 'provider' => 'book', 'label_display' => '0', 'block_mode' => 'book pages', ]; $this->assertEntity('book', [], 'sidebar_second', 'bartik', -4, $settings); // Check forum block settings. $settings = [ 'id' => 'forum_active_block', 'label' => '', 'provider' => 'forum', 'label_display' => '0', 'block_count' => 3, 'properties' => [ 'administrative' => '1', ], ]; $this->assertEntity('forum', [], 'sidebar_first', 'bartik', -8, $settings); $settings = [ 'id' => 'forum_new_block', 'label' => '', 'provider' => 'forum', 'label_display' => '0', 'block_count' => 4, 'properties' => [ 'administrative' => '1', ], ]; $this->assertEntity('forum_1', [], 'sidebar_first', 'bartik', -9, $settings); // Check statistic block settings. $settings = [ 'id' => 'broken', 'label' => '', 'provider' => 'core', 'label_display' => '0', 'top_day_num' => 7, 'top_all_num' => 8, 'top_last_num' => 9, ]; $this->assertEntity('statistics', [], 'sidebar_second', 'bartik', 0, $settings); // Check custom blocks. $visibility = [ 'request_path' => [ 'id' => 'request_path', 'negate' => FALSE, 'pages' => '', ], ]; $settings = [ 'id' => 'block_content', 'label' => 'Static Block', 'provider' => 'block_content', 'label_display' => 'visible', 'status' => TRUE, 'info' => '', 'view_mode' => 'full', ]; $this->assertEntity('block', $visibility, 'content', 'bartik', 0, $settings); $visibility = [ 'request_path' => [ 'id' => 'request_path', 'negate' => FALSE, 'pages' => '/node', ], ]; $settings = [ 'id' => 'block_content', 'label' => 'Another Static Block', 'provider' => 'block_content', 'label_display' => 'visible', 'status' => TRUE, 'info' => '', 'view_mode' => 'full', ]; // We expect this block to be disabled because '' is not a valid region, // and block_rebuild() will disable any block in an invalid region. $this->assertEntity('block_1', $visibility, '', 'bluemarine', -4, $settings, FALSE); $settings = [ 'id' => 'block_content', 'label' => '', 'provider' => 'block_content', 'label_display' => '0', 'status' => TRUE, 'info' => '', 'view_mode' => 'full', ]; $this->assertEntity('block_2', [], 'right', 'test_theme', -7, $settings); // Custom block with php code is not migrated. $block = Block::load('block_3'); $this->assertFalse($block instanceof Block); } }