Mercurial > hg > isophonics-drupal-site
view core/modules/block_place/tests/src/Functional/BlockPlaceTest.php @ 9:1fc0ff908d1f
Add another data file
author | Chris Cannam |
---|---|
date | Mon, 05 Feb 2018 12:34:32 +0000 |
parents | 4c8ae668cc8c |
children |
line wrap: on
line source
<?php namespace Drupal\Tests\block_place\Functional; use Drupal\Core\Url; use Drupal\Tests\BrowserTestBase; /** * Tests the placing a block. * * @group block_place */ class BlockPlaceTest extends BrowserTestBase { /** * Modules to install. * * @var array */ public static $modules = ['block', 'block_place', 'toolbar']; /** * Tests placing blocks as an admin. */ public function testPlacingBlocksAdmin() { // Create administrative user. $this->drupalLogin($this->drupalCreateUser([ 'access administration pages', 'access toolbar', 'administer blocks', 'view the administration theme', ])); $this->drupalGet(Url::fromRoute('<front>')); $this->clickLink('Place block'); // Each region should have one link to place a block. $theme_name = $this->container->get('theme.manager')->getActiveTheme()->getName(); $visible_regions = system_region_list($theme_name, REGIONS_VISIBLE); $this->assertGreaterThan(0, count($visible_regions)); $default_theme = $this->config('system.theme')->get('default'); $block_library_url = Url::fromRoute('block.admin_library', ['theme' => $default_theme]); foreach ($visible_regions as $region => $name) { $block_library_url->setOption('query', ['region' => $region]); $links = $this->xpath('//a[contains(@href, :href)]', [':href' => $block_library_url->toString()]); $this->assertEquals(1, count($links)); list(, $query_string) = explode('?', $links[0]->getAttribute('href'), 2); parse_str($query_string, $query_parts); $this->assertNotEmpty($query_parts['destination']); // Get the text inside the div->a->span->em. $demo_block = $this->xpath('//div[@class="block-place-region"]/a/span[text()="Place block in the "]/em[text()="' . $name . '"]'); $this->assertEquals(1, count($demo_block)); } } /** * Tests placing blocks as an unprivileged user. */ public function testPlacingBlocksUnprivileged() { // Create a user who cannot administer blocks. $this->drupalLogin($this->drupalCreateUser([ 'access administration pages', 'access toolbar', 'view the administration theme', ])); $this->drupalGet(Url::fromRoute('<front>')); $links = $this->xpath('//a[text()=:label]', [':label' => 'Place block']); $this->assertEmpty($links); $this->drupalGet(Url::fromRoute('block.admin_library', ['theme' => 'classy'])); $this->assertSession()->statusCodeEquals(403); } }