diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorRenderingTest.php b/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorRenderingTest.php index cd083b7..1f13232 100644 --- a/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorRenderingTest.php +++ b/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorRenderingTest.php @@ -38,6 +38,10 @@ public function testBlockLinks() { $feed = $this->createFeed(); $this->updateFeedItems($feed, $this->getDefaultFeedItemCount()); + // Clear the block cache to load the new block definitions. + $manager = $this->container->get('plugin.manager.block'); + $manager->clearCachedDefinitions(); + // Need admin user to be able to access block admin. $admin_user = $this->drupalCreateUser(array( 'administer blocks', @@ -47,16 +51,11 @@ public function testBlockLinks() { )); $this->drupalLogin($admin_user); - $current_theme = variable_get('theme_default', 'stark'); - $machine_name = 'test_aggregator_feed_block'; $block = array( - 'machine_name' => $machine_name, - 'region' => 'footer', 'title' => 'feed-' . $feed->title, 'block_count' => 2, ); - $this->drupalPost("admin/structure/block/manage/aggregator_feed_block:{$feed->fid}/$current_theme", $block, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), 'Block was saved.'); + $this->drupalPlaceBlock("aggregator_feed_block:{$feed->fid}", $block); // Confirm that the block is now being displayed on pages. $this->drupalGet('node'); diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Tests/ImportOpmlTest.php b/core/modules/aggregator/lib/Drupal/aggregator/Tests/ImportOpmlTest.php index 5eb110f..7a9f463 100644 --- a/core/modules/aggregator/lib/Drupal/aggregator/Tests/ImportOpmlTest.php +++ b/core/modules/aggregator/lib/Drupal/aggregator/Tests/ImportOpmlTest.php @@ -49,15 +49,7 @@ function openImportForm() { ->execute(); // Enable the help block. - $block_id = 'system_help_block'; - $default_theme = variable_get('theme_default', 'stark'); - $block = array( - 'title' => $this->randomName(8), - 'machine_name' => $this->randomName(8), - 'region' => 'help', - ); - $this->drupalPost('admin/structure/block/manage/' . $block_id . '/' . $default_theme, $block, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), '"Help" block enabled'); + $this->drupalPlaceBlock('system_help_block', array('region' => 'help')); $this->drupalGet('admin/config/services/aggregator/add/opml'); $this->assertText('A single OPML document may contain a collection of many feeds.', 'Found OPML help text.'); diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockCacheTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockCacheTest.php index 2c401e8..f40d4fa 100644 --- a/core/modules/block/lib/Drupal/block/Tests/BlockCacheTest.php +++ b/core/modules/block/lib/Drupal/block/Tests/BlockCacheTest.php @@ -49,12 +49,8 @@ function setUp() { $this->normal_user_alt->save(); // Enable our test block. - $this->theme = variable_get('theme_default', 'stark'); - $block = array(); - $block['machine_name'] = $this->randomName(8); - $block['region'] = 'sidebar_first'; - $this->block = $block; - $this->drupalPost('admin/structure/block/manage/test_cache/' . $this->theme, $block, t('Save block')); + $block = $this->drupalPlaceBlock('test_cache'); + $this->block_config_id = $block['config_id']; } /** @@ -196,13 +192,11 @@ function testCachePerPage() { * Private helper method to set the test block's cache mode. */ private function setCacheMode($cache_mode) { - $block = $this->block; - $block['config_id'] = 'plugin.core.block.' . $this->theme . '.' . $block['machine_name']; - $block_config = config($block['config_id']); + $block_config = config($this->block_config_id); $block_config->set('cache', $cache_mode); $block_config->save(); - $instance = block_load($block['config_id']); + $instance = block_load($this->block_config_id); $config = $instance->getConfig(); if ($config['cache'] != $cache_mode) { $this->fail(t('Unable to set cache mode to %mode. Current mode: %current_mode', array('%mode' => $cache_mode, '%current_mode' => $config['cache']))); diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockHiddenRegionTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockHiddenRegionTest.php index f33694e..06c7bf0 100644 --- a/core/modules/block/lib/Drupal/block/Tests/BlockHiddenRegionTest.php +++ b/core/modules/block/lib/Drupal/block/Tests/BlockHiddenRegionTest.php @@ -46,14 +46,7 @@ function setUp() { ); $this->drupalLogin($this->adminUser); - - $default_theme = variable_get('theme_default', 'stark'); - - $block['machine_name'] = $this->randomName(); - $block['region'] = 'sidebar_first'; - $block['title'] = $this->randomName(); - $this->drupalPost('admin/structure/block/manage/search_form_block/' . $default_theme, $block, t('Save block')); - $this->assertText('The block configuration has been saved.', 'Block was saved'); + $this->DrupalCreateBlockInstance('search_form_block'); } /** @@ -61,8 +54,6 @@ function setUp() { */ public function testBlockNotInHiddenRegion() { - $this->drupalLogin($this->adminUser); - // Ensure that the search form block is displayed. $this->drupalGet(''); $this->assertText('Search', 'Block was displayed on the front page.'); @@ -81,4 +72,5 @@ public function testBlockNotInHiddenRegion() { $this->drupalGet(''); $this->assertText('Search', 'Block was displayed on the front page.'); } + } diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockHtmlIdTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockHtmlIdTest.php index 1bf3543..e0d37da 100644 --- a/core/modules/block/lib/Drupal/block/Tests/BlockHtmlIdTest.php +++ b/core/modules/block/lib/Drupal/block/Tests/BlockHtmlIdTest.php @@ -10,7 +10,7 @@ use Drupal\simpletest\WebTestBase; /** - * Test block HTML id validity. + * Tests block HTML ID validity. */ class BlockHtmlIdTest extends WebTestBase { @@ -28,8 +28,8 @@ class BlockHtmlIdTest extends WebTestBase { public static function getInfo() { return array( - 'name' => 'Block HTML id', - 'description' => 'Test block HTML id validity.', + 'name' => 'Block HTML ID', + 'description' => 'Tests block HTML ID validity.', 'group' => 'Block', ); } @@ -46,11 +46,7 @@ function setUp() { state()->set('block_test.content', $current_content); // Enable our test block. - $default_theme = variable_get('theme_default', 'stark'); - $block = array(); - $block['machine_name'] = 'test_id_block'; - $block['region'] = 'sidebar_first'; - $this->drupalPost('admin/structure/block/manage/test_html_id' . '/' . $default_theme, array('machine_name' => $block['machine_name'], 'region' => $block['region']), t('Save block')); + $this->drupalPlaceBlock('test_html_id', array('machine_name' => 'test_id_block')); } /** @@ -60,4 +56,5 @@ function testHtmlId() { $this->drupalGet(''); $this->assertRaw('id="block-test-id-block"', 'HTML ID for test block is valid.'); } + } diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockInvalidRegionTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockInvalidRegionTest.php index da22d5a..ec41b39 100644 --- a/core/modules/block/lib/Drupal/block/Tests/BlockInvalidRegionTest.php +++ b/core/modules/block/lib/Drupal/block/Tests/BlockInvalidRegionTest.php @@ -44,18 +44,9 @@ function setUp() { * Tests that blocks assigned to invalid regions work correctly. */ function testBlockInInvalidRegion() { - // Enable a test block in the default theme and place it in an invalid region. - $current_theme = variable_get('default_theme', 'stark'); - $machine_name = 'test_html_id'; - $block = array( - 'machine_name' => $machine_name, - 'region' => 'footer', - ); - $this->drupalPost("admin/structure/block/manage/test_html_id/$current_theme", $block, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), 'Block was saved.'); - - $machine_name = 'plugin.core.block.' . $current_theme . '.' . $machine_name; - $config = config($machine_name); + // Enable a test block and place it in an invalid region. + $block = $this->drupalPlaceBlock('test_html_id'); + $config = config($block['config_id']); $config->set('region', 'invalid_region'); $config->save(); @@ -70,7 +61,6 @@ function testBlockInInvalidRegion() { $this->assertNoRaw($warning_message, 'Disabled block in the invalid region will not trigger the warning.'); // Place disabled test block in the invalid region of the default theme. - $config = config($machine_name); $config->set('region', 'invalid_region'); $config->save(); diff --git a/core/modules/block/lib/Drupal/block/Tests/NewDefaultThemeBlocksTest.php b/core/modules/block/lib/Drupal/block/Tests/NewDefaultThemeBlocksTest.php index 8d04426..d9be6f4 100644 --- a/core/modules/block/lib/Drupal/block/Tests/NewDefaultThemeBlocksTest.php +++ b/core/modules/block/lib/Drupal/block/Tests/NewDefaultThemeBlocksTest.php @@ -33,38 +33,18 @@ public static function getInfo() { * Check the enabled Bartik blocks are correctly copied over. */ function testNewDefaultThemeBlocks() { + $default_theme = variable_get('theme_default', 'stark'); // Add several block instances. - // @todo Do this programmatically and with test blocks instead of other - // modules' blocks once block instances are config entities. $this->adminUser = $this->drupalCreateUser(array('administer blocks')); $this->drupalLogin($this->adminUser); - // Add one instance of the user login block. - $block_id = 'user_login_block'; - $default_theme = variable_get('theme_default', 'stark'); - $edit = array( - 'title' => $this->randomName(8), - 'machine_name' => $this->randomName(8), - 'region' => 'sidebar_first', - ); - $this->drupalPost('admin/structure/block/manage/' . $block_id . '/' . $default_theme, $edit, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), 'User login block enabled'); - - // Add another instance of the same block. - $this->drupalPost('admin/structure/block/manage/' . $block_id . '/' . $default_theme, $edit, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), 'User login block enabled'); + // Add two instances of the user login block. + $this->drupalPlaceBlock('user_login_block'); + $this->drupalPlaceBlock('user_login_block'); // Add an instance of a different block. - $block_id = 'system_powered_by_block'; - $edit = array( - 'title' => $this->randomName(8), - 'machine_name' => $this->randomName(8), - 'region' => 'sidebar_first', - ); - $this->drupalPost('admin/structure/block/manage/' . $block_id . '/' . $default_theme, $edit, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), 'User login block enabled'); - + $this->drupalPlaceBlock('system_powered_by_block'); $this->drupalLogout($this->adminUser); // Enable a different theme. diff --git a/core/modules/book/lib/Drupal/book/Tests/BookTest.php b/core/modules/book/lib/Drupal/book/Tests/BookTest.php index 4d5e452..16c8ae3 100644 --- a/core/modules/book/lib/Drupal/book/Tests/BookTest.php +++ b/core/modules/book/lib/Drupal/book/Tests/BookTest.php @@ -309,16 +309,8 @@ function testBookExport() { function testBookNavigationBlock() { $this->drupalLogin($this->admin_user); - $block_id = 'book_navigation'; - $default_theme = variable_get('theme_default', 'stark'); - $block = array( - 'title' => $this->randomName(8), - 'machine_name' => $this->randomName(8), - 'region' => 'footer', - ); // Enable the block. - $this->drupalPost('admin/structure/block/manage/' . $block_id . '/' . $default_theme, $block, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), 'Block enabled'); + $block = $this->drupalPlaceBlock('book_navigation'); // Give anonymous users the permission 'node test view'. $edit = array(); @@ -329,7 +321,7 @@ function testBookNavigationBlock() { // Test correct display of the block. $nodes = $this->createBook(); $this->drupalGet(''); - $this->assertText($block['title'], 'Book navigation block is displayed.'); + $this->assertText($block['subject'], 'Book navigation block is displayed.'); $this->assertText($this->book->label(), format_string('Link to book root (@title) is displayed.', array('@title' => $nodes[0]->label()))); $this->assertNoText($nodes[0]->label(), 'No links to individual book pages are displayed.'); } @@ -339,17 +331,7 @@ function testBookNavigationBlock() { */ function testNavigationBlockOnAccessModuleEnabled() { $this->drupalLogin($this->admin_user); - $block_id = 'book_navigation'; - $default_theme = variable_get('theme_default', 'stark'); - $block = array( - 'title' => $this->randomName(8), - 'machine_name' => $this->randomName(8), - 'region' => 'footer', - 'book_block_mode' => 'book pages', - ); - // Enable the block. - $this->drupalPost('admin/structure/block/manage/' . $block_id . '/' . $default_theme, $block, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), 'Block enabled'); + $block = $this->drupalPlaceBlock('book_navigation', array('book_block_mode' => 'book pages')); // Give anonymous users the permission 'node test view'. $edit = array(); @@ -363,12 +345,12 @@ function testNavigationBlockOnAccessModuleEnabled() { // Test correct display of the block to registered users. $this->drupalLogin($this->web_user); $this->drupalGet('node/' . $this->book->nid); - $this->assertText($block['title'], 'Book navigation block is displayed to registered users.'); + $this->assertText($block['subject'], 'Book navigation block is displayed to registered users.'); $this->drupalLogout(); // Test correct display of the block to anonymous users. $this->drupalGet('node/' . $this->book->nid); - $this->assertText($block['title'], 'Book navigation block is displayed to anonymous users.'); + $this->assertText($block['subject'], 'Book navigation block is displayed to anonymous users.'); } /** diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentBlockTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentBlockTest.php index b874d7b..d4d3fe6 100644 --- a/core/modules/comment/lib/Drupal/comment/Tests/CommentBlockTest.php +++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentBlockTest.php @@ -46,16 +46,7 @@ public static function getInfo() { */ function testRecentCommentBlock() { $this->drupalLogin($this->admin_user); - $current_theme = variable_get('default_theme', 'stark'); - $machine_name = 'test_recent_comments'; - $edit = array( - 'machine_name' => $machine_name, - 'region' => 'sidebar_first', - 'title' => $this->randomName(), - 'block_count' => 2, - ); - $this->drupalPost('admin/structure/block/manage/recent_comments/' . $current_theme, $edit, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), 'Block was saved.'); + $block = $this->drupalPlaceBlock('recent_comments', array('block_count' => 2)); // Add some test comments, one without a subject. $comment1 = $this->postComment($this->node, $this->randomName(), $this->randomName()); @@ -70,14 +61,14 @@ function testRecentCommentBlock() { // posting a node from a node form. cache_invalidate_tags(array('content' => TRUE)); $this->drupalGet(''); - $this->assertNoText($edit['title'], 'Block was not found.'); + $this->assertNoText($block['subject'], 'Block was not found.'); user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, array('access comments')); // Test that a user with the 'access comments' permission can see the // block. $this->drupalLogin($this->web_user); $this->drupalGet(''); - $this->assertText($edit['title'], 'Block was found.'); + $this->assertText($block['subject'], 'Block was found.'); // Test the only the 2 latest comments are shown and in the proper order. $this->assertNoText($comment1->subject, 'Comment not found in block.'); @@ -88,11 +79,12 @@ function testRecentCommentBlock() { // Set the number of recent comments to show to 10. $this->drupalLogout(); $this->drupalLogin($this->admin_user); - $block = array( + $edit = array( 'block_count' => 10, ); + $current_theme = variable_get('theme_default', 'stark'); - $this->drupalPost("admin/structure/block/manage/plugin.core.block.$current_theme.$machine_name/$current_theme/configure", $block, t('Save block')); + $this->drupalPost('admin/structure/block/manage/' . $block['config_id'] . '/' . variable_get('theme_default', 'stark') . '/configure', $edit, t('Save block')); $this->assertText(t('The block configuration has been saved.'), 'Block saved.'); // Post an additional comment. @@ -118,4 +110,5 @@ function testRecentCommentBlock() { // rel="canonical" is added to the head of the document. $this->assertRaw('createForumTopics(); - $block_id = 'forum_new_block'; - $default_theme = variable_get('theme_default', 'stark'); - - $block = array( - 'title' => $this->randomName(8), - 'machine_name' => $this->randomName(8), - 'region' => 'sidebar_second', - ); - // Enable the new forum topics block. - $this->drupalPost('admin/structure/block/manage/' . $block_id . '/' . $default_theme, $block, t('Save block')); + $block = $this->drupalPlaceBlock('forum_new_block'); $this->assertText(t('The block configuration has been saved.'), '"New forum topics" block was enabled'); $this->assertLink(t('More'), 0, 'New forum topics block has a "more"-link.'); @@ -79,7 +70,6 @@ public function testNewForumTopicsBlock() { } // Configure the new forum topics block to only show 2 topics. - $block['config_id'] = 'plugin.core.block.' . $default_theme . '.' . $block['machine_name']; $config = config($block['config_id']); $config->set('block_count', 2); $config->save(); @@ -122,19 +112,7 @@ public function testActiveForumTopicsBlock() { } // Enable the block. - $block_id = 'forum_active_block'; - $default_theme = variable_get('theme_default', 'stark'); - - $block = array( - 'title' => $this->randomName(8), - 'machine_name' => $this->randomName(8), - 'region' => 'sidebar_second', - ); - - // Enable the active forum block. - $this->drupalPost('admin/structure/block/manage/' . $block_id . '/' . $default_theme, $block, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), 'Active forum topics forum block was enabled'); - + $block = $this->drupalPlaceBlock('forum_active_block'); $this->assertLink(t('More'), 0, 'Active forum topics block has a "more"-link.'); $this->assertLinkByHref('forum', 0, 'Active forum topics block has a "more"-link.'); @@ -151,7 +129,6 @@ public function testActiveForumTopicsBlock() { } // Configure the active forum block to only show 2 topics. - $block['config_id'] = 'plugin.core.block.' . $default_theme . '.' . $block['machine_name']; $config = config($block['config_id']); $config->set('block_count', 2); $config->save(); diff --git a/core/modules/forum/lib/Drupal/forum/Tests/ForumNodeAccessTest.php b/core/modules/forum/lib/Drupal/forum/Tests/ForumNodeAccessTest.php index 5d3594a..e619923 100644 --- a/core/modules/forum/lib/Drupal/forum/Tests/ForumNodeAccessTest.php +++ b/core/modules/forum/lib/Drupal/forum/Tests/ForumNodeAccessTest.php @@ -75,26 +75,10 @@ function testForumNodeAccess() { $public_node = $this->drupalGetNodeByTitle($public_node_title); $this->assertTrue(!empty($public_node), 'New public forum node found in database.'); - $default_theme = variable_get('theme_default', 'stark'); - // Enable the active forum block. - $block_id = 'forum_active_block'; - $block = array( - 'title' => $this->randomName(8), - 'machine_name' => $this->randomName(8), - 'region' => 'sidebar_second', - ); - $this->drupalPost('admin/structure/block/manage/' . $block_id . '/' . $default_theme, $block, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), 'Active forum topics block enabled'); - - // Enable the new forum block. - $block_id = 'forum_new_block'; - $block = array( - 'title' => $this->randomName(8), - 'machine_name' => $this->randomName(8), - 'region' => 'sidebar_second', - ); - $this->drupalPost('admin/structure/block/manage/' . $block_id . '/' . $default_theme, $block, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), 'New forum topics block enabled'); + + // Enable the new and active forum blocks. + $this->drupalPlaceBlock('forum_active_block'); + $this->drupalPlaceBlock('forum_new_block'); // Test for $access_user. $this->drupalLogin($access_user); @@ -112,4 +96,5 @@ function testForumNodeAccess() { $this->assertNoText($private_node->title, 'Private node not found in block by $no_access_user'); $this->assertText($public_node->title, 'Public node found in block by $no_access_user'); } + } diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageSwitchingTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageSwitchingTest.php index 6ff3024..8effdfe 100644 --- a/core/modules/language/lib/Drupal/language/Tests/LanguageSwitchingTest.php +++ b/core/modules/language/lib/Drupal/language/Tests/LanguageSwitchingTest.php @@ -42,16 +42,7 @@ function setUp() { */ function testLanguageBlock() { // Enable the language switching block. - $language_type = LANGUAGE_TYPE_INTERFACE; - $block_id = 'language_block:' . $language_type; - $default_theme = variable_get('theme_default', 'stark'); - $block = array( - 'title' => $this->randomName(8), - 'machine_name' => $this->randomName(8), - 'region' => 'sidebar_first', - ); - $this->drupalPost('admin/structure/block/manage/' . $block_id . '/' . $default_theme, $block, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), 'Block enabled'); + $block = $this->drupalPlaceBlock('language_block:' . LANGUAGE_TYPE_INTERFACE, array('machine_name' => 'test_language_block')); // Add language. $edit = array( @@ -65,10 +56,10 @@ function testLanguageBlock() { // Assert that the language switching block is displayed on the frontpage. $this->drupalGet(''); - $this->assertText($block['title'], 'Language switcher block found.'); + $this->assertText($block['subject'], 'Language switcher block found.'); // Assert that only the current language is marked as active. - list($language_switcher) = $this->xpath('//div[@id=:id]/div[@class="content"]', array(':id' => 'block-' . strtolower($block['machine_name']))); + list($language_switcher) = $this->xpath('//div[@id=:id]/div[@class="content"]', array(':id' => 'block-test-language-block')); $links = array( 'active' => array(), 'inactive' => array(), @@ -97,4 +88,5 @@ function testLanguageBlock() { $this->assertIdentical($links, array('active' => array('en'), 'inactive' => array('fr')), 'Only the current language list item is marked as active on the language switcher block.'); $this->assertIdentical($anchors, array('active' => array('en'), 'inactive' => array('fr')), 'Only the current language anchor is marked as active on the language switcher block.'); } + } diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php index 4b8b512..e86ad6c 100644 --- a/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php +++ b/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php @@ -402,15 +402,7 @@ function testUrlLanguageFallback() { $this->drupalGet('admin/config/regional/language/detection'); // Enable the language switcher block. - $block_id = 'language_block:' . LANGUAGE_TYPE_INTERFACE; - $default_theme = variable_get('theme_default', 'stark'); - $block = array( - 'title' => $this->randomName(8), - 'machine_name' => $this->randomName(8), - 'region' => 'sidebar_first', - ); - $this->drupalPost('admin/structure/block/manage/' . $block_id . '/' . $default_theme, $block, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), 'Block enabled'); + $this->drupalPlaceBlock('language_block:' . LANGUAGE_TYPE_INTERFACE, array('machine_name' => 'test_language_block')); // Access the front page without specifying any valid URL language prefix // and having as browser language preference a non-default language. @@ -420,7 +412,7 @@ function testUrlLanguageFallback() { // Check that the language switcher active link matches the given browser // language. - $args = array(':id' => 'block-' . strtolower($block['machine_name']), ':url' => base_path() . $GLOBALS['script_path'] . $langcode_browser_fallback); + $args = array(':id' => 'block-test-language-block', ':url' => base_path() . $GLOBALS['script_path'] . $langcode_browser_fallback); $fields = $this->xpath('//div[@id=:id]//a[@class="language-link active" and starts-with(@href, :url)]', $args); $this->assertTrue($fields[0] == $languages[$langcode_browser_fallback]->name, 'The browser language is the URL active language'); diff --git a/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php b/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php index ac2e4c3..97534fe 100644 --- a/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php +++ b/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php @@ -16,7 +16,7 @@ class MenuTest extends WebTestBase { * * @var array */ - public static $modules = array('menu'); + public static $modules = array('menu', 'block'); protected $profile = 'standard'; @@ -138,7 +138,6 @@ function addCustomMenuCRUD() { * Add custom menu. */ function addCustomMenu() { - // Add custom menu. // Try adding a menu using a menu_name that is too long. $this->drupalGet('admin/structure/menu/add'); @@ -176,16 +175,12 @@ function addCustomMenu() { // Enable the custom menu block. $menu_name = 'menu-' . $menu_name; // Drupal prepends the name with 'menu-'. - $default_theme = variable_get('theme_default', 'stark'); - $this->drupalGet("admin/structure/block/list/block_plugin_ui:{$default_theme}/add"); + // Confirm that the custom menu block is available. + $this->drupalGet('admin/structure/block/list/block_plugin_ui:' . variable_get('theme_default', 'stark') . '/add'); $this->assertText($title); - $block = array( - 'machine_name' => $this->randomName(8), - 'region' => 'sidebar_first', - ); - $this->drupalPost("admin/structure/block/manage/menu_menu_block:$menu_name/$default_theme", $block, t('Save block')); - $this->assertResponse(200); + // Enable the block. + $this->drupalPlaceBlock($menu_name); return menu_load($menu_name); } diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeBlockFunctionalTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeBlockFunctionalTest.php index 17711aa..b5d5205 100644 --- a/core/modules/node/lib/Drupal/node/Tests/NodeBlockFunctionalTest.php +++ b/core/modules/node/lib/Drupal/node/Tests/NodeBlockFunctionalTest.php @@ -60,22 +60,8 @@ public function testRecentNodeBlock() { 'access content' => FALSE, )); - // Enable the recent content block. - $block_id = 'node_recent_block'; - $default_theme = variable_get('theme_default', 'stark'); - $block = array( - 'title' => $this->randomName(8), - 'machine_name' => $this->randomName(8), - 'region' => 'sidebar_first', - ); - $this->drupalPost('admin/structure/block/manage/' . $block_id . '/' . $default_theme, $block, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), 'Node enabled.'); - - // Set the number of recent posts to 2. - $block['config_id'] = 'plugin.core.block.' . $default_theme . '.' . $block['machine_name']; - $config = config($block['config_id']); - $config->set('block_count', 2); - $config->save(); + // Enable the recent content block with two items. + $block = $this->drupalPlaceBlock('node_recent_block', array('machine_name' => 'test_block', 'block_count' => 2)); // Test that block is not visible without nodes. $this->drupalGet(''); @@ -105,7 +91,7 @@ public function testRecentNodeBlock() { // see the block. $this->drupalLogout(); $this->drupalGet(''); - $this->assertNoText($block['title'], 'Block was not found.'); + $this->assertNoText($block['subject'], 'Block was not found.'); // Test that only the 2 latest nodes are shown. $this->drupalLogin($this->webUser); @@ -114,7 +100,7 @@ public function testRecentNodeBlock() { $this->assertText($node3->label(), 'Node found in block.'); // Check to make sure nodes are in the right order. - $this->assertTrue($this->xpath('//div[@id="block-' . strtolower($block['machine_name']) . '"]/div/table/tbody/tr[position() = 1]/td/div/a[text() = "' . $node3->label() . '"]'), 'Nodes were ordered correctly in block.'); + $this->assertTrue($this->xpath('//div[@id="block-test-block"]/div/table/tbody/tr[position() = 1]/td/div/a[text() = "' . $node3->label() . '"]'), 'Nodes were ordered correctly in block.'); $this->drupalLogout(); $this->drupalLogin($this->adminUser); @@ -137,21 +123,10 @@ public function testRecentNodeBlock() { $this->assertText($node3->label(), 'Node found in block.'); $this->assertText($node4->label(), 'Node found in block.'); - // Enable the "Powered by Drupal" block and test the visibility by node - // type functionality. - $block_name = 'system_powered_by_block'; - $block = array( - 'machine_name' => $this->randomName(8), - 'region' => 'sidebar_first', - 'title' => $this->randomName(8), + // Enable the "Powered by Drupal" block only on article nodes. + $block = $this->drupalPlaceBlock('system_powered_by_block', array( 'visibility[node_type][types][article]' => TRUE, - ); - // Set the block to be shown only on node/xx if node is an article. - $this->drupalPost('admin/structure/block/manage/' . $block_name . '/' . $default_theme, $block, t('Save block')); - $this->assertText('The block configuration has been saved.', 'Block was saved'); - - // Configure the new forum topics block to only show 2 topics. - $block['config_id'] = 'plugin.core.block.' . $default_theme . '.' . $block['machine_name']; + )); $config = config($block['config_id']); $node_type_visibility = $config->get('visibility.node_type.types.article'); $this->assertEqual($node_type_visibility, 'article', 'Visibility settings were saved to configuration'); @@ -161,12 +136,13 @@ public function testRecentNodeBlock() { // Verify visibility rules. $this->drupalGet(''); - $this->assertNoText($block['title'], 'Block was not displayed on the front page.'); + $this->assertNoText($block['subject'], 'Block was not displayed on the front page.'); $this->drupalGet('node/add/article'); - $this->assertText($block['title'], 'Block was displayed on the node/add/article page.'); + $this->assertText($block['subject'], 'Block was displayed on the node/add/article page.'); $this->drupalGet('node/' . $node1->nid); - $this->assertText($block['title'], 'Block was displayed on the node/N when node is of type article.'); + $this->assertText($block['subject'], 'Block was displayed on the node/N when node is of type article.'); $this->drupalGet('node/' . $node5->nid); - $this->assertNoText($block['title'], 'Block was not displayed on nodes of type page.'); + $this->assertNoText($block['subject'], 'Block was not displayed on nodes of type page.'); } + } diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeBlockTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeBlockTest.php deleted file mode 100644 index b738129..0000000 --- a/core/modules/node/lib/Drupal/node/Tests/NodeBlockTest.php +++ /dev/null @@ -1,59 +0,0 @@ - 'Block availability', - 'description' => 'Check if the syndicate block is available.', - 'group' => 'Node', - ); - } - - function setUp() { - parent::setUp(); - - // Create a user and log in. - $admin_user = $this->drupalCreateUser(array('administer blocks')); - $this->drupalLogin($admin_user); - } - - /** - * Tests that the "Syndicate" block is shown when enabled. - */ - public function testSyndicateBlock() { - $block_id = 'node_syndicate_block'; - $default_theme = variable_get('theme_default', 'stark'); - - $block = array( - 'title' => $this->randomName(8), - 'machine_name' => $this->randomName(8), - 'region' => 'sidebar_second', - ); - - // Enable the syndicate block. - $this->drupalPost('admin/structure/block/manage/' . $block_id . '/' . $default_theme, $block, t('Save block')); - $this->assertText(t('The block configuration has been saved.'), 'Node syndicate block enabled.'); - - // Confirm that the block's xpath is available. - $xpath = $this->buildXPathQuery('//div[@id=:id]/*', array(':id' => 'block-' . strtr(strtolower($block['machine_name']), '-', '_'))); - $this->assertFieldByXPath($xpath, NULL, 'Syndicate block found.'); - } -} diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeSyndicateBlockTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeSyndicateBlockTest.php new file mode 100644 index 0000000..4e5a209 --- /dev/null +++ b/core/modules/node/lib/Drupal/node/Tests/NodeSyndicateBlockTest.php @@ -0,0 +1,47 @@ + 'Syndicate block', + 'description' => 'Check if the syndicate block is available.', + 'group' => 'Node', + ); + } + + function setUp() { + parent::setUp(); + + // Create a user and log in. + $admin_user = $this->drupalCreateUser(array('administer blocks')); + $this->drupalLogin($admin_user); + } + + /** + * Tests that the "Syndicate" block is shown when enabled. + */ + public function testSyndicateBlock() { + // Place the "Syndicate" block and confirm that it is rendered. + $this->drupalPlaceBlock('node_syndicate_block', array('machine_name' => 'test_syndicate_block')); + $this->assertFieldByXPath('//div[@id="block-test-syndicate-block"]/*', NULL, 'Syndicate block found.'); + } + +} diff --git a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php index 4e3b101..7c71e81 100644 --- a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php +++ b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php @@ -340,6 +340,79 @@ protected function drupalCreateContentType($settings = array()) { } /** + * Creates a block instance based on default settings. + * + * Note: Until this can be done programmatically, the active user account + * must have permission to administer blocks. + * + * @param string $plugin_id + * The plugin ID of the block type for this block instance. + * @param array $settings + * (optional) An associative array of settings for the block instance. + * Override the defaults by specifying the key and value in the array, for + * example: + * @code + * $this->drupalPlaceBlock('system_powered_by_block', array( + * 'title' => t('Hello, world!'), + * )); + * @endcode + * The following defaults are provided: + * - title: Random string. + * - machine_name: Random string. + * - region: 'sidebar_first'. + * @param string $theme + * (optional) The theme for which to add a block instance. Defaults to the + * default theme. + * + * @return array|false + * The block instance configuration from BlockBase::getConfig(), or FALSE + * on failure. + * + * @todo + * Create the block programmatically once block instances are configuration + * entities. + * @todo + * Add support for creating custom block instances. + */ + protected function drupalPlaceBlock($plugin_id, array $settings = array(), $theme = NULL) { + // Confirm that the active user has permission to add the block instance. + // @todo Remove this check once it is possible to do this programmatically. + if (!user_access('administer blocks', $this->loggedInUser)) { + $this->fail('The logged in user does not have permission to administer blocks.'); + return FALSE; + } + + // If no theme was specified, use the default theme. + $theme = variable_get('theme_default', 'stark'); + + // Populate some default block settings. + $settings += array( + 'title' => $this->randomName(8), + 'machine_name' => strtolower($this->randomName(8)), + 'region' => 'sidebar_first', + ); + + // Submit the block instance configuration. + $this->drupalPost('admin/structure/block/manage/' . $plugin_id . '/' . $theme, $settings, t('Save block')); + $this->assertText( + t('The block configuration has been saved.'), + format_string( + '%plugin block instance added for %theme', + array( + '%plugin' => $plugin_id, + '%theme' => $theme, + ) + ) + ); + + // Return the created block instance. + $instance_id = "plugin.core.block.$theme." . $settings['machine_name']; + $manager = $this->container->get('plugin.manager.block'); + $block = $manager->getInstance(array('config' => $instance_id)); + return $block->getConfig(); + } + + /** * Get a list files that can be used in tests. * * @param $type