X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=web%2Fcore%2Fmodules%2Fblock%2Ftests%2Fsrc%2FKernel%2FMigrate%2Fd6%2FMigrateBlockTest.php;fp=web%2Fcore%2Fmodules%2Fblock%2Ftests%2Fsrc%2FKernel%2FMigrate%2Fd6%2FMigrateBlockTest.php;h=bb59f502c30412d869fb30d2018fe2cbb9eaf095;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php b/web/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php new file mode 100644 index 000000000..bb59f502c --- /dev/null +++ b/web/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php @@ -0,0 +1,307 @@ +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); + } + +}