123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- <?php
- namespace Drupal\Tests\node\FunctionalJavascript;
- use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
- use Drupal\node\Entity\Node;
- use Drupal\Tests\contextual\FunctionalJavascript\ContextualLinkClickTrait;
- /**
- * Create a node with revisions and test contextual links.
- *
- * @group node
- */
- class ContextualLinksTest extends WebDriverTestBase {
- use ContextualLinkClickTrait;
- /**
- * An array of node revisions.
- *
- * @var \Drupal\node\NodeInterface[]
- */
- protected $nodes;
- /**
- * {@inheritdoc}
- */
- protected static $modules = ['node', 'contextual'];
- /**
- * {@inheritdoc}
- */
- protected function setUp() {
- parent::setUp();
- $this->drupalCreateContentType([
- 'type' => 'page',
- 'name' => 'Basic page',
- 'display_submitted' => FALSE,
- ]);
- // Create initial node.
- $node = $this->drupalCreateNode();
- $nodes = [];
- // Get original node.
- $nodes[] = clone $node;
- // Create two revisions.
- $revision_count = 2;
- for ($i = 0; $i < $revision_count; $i++) {
- // Create revision with a random title and body and update variables.
- $node->title = $this->randomMachineName();
- $node->body = [
- 'value' => $this->randomMachineName(32),
- 'format' => filter_default_format(),
- ];
- $node->setNewRevision();
- $node->save();
- // Make sure we get revision information.
- $node = Node::load($node->id());
- $nodes[] = clone $node;
- }
- $this->nodes = $nodes;
- $this->drupalLogin($this->createUser(
- [
- 'view page revisions',
- 'revert page revisions',
- 'delete page revisions',
- 'edit any page content',
- 'delete any page content',
- 'access contextual links',
- 'administer content types',
- ]
- ));
- }
- /**
- * Tests the contextual links on revisions.
- */
- public function testRevisionContextualLinks() {
- // Confirm that the "Edit" and "Delete" contextual links appear for the
- // default revision.
- $this->drupalGet('node/' . $this->nodes[0]->id());
- $page = $this->getSession()->getPage();
- $page->waitFor(10, function () use ($page) {
- return $page->find('css', "main .contextual");
- });
- $this->toggleContextualTriggerVisibility('main');
- $page->find('css', 'main .contextual button')->press();
- $links = $page->findAll('css', "main .contextual-links li a");
- $this->assertEquals('Edit', $links[0]->getText());
- $this->assertEquals('Delete', $links[1]->getText());
- // Confirm that "Edit" and "Delete" contextual links don't appear for
- // non-default revision.
- $this->drupalGet("node/" . $this->nodes[0]->id() . "/revisions/" . $this->nodes[1]->getRevisionId() . "/view");
- $this->assertSession()->pageTextContains($this->nodes[1]->getTitle());
- $page->waitFor(10, function () use ($page) {
- return $page->find('css', "main .contextual");
- });
- $this->toggleContextualTriggerVisibility('main');
- $contextual_button = $page->find('css', 'main .contextual button');
- $this->assertEmpty(0, $contextual_button);
- }
- }
|