first commit
This commit is contained in:
+12
@@ -0,0 +1,12 @@
|
||||
name: 'Disable user toolbar'
|
||||
type: module
|
||||
description: 'Support module for testing toolbar without user toolbar'
|
||||
package: Testing
|
||||
# version: VERSION
|
||||
# core: 8.x
|
||||
|
||||
# Information added by Drupal.org packaging script on 2017-04-19
|
||||
version: '8.3.1'
|
||||
core: '8.x'
|
||||
project: 'drupal'
|
||||
datestamp: 1492622988
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Test module.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Implements hook_toolbar_alter().
|
||||
*/
|
||||
function toolbar_disable_user_toolbar_toolbar_alter(&$items) {
|
||||
unset($items['user']);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
name: 'Toolbar module API tests'
|
||||
type: module
|
||||
description: 'Support module for toolbar testing.'
|
||||
package: Testing
|
||||
# version: VERSION
|
||||
# core: 8.x
|
||||
|
||||
# Information added by Drupal.org packaging script on 2017-04-19
|
||||
version: '8.3.1'
|
||||
core: '8.x'
|
||||
project: 'drupal'
|
||||
datestamp: 1492622988
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* A dummy module to test API interaction with the Toolbar module.
|
||||
*/
|
||||
|
||||
use Drupal\Core\Url;
|
||||
|
||||
/**
|
||||
* Implements hook_toolbar().
|
||||
*/
|
||||
function toolbar_test_toolbar() {
|
||||
|
||||
$items['testing'] = [
|
||||
'#type' => 'toolbar_item',
|
||||
'tab' => [
|
||||
'#type' => 'link',
|
||||
'#title' => t('Test tab'),
|
||||
'#url' => Url::fromRoute('<front>'),
|
||||
'#options' => [
|
||||
'attributes' => [
|
||||
'id' => 'toolbar-tab-testing',
|
||||
'title' => t('Test tab'),
|
||||
],
|
||||
],
|
||||
],
|
||||
'tray' => [
|
||||
'#heading' => t('Test tray'),
|
||||
'#wrapper_attributes' => [
|
||||
'id' => 'toolbar-tray-testing',
|
||||
],
|
||||
'content' => [
|
||||
'#theme' => 'item_list',
|
||||
'#items' => [
|
||||
\Drupal::l(t('link 1'), new Url('<front>', [], ['attributes' => ['title' => 'Test link 1 title']])),
|
||||
\Drupal::l(t('link 2'), new Url('<front>', [], ['attributes' => ['title' => 'Test link 2 title']])),
|
||||
\Drupal::l(t('link 3'), new Url('<front>', [], ['attributes' => ['title' => 'Test link 3 title']])),
|
||||
],
|
||||
'#attributes' => [
|
||||
'class' => ['toolbar-menu'],
|
||||
],
|
||||
],
|
||||
],
|
||||
'#weight' => 50,
|
||||
];
|
||||
|
||||
return $items;
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace Drupal\Tests\toolbar\Functional;
|
||||
|
||||
use Drupal\Tests\BrowserTestBase;
|
||||
|
||||
/**
|
||||
* Tests the implementation of hook_toolbar() by a module.
|
||||
*
|
||||
* @group toolbar
|
||||
*/
|
||||
class ToolbarHookToolbarTest extends BrowserTestBase {
|
||||
|
||||
/**
|
||||
* A user with permission to access the administrative toolbar.
|
||||
*
|
||||
* @var \Drupal\user\UserInterface
|
||||
*/
|
||||
protected $adminUser;
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = ['toolbar', 'toolbar_test', 'test_page_test'];
|
||||
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
// Create an administrative user and log it in.
|
||||
$this->adminUser = $this->drupalCreateUser(['access toolbar']);
|
||||
$this->drupalLogin($this->adminUser);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for a tab and tray provided by a module implementing hook_toolbar().
|
||||
*/
|
||||
public function testHookToolbar() {
|
||||
$this->drupalGet('test-page');
|
||||
$this->assertResponse(200);
|
||||
|
||||
// Assert that the toolbar is present in the HTML.
|
||||
$this->assertRaw('id="toolbar-administration"');
|
||||
|
||||
// Assert that the tab registered by toolbar_test is present.
|
||||
$this->assertRaw('id="toolbar-tab-testing"');
|
||||
|
||||
// Assert that the tab item descriptions are present.
|
||||
$this->assertRaw('title="Test tab"');
|
||||
|
||||
// Assert that the tray registered by toolbar_test is present.
|
||||
$this->assertRaw('id="toolbar-tray-testing"');
|
||||
|
||||
// Assert that tray item descriptions are present.
|
||||
$this->assertRaw('title="Test link 1 title"');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace Drupal\Tests\toolbar\FunctionalJavascript;
|
||||
|
||||
use Drupal\FunctionalJavascriptTests\JavascriptTestBase;
|
||||
|
||||
/**
|
||||
* Tests the JavaScript functionality of the toolbar.
|
||||
*
|
||||
* @group toolbar
|
||||
*/
|
||||
class ToolbarIntegrationTest extends JavascriptTestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $modules = ['toolbar', 'node'];
|
||||
|
||||
/**
|
||||
* Tests if the toolbar can be toggled with JavaScript.
|
||||
*/
|
||||
public function testToolbarToggling() {
|
||||
$admin_user = $this->drupalCreateUser([
|
||||
'access toolbar',
|
||||
'administer site configuration',
|
||||
'access content overview',
|
||||
]);
|
||||
$this->drupalLogin($admin_user);
|
||||
|
||||
$this->drupalGet('<front>');
|
||||
$page = $this->getSession()->getPage();
|
||||
|
||||
// Test that it is possible to toggle the toolbar tray.
|
||||
$content = $page->findLink('Content');
|
||||
$this->assertTrue($content->isVisible(), 'Toolbar tray is open by default.');
|
||||
$page->clickLink('Manage');
|
||||
$this->assertFalse($content->isVisible(), 'Toolbar tray is closed after clicking the "Manage" link.');
|
||||
$page->clickLink('Manage');
|
||||
$this->assertTrue($content->isVisible(), 'Toolbar tray is visible again after clicking the "Manage" button a second time.');
|
||||
|
||||
// Test toggling the toolbar tray between horizontal and vertical.
|
||||
$tray = $page->findById('toolbar-item-administration-tray');
|
||||
$this->assertFalse($tray->hasClass('toolbar-tray-vertical'), 'Toolbar tray is not vertically oriented by default.');
|
||||
$page->pressButton('Vertical orientation');
|
||||
$this->assertTrue($tray->hasClass('toolbar-tray-vertical'), 'After toggling the orientation the toolbar tray is now displayed vertically.');
|
||||
|
||||
$page->pressButton('Horizontal orientation');
|
||||
$this->assertTrue($tray->hasClass('toolbar-tray-horizontal'), 'After toggling the orientation a second time the toolbar tray is displayed horizontally again.');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace Drupal\Tests\toolbar\Unit\PageCache;
|
||||
|
||||
use Drupal\toolbar\PageCache\AllowToolbarPath;
|
||||
use Drupal\Core\PageCache\RequestPolicyInterface;
|
||||
use Drupal\Tests\UnitTestCase;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass \Drupal\toolbar\PageCache\AllowToolbarPath
|
||||
* @group toolbar
|
||||
*/
|
||||
class AllowToolbarPathTest extends UnitTestCase {
|
||||
|
||||
/**
|
||||
* The toolbar path policy under test.
|
||||
*
|
||||
* @var \Drupal\toolbar\PageCache\AllowToolbarPath
|
||||
*/
|
||||
protected $policy;
|
||||
|
||||
protected function setUp() {
|
||||
$this->policy = new AllowToolbarPath();
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that caching is allowed if the request goes to toolbar subtree.
|
||||
*
|
||||
* @dataProvider providerTestAllowToolbarPath
|
||||
* @covers ::check
|
||||
*/
|
||||
public function testAllowToolbarPath($expected_result, $path) {
|
||||
$request = Request::create($path);
|
||||
$result = $this->policy->check($request);
|
||||
$this->assertSame($expected_result, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides data and expected results for the test method.
|
||||
*
|
||||
* @return array
|
||||
* Data and expected results.
|
||||
*/
|
||||
public function providerTestAllowToolbarPath() {
|
||||
return [
|
||||
[NULL, '/'],
|
||||
[NULL, '/other-path?q=/toolbar/subtrees/'],
|
||||
[NULL, '/toolbar/subtrees/'],
|
||||
[NULL, '/toolbar/subtrees/some-hash/langcode/additional-stuff'],
|
||||
[RequestPolicyInterface::ALLOW, '/de/toolbar/subtrees/abcd'],
|
||||
[RequestPolicyInterface::ALLOW, '/en-us/toolbar/subtrees/xyz'],
|
||||
[RequestPolicyInterface::ALLOW, '/en-us/toolbar/subtrees/xyz/de'],
|
||||
[RequestPolicyInterface::ALLOW, '/a/b/c/toolbar/subtrees/xyz/de'],
|
||||
[RequestPolicyInterface::ALLOW, '/toolbar/subtrees/some-hash'],
|
||||
[RequestPolicyInterface::ALLOW, '/toolbar/subtrees/some-hash/en'],
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user