Mercurial > hg > isophonics-drupal-site
comparison core/modules/contextual/tests/src/FunctionalJavascript/EditModeTest.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 1fec387a4317 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\Tests\contextual\FunctionalJavascript; | |
4 | |
5 use Drupal\FunctionalJavascriptTests\JavascriptTestBase; | |
6 | |
7 /** | |
8 * Tests edit mode. | |
9 * | |
10 * @group contextual | |
11 */ | |
12 class EditModeTest extends JavascriptTestBase { | |
13 | |
14 /** | |
15 * CSS selector for Drupal's announce element. | |
16 */ | |
17 const ANNOUNCE_SELECTOR = '#drupal-live-announce'; | |
18 | |
19 /** | |
20 * {@inheritdoc} | |
21 */ | |
22 public static $modules = [ | |
23 'node', | |
24 'block', | |
25 'user', | |
26 'system', | |
27 'breakpoint', | |
28 'toolbar', | |
29 'contextual', | |
30 ]; | |
31 | |
32 /** | |
33 * {@inheritdoc} | |
34 */ | |
35 protected function setUp() { | |
36 parent::setUp(); | |
37 | |
38 $this->drupalLogin($this->createUser([ | |
39 'administer blocks', | |
40 'access contextual links', | |
41 'access toolbar', | |
42 ])); | |
43 $this->placeBlock('system_powered_by_block', ['id' => 'powered']); | |
44 } | |
45 | |
46 /** | |
47 * Tests that Drupal.announce messages appear. | |
48 */ | |
49 public function testAnnounceEditMode() { | |
50 $web_assert = $this->assertSession(); | |
51 $this->drupalGet('user'); | |
52 | |
53 // After the page loaded we need to additionally wait until the settings | |
54 // tray Ajax activity is done. | |
55 $web_assert->assertWaitOnAjaxRequest(); | |
56 | |
57 // Enable edit mode. | |
58 $this->pressToolbarEditButton(); | |
59 $this->assertAnnounceEditMode(); | |
60 // Disable edit mode. | |
61 $this->pressToolbarEditButton(); | |
62 $this->assertAnnounceLeaveEditMode(); | |
63 // Enable edit mode again. | |
64 $this->pressToolbarEditButton(); | |
65 // Finally assert that the 'edit mode enabled' announcement is still correct | |
66 // after toggling the edit mode at least once. | |
67 $this->assertAnnounceEditMode(); | |
68 } | |
69 | |
70 /** | |
71 * Presses the toolbar edit mode. | |
72 */ | |
73 protected function pressToolbarEditButton() { | |
74 $edit_button = $this->getSession()->getPage()->find('css', '#toolbar-bar div.contextual-toolbar-tab button'); | |
75 $edit_button->press(); | |
76 } | |
77 | |
78 /** | |
79 * Asserts that the correct message was announced when entering edit mode. | |
80 */ | |
81 protected function assertAnnounceEditMode() { | |
82 $web_assert = $this->assertSession(); | |
83 // Wait for contextual trigger button. | |
84 $web_assert->waitForElementVisible('css', '.contextual trigger'); | |
85 $web_assert->elementContains('css', static::ANNOUNCE_SELECTOR, 'Tabbing is constrained to a set of'); | |
86 $web_assert->elementNotContains('css', static::ANNOUNCE_SELECTOR, 'Tabbing is no longer constrained by the Contextual module.'); | |
87 } | |
88 | |
89 /** | |
90 * Assert that the correct message was announced when leaving edit mode. | |
91 */ | |
92 protected function assertAnnounceLeaveEditMode() { | |
93 $web_assert = $this->assertSession(); | |
94 $page = $this->getSession()->getPage(); | |
95 // Wait till all the contextual links are hidden. | |
96 $page->waitFor(1, function () use ($page, $web_assert) { | |
97 return empty($page->find('css', '.contextual .trigger.visually-hidden')); | |
98 }); | |
99 $web_assert->elementContains('css', static::ANNOUNCE_SELECTOR, 'Tabbing is no longer constrained by the Contextual module.'); | |
100 $web_assert->elementNotContains('css', static::ANNOUNCE_SELECTOR, 'Tabbing is constrained to a set of'); | |
101 } | |
102 | |
103 } |