Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\user\Kernel;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\field\Entity\FieldConfig;
|
Chris@0
|
6 use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
|
Chris@17
|
7 use Drupal\Tests\field\Traits\EntityReferenceTestTrait;
|
Chris@0
|
8 use Drupal\user\Entity\Role;
|
Chris@0
|
9
|
Chris@0
|
10 /**
|
Chris@0
|
11 * Tests the user reference field functionality.
|
Chris@0
|
12 *
|
Chris@0
|
13 * @group user
|
Chris@0
|
14 */
|
Chris@0
|
15 class UserEntityReferenceTest extends EntityKernelTestBase {
|
Chris@0
|
16
|
Chris@0
|
17 use EntityReferenceTestTrait;
|
Chris@0
|
18
|
Chris@0
|
19 /**
|
Chris@0
|
20 * A randomly-generated role for testing purposes.
|
Chris@0
|
21 *
|
Chris@0
|
22 * @var \Drupal\user\RoleInterface
|
Chris@0
|
23 */
|
Chris@0
|
24 protected $role1;
|
Chris@0
|
25
|
Chris@0
|
26 /**
|
Chris@0
|
27 * A randomly-generated role for testing purposes.
|
Chris@0
|
28 *
|
Chris@0
|
29 * @var \Drupal\user\RoleInterface
|
Chris@0
|
30 */
|
Chris@0
|
31 protected $role2;
|
Chris@0
|
32
|
Chris@0
|
33 /**
|
Chris@0
|
34 * {@inheritdoc}
|
Chris@0
|
35 */
|
Chris@0
|
36 protected function setUp() {
|
Chris@0
|
37 parent::setUp();
|
Chris@0
|
38
|
Chris@0
|
39 $this->role1 = Role::create([
|
Chris@0
|
40 'id' => strtolower($this->randomMachineName(8)),
|
Chris@0
|
41 'label' => $this->randomMachineName(8),
|
Chris@0
|
42 ]);
|
Chris@0
|
43 $this->role1->save();
|
Chris@0
|
44
|
Chris@0
|
45 $this->role2 = Role::create([
|
Chris@0
|
46 'id' => strtolower($this->randomMachineName(8)),
|
Chris@0
|
47 'label' => $this->randomMachineName(8),
|
Chris@0
|
48 ]);
|
Chris@0
|
49 $this->role2->save();
|
Chris@0
|
50
|
Chris@0
|
51 $this->createEntityReferenceField('user', 'user', 'user_reference', 'User reference', 'user');
|
Chris@0
|
52 }
|
Chris@0
|
53
|
Chris@0
|
54 /**
|
Chris@0
|
55 * Tests user selection by roles.
|
Chris@0
|
56 */
|
Chris@0
|
57 public function testUserSelectionByRole() {
|
Chris@0
|
58 $field_definition = FieldConfig::loadByName('user', 'user', 'user_reference');
|
Chris@0
|
59 $handler_settings = $field_definition->getSetting('handler_settings');
|
Chris@0
|
60 $handler_settings['filter']['role'] = [
|
Chris@0
|
61 $this->role1->id() => $this->role1->id(),
|
Chris@0
|
62 $this->role2->id() => 0,
|
Chris@0
|
63 ];
|
Chris@0
|
64 $handler_settings['filter']['type'] = 'role';
|
Chris@0
|
65 $field_definition->setSetting('handler_settings', $handler_settings);
|
Chris@0
|
66 $field_definition->save();
|
Chris@0
|
67
|
Chris@0
|
68 $user1 = $this->createUser(['name' => 'aabb']);
|
Chris@0
|
69 $user1->addRole($this->role1->id());
|
Chris@0
|
70 $user1->save();
|
Chris@0
|
71
|
Chris@0
|
72 $user2 = $this->createUser(['name' => 'aabbb']);
|
Chris@0
|
73 $user2->addRole($this->role1->id());
|
Chris@0
|
74 $user2->save();
|
Chris@0
|
75
|
Chris@0
|
76 $user3 = $this->createUser(['name' => 'aabbbb']);
|
Chris@0
|
77 $user3->addRole($this->role2->id());
|
Chris@0
|
78 $user3->save();
|
Chris@0
|
79
|
Chris@0
|
80 /** @var \Drupal\Core\Entity\EntityAutocompleteMatcher $autocomplete */
|
Chris@0
|
81 $autocomplete = \Drupal::service('entity.autocomplete_matcher');
|
Chris@0
|
82
|
Chris@0
|
83 $matches = $autocomplete->getMatches('user', 'default', $field_definition->getSetting('handler_settings'), 'aabb');
|
Chris@0
|
84 $this->assertEqual(count($matches), 2);
|
Chris@0
|
85 $users = [];
|
Chris@0
|
86 foreach ($matches as $match) {
|
Chris@0
|
87 $users[] = $match['label'];
|
Chris@0
|
88 }
|
Chris@0
|
89 $this->assertTrue(in_array($user1->label(), $users));
|
Chris@0
|
90 $this->assertTrue(in_array($user2->label(), $users));
|
Chris@0
|
91 $this->assertFalse(in_array($user3->label(), $users));
|
Chris@0
|
92
|
Chris@0
|
93 $matches = $autocomplete->getMatches('user', 'default', $field_definition->getSetting('handler_settings'), 'aabbbb');
|
Chris@0
|
94 $this->assertEqual(count($matches), 0, '');
|
Chris@0
|
95 }
|
Chris@0
|
96
|
Chris@0
|
97 }
|