You are here

public function UserEntityReferenceTest::testUserSelectionByRole in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/user/tests/src/Kernel/UserEntityReferenceTest.php \Drupal\Tests\user\Kernel\UserEntityReferenceTest::testUserSelectionByRole()
  2. 10 core/modules/user/tests/src/Kernel/UserEntityReferenceTest.php \Drupal\Tests\user\Kernel\UserEntityReferenceTest::testUserSelectionByRole()

Tests user selection by roles.

File

core/modules/user/tests/src/Kernel/UserEntityReferenceTest.php, line 57

Class

UserEntityReferenceTest
Tests the user reference field functionality.

Namespace

Drupal\Tests\user\Kernel

Code

public function testUserSelectionByRole() {
  $field_definition = FieldConfig::loadByName('user', 'user', 'user_reference');
  $handler_settings = $field_definition
    ->getSetting('handler_settings');
  $handler_settings['filter']['role'] = [
    $this->role1
      ->id() => $this->role1
      ->id(),
    $this->role2
      ->id() => 0,
  ];
  $handler_settings['filter']['type'] = 'role';
  $field_definition
    ->setSetting('handler_settings', $handler_settings);
  $field_definition
    ->save();
  $user1 = $this
    ->createUser([
    'name' => 'aabb',
  ]);
  $user1
    ->addRole($this->role1
    ->id());
  $user1
    ->save();
  $user2 = $this
    ->createUser([
    'name' => 'aabbb',
  ]);
  $user2
    ->addRole($this->role1
    ->id());
  $user2
    ->save();
  $user3 = $this
    ->createUser([
    'name' => 'aabbbb',
  ]);
  $user3
    ->addRole($this->role2
    ->id());
  $user3
    ->save();

  /** @var \Drupal\Core\Entity\EntityAutocompleteMatcherInterface $autocomplete */
  $autocomplete = \Drupal::service('entity.autocomplete_matcher');
  $matches = $autocomplete
    ->getMatches('user', 'default', $field_definition
    ->getSetting('handler_settings'), 'aabb');
  $this
    ->assertCount(2, $matches);
  $users = [];
  foreach ($matches as $match) {
    $users[] = $match['label'];
  }
  $this
    ->assertContains($user1
    ->label(), $users);
  $this
    ->assertContains($user2
    ->label(), $users);
  $this
    ->assertNotContains($user3
    ->label(), $users);
  $matches = $autocomplete
    ->getMatches('user', 'default', $field_definition
    ->getSetting('handler_settings'), 'aabbbb');
  $this
    ->assertCount(0, $matches);
}