/** * @covers ::__construct * @covers ::createInstance * * @expectedException \Drupal\Component\Plugin\Exception\PluginNotFoundException */ public function testCreateInstanceWithNonExistingPluginAndOverriddenDiscovery() { $plugin_manager = $this->getMock(PluginManagerInterface::class); $this->decoratedDiscovery = $this->getMock(DiscoveryInterface::class); $this->decoratedFactory = $plugin_manager; $this->sut = new PluginManagerDecorator($plugin_manager, $this->decoratedDiscovery); $plugin_id = $this->randomMachineName(); $this->decoratedDiscovery->expects($this->once())->method('getDefinitions')->willReturn([]); $this->decoratedFactory->expects($this->never())->method('createInstance'); $this->sut->createInstance($plugin_id); }
/** * Tests getHandler() without an override. */ public function testGetHandlerNoOverride() { $this->setupMockedFactory(); $item = []; $item['table'] = 'test_table'; $item['field'] = 'test_field'; $views_data = []; $views_data['test_field']['test']['id'] = 'test_id'; $this->viewsData->expects($this->once())->method('get')->with('test_table')->willReturn($views_data); $plugin = $this->getMock('Drupal\\views\\Plugin\\views\\ViewsHandlerInterface'); $this->factory->expects($this->once())->method('createInstance')->with('test_id')->willReturn($plugin); $result = $this->handlerManager->getHandler($item); $this->assertSame($plugin, $result); }
/** * @covers \Drupal\Core\Menu\LocalActionManager::getActionsForRoute() * * @dataProvider getActionsForRouteProvider */ public function testGetActionsForRoute($route_appears, array $plugin_definitions, array $expected_actions) { $this->discovery->expects($this->any())->method('getDefinitions')->will($this->returnValue($plugin_definitions)); $map = array(); foreach ($plugin_definitions as $plugin_id => $plugin_definition) { $plugin = $this->getMock('Drupal\\Core\\Menu\\LocalActionInterface'); $plugin->expects($this->any())->method('getRouteName')->will($this->returnValue($plugin_definition['route_name'])); $plugin->expects($this->any())->method('getRouteParameters')->will($this->returnValue(isset($plugin_definition['route_parameters']) ? $plugin_definition['route_parameters'] : array())); $plugin->expects($this->any())->method('getTitle')->will($this->returnValue($plugin_definition['title'])); $this->controllerResolver->expects($this->any())->method('getArguments')->with($this->request, array($plugin, 'getTitle'))->will($this->returnValue(array())); $plugin->expects($this->any())->method('getWeight')->will($this->returnValue($plugin_definition['weight'])); $this->controllerResolver->expects($this->any())->method('getArguments')->with($this->request, array($plugin, 'getTitle'))->will($this->returnValue(array())); $map[] = array($plugin_id, array(), $plugin); } $this->factory->expects($this->any())->method('createInstance')->will($this->returnValueMap($map)); $this->assertEquals($expected_actions, $this->localActionManager->getActionsForRoute($route_appears)); }
/** * Tests the access checking of the getContextualLinksArrayByGroup method. * * @see \Drupal\Core\Menu\ContextualLinkManager::getContextualLinksArrayByGroup() */ public function testGetContextualLinksArrayByGroupAccessCheck() { $definitions = array('test_plugin1' => array('id' => 'test_plugin1', 'class' => '\\Drupal\\Core\\Menu\\ContextualLinkDefault', 'title' => 'Plugin 1', 'weight' => 0, 'group' => 'group1', 'route_name' => 'test_route', 'options' => array()), 'test_plugin2' => array('id' => 'test_plugin2', 'class' => '\\Drupal\\Core\\Menu\\ContextualLinkDefault', 'title' => 'Plugin 2', 'weight' => 2, 'group' => 'group1', 'route_name' => 'test_route2', 'options' => array('key' => 'value'))); $this->pluginDiscovery->expects($this->once())->method('getDefinitions')->will($this->returnValue($definitions)); $this->accessManager->expects($this->any())->method('checkNamedRoute')->will($this->returnValueMap(array(array('test_route', array('key' => 'value'), $this->account, FALSE, TRUE), array('test_route2', array('key' => 'value'), $this->account, FALSE, FALSE)))); // Set up mocking of the plugin factory. $map = array(); foreach ($definitions as $plugin_id => $definition) { $plugin = $this->getMock('Drupal\\Core\\Menu\\ContextualLinkInterface'); $plugin->expects($this->any())->method('getRouteName')->will($this->returnValue($definition['route_name'])); $plugin->expects($this->any())->method('getTitle')->will($this->returnValue($definition['title'])); $plugin->expects($this->any())->method('getWeight')->will($this->returnValue($definition['weight'])); $plugin->expects($this->any())->method('getOptions')->will($this->returnValue($definition['options'])); $map[] = array($plugin_id, array(), $plugin); } $this->factory->expects($this->any())->method('createInstance')->will($this->returnValueMap($map)); $result = $this->contextualLinkManager->getContextualLinksArrayByGroup('group1', array('key' => 'value')); // Ensure that access checking was respected. $this->assertTrue(isset($result['test_plugin1'])); $this->assertFalse(isset($result['test_plugin2'])); }