3 namespace Drupal\Tests\user\Kernel;
5 use Drupal\field\Entity\FieldConfig;
6 use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
7 use Drupal\Tests\field\Traits\EntityReferenceTestTrait;
8 use Drupal\user\Entity\Role;
11 * Tests the user reference field functionality.
15 class UserEntityReferenceTest extends EntityKernelTestBase {
17 use EntityReferenceTestTrait;
20 * A randomly-generated role for testing purposes.
22 * @var \Drupal\user\RoleInterface
27 * A randomly-generated role for testing purposes.
29 * @var \Drupal\user\RoleInterface
36 protected function setUp() {
39 $this->role1 = Role::create([
40 'id' => strtolower($this->randomMachineName(8)),
41 'label' => $this->randomMachineName(8),
45 $this->role2 = Role::create([
46 'id' => strtolower($this->randomMachineName(8)),
47 'label' => $this->randomMachineName(8),
51 $this->createEntityReferenceField('user', 'user', 'user_reference', 'User reference', 'user');
55 * Tests user selection by roles.
57 public function testUserSelectionByRole() {
58 $field_definition = FieldConfig::loadByName('user', 'user', 'user_reference');
59 $handler_settings = $field_definition->getSetting('handler_settings');
60 $handler_settings['filter']['role'] = [
61 $this->role1->id() => $this->role1->id(),
62 $this->role2->id() => 0,
64 $handler_settings['filter']['type'] = 'role';
65 $field_definition->setSetting('handler_settings', $handler_settings);
66 $field_definition->save();
68 $user1 = $this->createUser(['name' => 'aabb']);
69 $user1->addRole($this->role1->id());
72 $user2 = $this->createUser(['name' => 'aabbb']);
73 $user2->addRole($this->role1->id());
76 $user3 = $this->createUser(['name' => 'aabbbb']);
77 $user3->addRole($this->role2->id());
80 /** @var \Drupal\Core\Entity\EntityAutocompleteMatcher $autocomplete */
81 $autocomplete = \Drupal::service('entity.autocomplete_matcher');
83 $matches = $autocomplete->getMatches('user', 'default', $field_definition->getSetting('handler_settings'), 'aabb');
84 $this->assertEqual(count($matches), 2);
86 foreach ($matches as $match) {
87 $users[] = $match['label'];
89 $this->assertTrue(in_array($user1->label(), $users));
90 $this->assertTrue(in_array($user2->label(), $users));
91 $this->assertFalse(in_array($user3->label(), $users));
93 $matches = $autocomplete->getMatches('user', 'default', $field_definition->getSetting('handler_settings'), 'aabbbb');
94 $this->assertEqual(count($matches), 0, '');