annotate core/modules/node/tests/src/FunctionalJavascript/ContextualLinksTest.php @ 19:fa3358dc1485 tip

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