3 namespace Drupal\Tests\user\Kernel;
5 use Drupal\field\Tests\EntityReference\EntityReferenceTestTrait;
6 use Drupal\field\Entity\FieldConfig;
7 use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
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());
81 /** @var \Drupal\Core\Entity\EntityAutocompleteMatcher $autocomplete */
82 $autocomplete = \Drupal::service('entity.autocomplete_matcher');
84 $matches = $autocomplete->getMatches('user', 'default', $field_definition->getSetting('handler_settings'), 'aabb');
85 $this->assertEqual(count($matches), 2);
87 foreach ($matches as $match) {
88 $users[] = $match['label'];
90 $this->assertTrue(in_array($user1->label(), $users));
91 $this->assertTrue(in_array($user2->label(), $users));
92 $this->assertFalse(in_array($user3->label(), $users));
94 $matches = $autocomplete->getMatches('user', 'default', $field_definition->getSetting('handler_settings'), 'aabbbb');
95 $this->assertEqual(count($matches), 0, '');