annotate core/modules/views/tests/src/Unit/ViewsHandlerManagerTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
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 }