4e48fba0307955fb95999be43d5bb9b7ba28e06a
[yaffs-website] / web / core / modules / user / tests / src / Unit / Views / Argument / RolesRidTest.php
1 <?php
2
3 namespace Drupal\Tests\user\Unit\Views\Argument;
4
5 use Drupal\Core\DependencyInjection\ContainerBuilder;
6 use Drupal\Core\Entity\EntityManager;
7 use Drupal\Core\Entity\EntityTypeManagerInterface;
8 use Drupal\Tests\UnitTestCase;
9 use Drupal\user\Entity\Role;
10 use Drupal\user\Plugin\views\argument\RolesRid;
11
12 /**
13  * @coversDefaultClass \Drupal\user\Plugin\views\argument\RolesRid
14  * @group user
15  */
16 class RolesRidTest extends UnitTestCase {
17
18   /**
19    * Tests the titleQuery method.
20    *
21    * @covers ::titleQuery
22    */
23   public function testTitleQuery() {
24     $role1 = new Role([
25       'id' => 'test_rid_1',
26       'label' => 'test rid 1'
27     ], 'user_role');
28     $role2 = new Role([
29       'id' => 'test_rid_2',
30       'label' => 'test <strong>rid 2</strong>',
31     ], 'user_role');
32
33     // Creates a stub entity storage;
34     $role_storage = $this->getMockForAbstractClass('Drupal\Core\Entity\EntityStorageInterface');
35     $role_storage->expects($this->any())
36       ->method('loadMultiple')
37       ->will($this->returnValueMap([
38         [[], []],
39         [['test_rid_1'], ['test_rid_1' => $role1]],
40         [['test_rid_1', 'test_rid_2'], ['test_rid_1' => $role1, 'test_rid_2' => $role2]],
41       ]));
42
43     $entity_type = $this->getMock('Drupal\Core\Entity\EntityTypeInterface');
44     $entity_type->expects($this->any())
45       ->method('getKey')
46       ->with('label')
47       ->will($this->returnValue('label'));
48
49     $entity_manager = new EntityManager();
50     $entity_type_manager = $this->getMock(EntityTypeManagerInterface::class);
51     $entity_type_manager->expects($this->any())
52       ->method('getDefinition')
53       ->with($this->equalTo('user_role'))
54       ->will($this->returnValue($entity_type));
55
56     $entity_type_manager
57       ->expects($this->once())
58       ->method('getStorage')
59       ->with($this->equalTo('user_role'))
60       ->will($this->returnValue($role_storage));
61
62     // Set up a minimal container to satisfy Drupal\Core\Entity\Entity's
63     // dependency on it.
64     $container = new ContainerBuilder();
65     $container->set('entity.manager', $entity_manager);
66     $container->set('entity_type.manager', $entity_type_manager);
67     // Inject the container into entity.manager so it can defer to
68     // entity_type.manager.
69     $entity_manager->setContainer($container);
70     \Drupal::setContainer($container);
71
72     $roles_rid_argument = new RolesRid([], 'user__roles_rid', [], $entity_manager);
73
74     $roles_rid_argument->value = [];
75     $titles = $roles_rid_argument->titleQuery();
76     $this->assertEquals([], $titles);
77
78     $roles_rid_argument->value = ['test_rid_1'];
79     $titles = $roles_rid_argument->titleQuery();
80     $this->assertEquals(['test rid 1'], $titles);
81
82     $roles_rid_argument->value = ['test_rid_1', 'test_rid_2'];
83     $titles = $roles_rid_argument->titleQuery();
84     $this->assertEquals(['test rid 1', 'test <strong>rid 2</strong>'], $titles);
85   }
86
87 }