Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\views\Unit;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Tests\UnitTestCase;
|
Chris@0
|
6 use Drupal\views\Plugin\ViewsHandlerManager;
|
Chris@0
|
7
|
Chris@0
|
8 /**
|
Chris@0
|
9 * Tests the ViewsHandlerManager class.
|
Chris@0
|
10 *
|
Chris@0
|
11 * @group views
|
Chris@0
|
12 *
|
Chris@0
|
13 * @coversDefaultClass \Drupal\views\Plugin\ViewsHandlerManager
|
Chris@0
|
14 */
|
Chris@0
|
15 class ViewsHandlerManagerTest extends UnitTestCase {
|
Chris@0
|
16
|
Chris@0
|
17 /**
|
Chris@0
|
18 * @var \Drupal\views\Plugin\ViewsHandlerManager
|
Chris@0
|
19 */
|
Chris@0
|
20 protected $handlerManager;
|
Chris@0
|
21
|
Chris@0
|
22 /**
|
Chris@0
|
23 * @var \Drupal\Core\Extension\ModuleHandlerInterface|\PHPUnit_Framework_MockObject_MockObject
|
Chris@0
|
24 */
|
Chris@0
|
25 protected $moduleHandler;
|
Chris@0
|
26
|
Chris@0
|
27 /**
|
Chris@0
|
28 * The mocked views data.
|
Chris@0
|
29 *
|
Chris@0
|
30 * @var \Drupal\views\ViewsData|\PHPUnit_Framework_MockObject_MockObject
|
Chris@0
|
31 */
|
Chris@0
|
32 protected $viewsData;
|
Chris@0
|
33
|
Chris@0
|
34 /**
|
Chris@0
|
35 * The mocked factory.
|
Chris@0
|
36 *
|
Chris@0
|
37 * @var \Drupal\Component\Plugin\Factory\FactoryInterface|\PHPUnit_Framework_MockObject_MockObject
|
Chris@0
|
38 */
|
Chris@0
|
39 protected $factory;
|
Chris@0
|
40
|
Chris@0
|
41 /**
|
Chris@0
|
42 * {@inheritdoc}
|
Chris@0
|
43 */
|
Chris@0
|
44 protected function setUp() {
|
Chris@0
|
45 parent::setUp();
|
Chris@0
|
46 $this->viewsData = $this->getMockBuilder('Drupal\views\ViewsData')
|
Chris@0
|
47 ->disableOriginalConstructor()
|
Chris@0
|
48 ->getMock();
|
Chris@0
|
49 $cache_backend = $this->getMock('Drupal\Core\Cache\CacheBackendInterface');
|
Chris@0
|
50 $this->moduleHandler = $this->getMock('Drupal\Core\Extension\ModuleHandlerInterface');
|
Chris@0
|
51 $this->handlerManager = new ViewsHandlerManager('test', new \ArrayObject([]), $this->viewsData, $cache_backend, $this->moduleHandler);
|
Chris@0
|
52 }
|
Chris@0
|
53
|
Chris@0
|
54 /**
|
Chris@0
|
55 * Setups of the plugin factory.
|
Chris@0
|
56 */
|
Chris@0
|
57 protected function setupMockedFactory() {
|
Chris@0
|
58 $this->factory = $this->getMock('Drupal\Component\Plugin\Factory\FactoryInterface');
|
Chris@0
|
59
|
Chris@0
|
60 $reflection = new \ReflectionClass($this->handlerManager);
|
Chris@0
|
61 $property = $reflection->getProperty('factory');
|
Chris@0
|
62 $property->setAccessible(TRUE);
|
Chris@0
|
63 $property->setValue($this->handlerManager, $this->factory);
|
Chris@0
|
64 }
|
Chris@0
|
65
|
Chris@0
|
66 /**
|
Chris@0
|
67 * Tests that hook_views_plugins_TYPE_alter() is invoked for a handler type.
|
Chris@0
|
68 *
|
Chris@0
|
69 * @covers ::__construct
|
Chris@0
|
70 * @covers ::getDefinitions
|
Chris@0
|
71 */
|
Chris@0
|
72 public function testAlterHookInvocation() {
|
Chris@0
|
73 $this->moduleHandler->expects($this->once())
|
Chris@0
|
74 ->method('alter')
|
Chris@0
|
75 ->with('views_plugins_test', []);
|
Chris@0
|
76
|
Chris@0
|
77 $this->handlerManager->getDefinitions();
|
Chris@0
|
78 }
|
Chris@0
|
79
|
Chris@0
|
80 /**
|
Chris@0
|
81 * Tests getHandler() and its base information propagation.
|
Chris@0
|
82 */
|
Chris@0
|
83 public function testGetHandlerBaseInformationPropagation() {
|
Chris@0
|
84 $this->setupMockedFactory();
|
Chris@0
|
85
|
Chris@0
|
86 $item = [];
|
Chris@0
|
87 $item['table'] = 'test_table';
|
Chris@0
|
88 $item['field'] = 'test_field';
|
Chris@0
|
89
|
Chris@0
|
90 $views_data = [];
|
Chris@0
|
91 $views_data['test_field']['test']['id'] = 'test_id';
|
Chris@0
|
92 $views_data['test_field']['test']['more_information'] = 'test_id';
|
Chris@0
|
93 $views_data['test_field']['group'] = 'test_group';
|
Chris@0
|
94 $views_data['test_field']['title'] = 'test title';
|
Chris@0
|
95 $views_data['test_field']['real field'] = 'test real field';
|
Chris@0
|
96 $views_data['test_field']['real table'] = 'test real table';
|
Chris@0
|
97 $views_data['test_field']['entity field'] = 'test entity field';
|
Chris@0
|
98
|
Chris@0
|
99 $this->viewsData->expects($this->once())
|
Chris@0
|
100 ->method('get')
|
Chris@0
|
101 ->with('test_table')
|
Chris@0
|
102 ->willReturn($views_data);
|
Chris@0
|
103
|
Chris@0
|
104 $expected_definition = [
|
Chris@0
|
105 'id' => 'test_id',
|
Chris@0
|
106 'more_information' => 'test_id',
|
Chris@0
|
107 'group' => 'test_group',
|
Chris@0
|
108 'title' => 'test title',
|
Chris@0
|
109 'real field' => 'test real field',
|
Chris@0
|
110 'real table' => 'test real table',
|
Chris@0
|
111 'entity field' => 'test entity field',
|
Chris@0
|
112 ];
|
Chris@0
|
113 $plugin = $this->getMock('Drupal\views\Plugin\views\ViewsHandlerInterface');
|
Chris@0
|
114 $this->factory->expects($this->once())
|
Chris@0
|
115 ->method('createInstance')
|
Chris@0
|
116 ->with('test_id', $expected_definition)
|
Chris@0
|
117 ->willReturn($plugin);
|
Chris@0
|
118
|
Chris@0
|
119 $result = $this->handlerManager->getHandler($item);
|
Chris@0
|
120 $this->assertSame($plugin, $result);
|
Chris@0
|
121 }
|
Chris@0
|
122
|
Chris@0
|
123 /**
|
Chris@0
|
124 * Tests getHandler() with an override.
|
Chris@0
|
125 */
|
Chris@0
|
126 public function testGetHandlerOverride() {
|
Chris@0
|
127 $this->setupMockedFactory();
|
Chris@0
|
128
|
Chris@0
|
129 $item = [];
|
Chris@0
|
130 $item['table'] = 'test_table';
|
Chris@0
|
131 $item['field'] = 'test_field';
|
Chris@0
|
132
|
Chris@0
|
133 $views_data = [];
|
Chris@0
|
134 $views_data['test_field']['test']['id'] = 'test_id';
|
Chris@0
|
135
|
Chris@0
|
136 $this->viewsData->expects($this->once())
|
Chris@0
|
137 ->method('get')
|
Chris@0
|
138 ->with('test_table')
|
Chris@0
|
139 ->willReturn($views_data);
|
Chris@0
|
140
|
Chris@0
|
141 $plugin = $this->getMock('Drupal\views\Plugin\views\ViewsHandlerInterface');
|
Chris@0
|
142 $this->factory->expects($this->once())
|
Chris@0
|
143 ->method('createInstance')
|
Chris@0
|
144 ->with('test_override')
|
Chris@0
|
145 ->willReturn($plugin);
|
Chris@0
|
146
|
Chris@0
|
147 $result = $this->handlerManager->getHandler($item, 'test_override');
|
Chris@0
|
148 $this->assertSame($plugin, $result);
|
Chris@0
|
149 }
|
Chris@0
|
150
|
Chris@0
|
151 /**
|
Chris@0
|
152 * Tests getHandler() without an override.
|
Chris@0
|
153 */
|
Chris@0
|
154 public function testGetHandlerNoOverride() {
|
Chris@0
|
155 $this->setupMockedFactory();
|
Chris@0
|
156
|
Chris@0
|
157 $item = [];
|
Chris@0
|
158 $item['table'] = 'test_table';
|
Chris@0
|
159 $item['field'] = 'test_field';
|
Chris@0
|
160
|
Chris@0
|
161 $views_data = [];
|
Chris@0
|
162 $views_data['test_field']['test']['id'] = 'test_id';
|
Chris@0
|
163
|
Chris@0
|
164 $this->viewsData->expects($this->once())
|
Chris@0
|
165 ->method('get')
|
Chris@0
|
166 ->with('test_table')
|
Chris@0
|
167 ->willReturn($views_data);
|
Chris@0
|
168
|
Chris@0
|
169 $plugin = $this->getMock('Drupal\views\Plugin\views\ViewsHandlerInterface');
|
Chris@0
|
170 $this->factory->expects($this->once())
|
Chris@0
|
171 ->method('createInstance')
|
Chris@0
|
172 ->with('test_id')
|
Chris@0
|
173 ->willReturn($plugin);
|
Chris@0
|
174
|
Chris@0
|
175 $result = $this->handlerManager->getHandler($item);
|
Chris@0
|
176 $this->assertSame($plugin, $result);
|
Chris@0
|
177 }
|
Chris@0
|
178
|
Chris@0
|
179 }
|