X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fblock%2Ftests%2Fsrc%2FKernel%2FMigrate%2Fd7%2FMigrateBlockTest.php;fp=web%2Fcore%2Fmodules%2Fblock%2Ftests%2Fsrc%2FKernel%2FMigrate%2Fd7%2FMigrateBlockTest.php;h=6f07dc9c21e7bc38f865e94d2b2ba48574f2e9ff;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/core/modules/block/tests/src/Kernel/Migrate/d7/MigrateBlockTest.php b/web/core/modules/block/tests/src/Kernel/Migrate/d7/MigrateBlockTest.php new file mode 100644 index 000000000..6f07dc9c2 --- /dev/null +++ b/web/core/modules/block/tests/src/Kernel/Migrate/d7/MigrateBlockTest.php @@ -0,0 +1,170 @@ +container->get('theme_installer')->install(['bartik', 'seven']); + + $this->installConfig(static::$modules); + $this->installEntitySchema('block_content'); + + // Set Bartik and Seven as the default public and admin theme. + $config = $this->config('system.theme'); + $config->set('default', 'bartik'); + $config->set('admin', 'seven'); + $config->save(); + + $this->executeMigrations([ + 'd7_filter_format', + 'd7_user_role', + 'block_content_type', + 'block_content_body_field', + 'd7_custom_block', + 'd7_block', + ]); + block_rebuild(); + } + + /** + * Asserts various aspects of a block. + * + * @param string $id + * The block ID. + * @param string $plugin_id + * The block's plugin ID. + * @param array $roles + * Role IDs the block is expected to have. + * @param string $pages + * The list of pages on which the block should appear. + * @param string $region + * The display region. + * @param string $theme + * The theme. + * @param string $weight + * The block weight. + * @param string $label + * The block label. + * @param string $label_display + * The block label display setting. + * @param bool $status + * Whether the block is expected to be enabled or disabled. + */ + public function assertEntity($id, $plugin_id, array $roles, $pages, $region, $theme, $weight, $label, $label_display, $status = TRUE) { + $block = Block::load($id); + $this->assertTrue($block instanceof Block); + /** @var \Drupal\block\BlockInterface $block */ + $this->assertSame($plugin_id, $block->getPluginId()); + + $visibility = $block->getVisibility(); + if ($roles) { + $this->assertSame($roles, array_values($visibility['user_role']['roles'])); + $this->assertSame('@user.current_user_context:current_user', $visibility['user_role']['context_mapping']['user']); + } + if ($pages) { + $this->assertSame($pages, $visibility['request_path']['pages']); + } + + $this->assertSame($region, $block->getRegion()); + $this->assertSame($theme, $block->getTheme()); + $this->assertSame($weight, $block->getWeight()); + $this->assertSame($status, $block->status()); + + $config = $this->config('block.block.' . $id); + $this->assertSame($label, $config->get('settings.label')); + $this->assertSame($label_display, $config->get('settings.label_display')); + } + + /** + * Tests the block migration. + */ + public function testBlockMigration() { + $this->assertEntity('bartik_system_main', 'system_main_block', [], '', 'content', 'bartik', 0, '', '0'); + $this->assertEntity('bartik_search_form', 'search_form_block', [], '', 'sidebar_first', 'bartik', -1, '', '0'); + $this->assertEntity('bartik_user_login', 'user_login_block', [], '', 'sidebar_first', 'bartik', 0, '', '0'); + $this->assertEntity('bartik_system_powered_by', 'system_powered_by_block', [], '', 'footer_fifth', 'bartik', 10, '', '0'); + $this->assertEntity('seven_system_main', 'system_main_block', [], '', 'content', 'seven', 0, '', '0'); + $this->assertEntity('seven_user_login', 'user_login_block', [], '', 'content', 'seven', 10, '', '0'); + + // The d7_custom_block migration should have migrated a block containing a + // mildly amusing limerick. We'll need its UUID to determine + // bartik_block_1's plugin ID. + $uuid = BlockContent::load(1)->uuid(); + $this->assertEntity('bartik_block_1', 'block_content:' . $uuid, ['authenticated'], '', 'highlighted', 'bartik', 0, 'Mildly amusing limerick of the day', 'visible'); + + // Assert that disabled blocks (or enabled blocks whose plugin IDs could + // be resolved) did not migrate. + $non_existent_blocks = [ + 'bartik_system_navigation', + 'bartik_system_help', + 'seven_user_new', + 'seven_search_form', + 'bartik_comment_recent', + 'bartik_node_syndicate', + 'bartik_node_recent', + 'bartik_shortcut_shortcuts', + 'bartik_system_management', + 'bartik_system_user-menu', + 'bartik_system_main-menu', + 'bartik_user_new', + 'bartik_user_online', + 'seven_comment_recent', + 'seven_node_syndicate', + 'seven_shortcut_shortcuts', + 'seven_system_powered-by', + 'seven_system_navigation', + 'seven_system_management', + 'seven_system_user-menu', + 'seven_system_main-menu', + 'seven_user_online', + 'bartik_blog_recent', + 'bartik_book_navigation', + 'bartik_locale_language', + 'bartik_forum_active', + 'bartik_forum_new', + 'seven_blog_recent', + 'seven_book_navigation', + 'seven_locale_language', + 'seven_forum_active', + 'seven_forum_new', + 'bartik_menu_menu-test-menu', + 'bartik_statistics_popular', + 'seven_menu_menu-test-menu', + 'seven_statistics_popular', + 'seven_block_1', + ]; + $this->assertTrue(empty(Block::loadMultiple($non_existent_blocks))); + } + +}