function NodeActionsConfigurationTest::testAssignOwnerNodeActionAutocomplete

Same name and namespace in other branches
  1. 9 core/modules/node/tests/src/Functional/NodeActionsConfigurationTest.php \Drupal\Tests\node\Functional\NodeActionsConfigurationTest::testAssignOwnerNodeActionAutocomplete()
  2. 11.x core/modules/action/tests/src/Functional/Node/NodeActionsConfigurationTest.php \Drupal\Tests\action\Functional\Node\NodeActionsConfigurationTest::testAssignOwnerNodeActionAutocomplete()

Tests the autocomplete field when configuring the AssignOwnerNode action.

File

core/modules/action/tests/src/Functional/Node/NodeActionsConfigurationTest.php, line 110

Class

NodeActionsConfigurationTest
Tests configuration of actions provided by the Node module.

Namespace

Drupal\Tests\action\Functional\Node

Code

public function testAssignOwnerNodeActionAutocomplete() : void {
  // Create 200 users to force the action's configuration page to use an
  // autocomplete field instead of a select field. See
  // \Drupal\node\Plugin\Action\AssignOwnerNode::buildConfigurationForm().
  for ($i = 0; $i < 200; $i++) {
    $this->drupalCreateUser();
  }
  // Create a user with permission to view the actions administration pages
  // and additionally permission to administer users. Otherwise the user would
  // not be able to reference the anonymous user.
  $this->drupalLogin($this->drupalCreateUser([
    'administer actions',
    'administer users',
  ]));
  // Create AssignOwnerNode action.
  $this->drupalGet('admin/config/system/actions');
  $this->submitForm([
    'action' => 'node_assign_owner_action',
  ], 'Create');
  // Get the autocomplete URL of the owner_uid textfield.
  $autocomplete_field = $this->getSession()
    ->getPage()
    ->findField('owner_uid');
  $autocomplete_url = $this->getAbsoluteUrl($autocomplete_field->getAttribute('data-autocomplete-path'));
  // Make sure that autocomplete works.
  $user = $this->drupalCreateUser();
  $data = Json::decode($this->drupalGet($autocomplete_url, [
    'query' => [
      'q' => $user->getDisplayName(),
      '_format' => 'json',
    ],
  ]));
  $this->assertNotEmpty($data);
  $anonymous = User::getAnonymousUser();
  // Ensure that the anonymous user exists.
  $this->assertNotNull($anonymous);
  // Make sure the autocomplete does not show the anonymous user.
  $data = Json::decode($this->drupalGet($autocomplete_url, [
    'query' => [
      'q' => $anonymous->getDisplayName(),
      '_format' => 'json',
    ],
  ]));
  $this->assertEmpty($data);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.