Mercurial > hg > isophonics-drupal-site
comparison core/modules/node/tests/src/FunctionalJavascript/ContextualLinksTest.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:21:36 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
16:c2387f117808 | 17:129ea1e6d783 |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\Tests\node\FunctionalJavascript; | |
4 | |
5 use Drupal\FunctionalJavascriptTests\WebDriverTestBase; | |
6 use Drupal\node\Entity\Node; | |
7 use Drupal\Tests\contextual\FunctionalJavascript\ContextualLinkClickTrait; | |
8 | |
9 /** | |
10 * Create a node with revisions and test contextual links. | |
11 * | |
12 * @group node | |
13 */ | |
14 class ContextualLinksTest extends WebDriverTestBase { | |
15 | |
16 use ContextualLinkClickTrait; | |
17 | |
18 /** | |
19 * An array of node revisions. | |
20 * | |
21 * @var \Drupal\node\NodeInterface[] | |
22 */ | |
23 protected $nodes; | |
24 | |
25 | |
26 /** | |
27 * {@inheritdoc} | |
28 */ | |
29 protected static $modules = ['node', 'contextual']; | |
30 | |
31 /** | |
32 * {@inheritdoc} | |
33 */ | |
34 protected function setUp() { | |
35 parent::setUp(); | |
36 | |
37 $this->drupalCreateContentType([ | |
38 'type' => 'page', | |
39 'name' => 'Basic page', | |
40 'display_submitted' => FALSE, | |
41 ]); | |
42 | |
43 // Create initial node. | |
44 $node = $this->drupalCreateNode(); | |
45 | |
46 $nodes = []; | |
47 | |
48 // Get original node. | |
49 $nodes[] = clone $node; | |
50 | |
51 // Create two revisions. | |
52 $revision_count = 2; | |
53 for ($i = 0; $i < $revision_count; $i++) { | |
54 | |
55 // Create revision with a random title and body and update variables. | |
56 $node->title = $this->randomMachineName(); | |
57 $node->body = [ | |
58 'value' => $this->randomMachineName(32), | |
59 'format' => filter_default_format(), | |
60 ]; | |
61 $node->setNewRevision(); | |
62 | |
63 $node->save(); | |
64 | |
65 // Make sure we get revision information. | |
66 $node = Node::load($node->id()); | |
67 $nodes[] = clone $node; | |
68 } | |
69 | |
70 $this->nodes = $nodes; | |
71 | |
72 $this->drupalLogin($this->createUser( | |
73 [ | |
74 'view page revisions', | |
75 'revert page revisions', | |
76 'delete page revisions', | |
77 'edit any page content', | |
78 'delete any page content', | |
79 'access contextual links', | |
80 'administer content types', | |
81 ] | |
82 )); | |
83 } | |
84 | |
85 /** | |
86 * Tests the contextual links on revisions. | |
87 */ | |
88 public function testRevisionContextualLinks() { | |
89 // Confirm that the "Edit" and "Delete" contextual links appear for the | |
90 // default revision. | |
91 $this->drupalGet('node/' . $this->nodes[0]->id()); | |
92 $page = $this->getSession()->getPage(); | |
93 $page->waitFor(10, function () use ($page) { | |
94 return $page->find('css', "main .contextual"); | |
95 }); | |
96 | |
97 $this->toggleContextualTriggerVisibility('main'); | |
98 $page->find('css', 'main .contextual button')->press(); | |
99 $links = $page->findAll('css', "main .contextual-links li a"); | |
100 | |
101 $this->assertEquals('Edit', $links[0]->getText()); | |
102 $this->assertEquals('Delete', $links[1]->getText()); | |
103 | |
104 // Confirm that "Edit" and "Delete" contextual links don't appear for | |
105 // non-default revision. | |
106 $this->drupalGet("node/" . $this->nodes[0]->id() . "/revisions/" . $this->nodes[1]->getRevisionId() . "/view"); | |
107 $this->assertSession()->pageTextContains($this->nodes[1]->getTitle()); | |
108 $page->waitFor(10, function () use ($page) { | |
109 return $page->find('css', "main .contextual"); | |
110 }); | |
111 | |
112 $this->toggleContextualTriggerVisibility('main'); | |
113 $contextual_button = $page->find('css', 'main .contextual button'); | |
114 $this->assertEmpty(0, $contextual_button); | |
115 } | |
116 | |
117 } |