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