Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\user\Kernel;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\KernelTests\KernelTestBase;
|
Chris@0
|
6 use Drupal\user\Entity\User;
|
Chris@0
|
7 use Drupal\user\RoleInterface;
|
Chris@0
|
8
|
Chris@0
|
9 /**
|
Chris@0
|
10 * Tests the user entity class.
|
Chris@0
|
11 *
|
Chris@0
|
12 * @group user
|
Chris@0
|
13 * @see \Drupal\user\Entity\User
|
Chris@0
|
14 */
|
Chris@0
|
15 class UserEntityTest extends KernelTestBase {
|
Chris@0
|
16
|
Chris@0
|
17 /**
|
Chris@0
|
18 * Modules to enable.
|
Chris@0
|
19 *
|
Chris@0
|
20 * @var array
|
Chris@0
|
21 */
|
Chris@0
|
22 public static $modules = ['system', 'user', 'field'];
|
Chris@0
|
23
|
Chris@0
|
24 /**
|
Chris@14
|
25 * {@inheritdoc}
|
Chris@14
|
26 */
|
Chris@14
|
27 protected function setUp() {
|
Chris@14
|
28 parent::setUp();
|
Chris@14
|
29 $this->installEntitySchema('user');
|
Chris@14
|
30 }
|
Chris@14
|
31
|
Chris@14
|
32 /**
|
Chris@0
|
33 * Tests some of the methods.
|
Chris@0
|
34 *
|
Chris@0
|
35 * @see \Drupal\user\Entity\User::getRoles()
|
Chris@0
|
36 * @see \Drupal\user\Entity\User::addRole()
|
Chris@0
|
37 * @see \Drupal\user\Entity\User::removeRole()
|
Chris@0
|
38 */
|
Chris@0
|
39 public function testUserMethods() {
|
Chris@0
|
40 $role_storage = $this->container->get('entity.manager')->getStorage('user_role');
|
Chris@0
|
41 $role_storage->create(['id' => 'test_role_one'])->save();
|
Chris@0
|
42 $role_storage->create(['id' => 'test_role_two'])->save();
|
Chris@0
|
43 $role_storage->create(['id' => 'test_role_three'])->save();
|
Chris@0
|
44
|
Chris@0
|
45 $values = [
|
Chris@0
|
46 'uid' => 1,
|
Chris@0
|
47 'roles' => ['test_role_one'],
|
Chris@0
|
48 ];
|
Chris@0
|
49 $user = User::create($values);
|
Chris@0
|
50
|
Chris@0
|
51 $this->assertTrue($user->hasRole('test_role_one'));
|
Chris@0
|
52 $this->assertFalse($user->hasRole('test_role_two'));
|
Chris@0
|
53 $this->assertEqual([RoleInterface::AUTHENTICATED_ID, 'test_role_one'], $user->getRoles());
|
Chris@0
|
54
|
Chris@0
|
55 $user->addRole('test_role_one');
|
Chris@0
|
56 $this->assertTrue($user->hasRole('test_role_one'));
|
Chris@0
|
57 $this->assertFalse($user->hasRole('test_role_two'));
|
Chris@0
|
58 $this->assertEqual([RoleInterface::AUTHENTICATED_ID, 'test_role_one'], $user->getRoles());
|
Chris@0
|
59
|
Chris@0
|
60 $user->addRole('test_role_two');
|
Chris@0
|
61 $this->assertTrue($user->hasRole('test_role_one'));
|
Chris@0
|
62 $this->assertTrue($user->hasRole('test_role_two'));
|
Chris@0
|
63 $this->assertEqual([RoleInterface::AUTHENTICATED_ID, 'test_role_one', 'test_role_two'], $user->getRoles());
|
Chris@0
|
64
|
Chris@0
|
65 $user->removeRole('test_role_three');
|
Chris@0
|
66 $this->assertTrue($user->hasRole('test_role_one'));
|
Chris@0
|
67 $this->assertTrue($user->hasRole('test_role_two'));
|
Chris@0
|
68 $this->assertEqual([RoleInterface::AUTHENTICATED_ID, 'test_role_one', 'test_role_two'], $user->getRoles());
|
Chris@0
|
69
|
Chris@0
|
70 $user->removeRole('test_role_one');
|
Chris@0
|
71 $this->assertFalse($user->hasRole('test_role_one'));
|
Chris@0
|
72 $this->assertTrue($user->hasRole('test_role_two'));
|
Chris@0
|
73 $this->assertEqual([RoleInterface::AUTHENTICATED_ID, 'test_role_two'], $user->getRoles());
|
Chris@0
|
74 }
|
Chris@0
|
75
|
Chris@14
|
76 /**
|
Chris@14
|
77 * Tests that all user fields validate properly.
|
Chris@14
|
78 *
|
Chris@14
|
79 * @see \Drupal\Core\Field\FieldItemListInterface::generateSampleItems
|
Chris@14
|
80 * @see \Drupal\Core\Field\FieldItemInterface::generateSampleValue()
|
Chris@14
|
81 * @see \Drupal\Core\Entity\FieldableEntityInterface::validate()
|
Chris@14
|
82 */
|
Chris@14
|
83 public function testUserValidation() {
|
Chris@14
|
84 $user = User::create([]);
|
Chris@14
|
85 foreach ($user as $field_name => $field) {
|
Chris@14
|
86 if (!in_array($field_name, ['uid'])) {
|
Chris@14
|
87 $user->$field_name->generateSampleItems();
|
Chris@14
|
88 }
|
Chris@14
|
89 }
|
Chris@14
|
90 $violations = $user->validate();
|
Chris@14
|
91 $this->assertFalse((bool) $violations->count());
|
Chris@14
|
92 }
|
Chris@14
|
93
|
Chris@0
|
94 }
|