Chris@0: viewsData = $this->getMockBuilder('Drupal\views\ViewsData') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: $cache_backend = $this->getMock('Drupal\Core\Cache\CacheBackendInterface'); Chris@0: $this->moduleHandler = $this->getMock('Drupal\Core\Extension\ModuleHandlerInterface'); Chris@0: $this->handlerManager = new ViewsHandlerManager('test', new \ArrayObject([]), $this->viewsData, $cache_backend, $this->moduleHandler); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Setups of the plugin factory. Chris@0: */ Chris@0: protected function setupMockedFactory() { Chris@0: $this->factory = $this->getMock('Drupal\Component\Plugin\Factory\FactoryInterface'); Chris@0: Chris@0: $reflection = new \ReflectionClass($this->handlerManager); Chris@0: $property = $reflection->getProperty('factory'); Chris@0: $property->setAccessible(TRUE); Chris@0: $property->setValue($this->handlerManager, $this->factory); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests that hook_views_plugins_TYPE_alter() is invoked for a handler type. Chris@0: * Chris@0: * @covers ::__construct Chris@0: * @covers ::getDefinitions Chris@0: */ Chris@0: public function testAlterHookInvocation() { Chris@0: $this->moduleHandler->expects($this->once()) Chris@0: ->method('alter') Chris@0: ->with('views_plugins_test', []); Chris@0: Chris@0: $this->handlerManager->getDefinitions(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests getHandler() and its base information propagation. Chris@0: */ Chris@0: public function testGetHandlerBaseInformationPropagation() { Chris@0: $this->setupMockedFactory(); Chris@0: Chris@0: $item = []; Chris@0: $item['table'] = 'test_table'; Chris@0: $item['field'] = 'test_field'; Chris@0: Chris@0: $views_data = []; Chris@0: $views_data['test_field']['test']['id'] = 'test_id'; Chris@0: $views_data['test_field']['test']['more_information'] = 'test_id'; Chris@0: $views_data['test_field']['group'] = 'test_group'; Chris@0: $views_data['test_field']['title'] = 'test title'; Chris@0: $views_data['test_field']['real field'] = 'test real field'; Chris@0: $views_data['test_field']['real table'] = 'test real table'; Chris@0: $views_data['test_field']['entity field'] = 'test entity field'; Chris@0: Chris@0: $this->viewsData->expects($this->once()) Chris@0: ->method('get') Chris@0: ->with('test_table') Chris@0: ->willReturn($views_data); Chris@0: Chris@0: $expected_definition = [ Chris@0: 'id' => 'test_id', Chris@0: 'more_information' => 'test_id', Chris@0: 'group' => 'test_group', Chris@0: 'title' => 'test title', Chris@0: 'real field' => 'test real field', Chris@0: 'real table' => 'test real table', Chris@0: 'entity field' => 'test entity field', Chris@0: ]; Chris@0: $plugin = $this->getMock('Drupal\views\Plugin\views\ViewsHandlerInterface'); Chris@0: $this->factory->expects($this->once()) Chris@0: ->method('createInstance') Chris@0: ->with('test_id', $expected_definition) Chris@0: ->willReturn($plugin); Chris@0: Chris@0: $result = $this->handlerManager->getHandler($item); Chris@0: $this->assertSame($plugin, $result); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests getHandler() with an override. Chris@0: */ Chris@0: public function testGetHandlerOverride() { Chris@0: $this->setupMockedFactory(); Chris@0: Chris@0: $item = []; Chris@0: $item['table'] = 'test_table'; Chris@0: $item['field'] = 'test_field'; Chris@0: Chris@0: $views_data = []; Chris@0: $views_data['test_field']['test']['id'] = 'test_id'; Chris@0: Chris@0: $this->viewsData->expects($this->once()) Chris@0: ->method('get') Chris@0: ->with('test_table') Chris@0: ->willReturn($views_data); Chris@0: Chris@0: $plugin = $this->getMock('Drupal\views\Plugin\views\ViewsHandlerInterface'); Chris@0: $this->factory->expects($this->once()) Chris@0: ->method('createInstance') Chris@0: ->with('test_override') Chris@0: ->willReturn($plugin); Chris@0: Chris@0: $result = $this->handlerManager->getHandler($item, 'test_override'); Chris@0: $this->assertSame($plugin, $result); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests getHandler() without an override. Chris@0: */ Chris@0: public function testGetHandlerNoOverride() { Chris@0: $this->setupMockedFactory(); Chris@0: Chris@0: $item = []; Chris@0: $item['table'] = 'test_table'; Chris@0: $item['field'] = 'test_field'; Chris@0: Chris@0: $views_data = []; Chris@0: $views_data['test_field']['test']['id'] = 'test_id'; Chris@0: Chris@0: $this->viewsData->expects($this->once()) Chris@0: ->method('get') Chris@0: ->with('test_table') Chris@0: ->willReturn($views_data); Chris@0: Chris@0: $plugin = $this->getMock('Drupal\views\Plugin\views\ViewsHandlerInterface'); Chris@0: $this->factory->expects($this->once()) Chris@0: ->method('createInstance') Chris@0: ->with('test_id') Chris@0: ->willReturn($plugin); Chris@0: Chris@0: $result = $this->handlerManager->getHandler($item); Chris@0: $this->assertSame($plugin, $result); Chris@0: } Chris@0: Chris@0: }