entityManager = $this->getMock('\Drupal\Core\Entity\EntityManagerInterface'); $this->languageManager = $this->getMock('\Drupal\Core\Language\LanguageManagerInterface'); $configuration = []; $plugin_id = $this->randomMachineName(); $plugin_definition = [ 'title' => $this->randomMachineName(), ]; $this->plugin = new EntityOperations($configuration, $plugin_id, $plugin_definition, $this->entityManager, $this->languageManager); $redirect_service = $this->getMock('Drupal\Core\Routing\RedirectDestinationInterface'); $redirect_service->expects($this->any()) ->method('getAsArray') ->willReturn(['destination' => 'foobar']); $this->plugin->setRedirectDestination($redirect_service); $view = $this->getMockBuilder('\Drupal\views\ViewExecutable') ->disableOriginalConstructor() ->getMock(); $display = $this->getMockBuilder('\Drupal\views\Plugin\views\display\DisplayPluginBase') ->disableOriginalConstructor() ->getMockForAbstractClass(); $view->display_handler = $display; $this->plugin->init($view, $display); } /** * @covers ::usesGroupBy */ public function testUsesGroupBy() { $this->assertFalse($this->plugin->usesGroupBy()); } /** * @covers ::defineOptions */ public function testDefineOptions() { $options = $this->plugin->defineOptions(); $this->assertInternalType('array', $options); $this->assertArrayHasKey('destination', $options); } /** * @covers ::render */ public function testRenderWithDestination() { $entity_type_id = $this->randomMachineName(); $entity = $this->getMockBuilder('\Drupal\user\Entity\Role') ->disableOriginalConstructor() ->getMock(); $entity->expects($this->any()) ->method('getEntityTypeId') ->will($this->returnValue($entity_type_id)); $operations = [ 'foo' => [ 'title' => $this->randomMachineName(), ], ]; $list_builder = $this->getMock('\Drupal\Core\Entity\EntityListBuilderInterface'); $list_builder->expects($this->once()) ->method('getOperations') ->with($entity) ->will($this->returnValue($operations)); $this->entityManager->expects($this->once()) ->method('getListBuilder') ->with($entity_type_id) ->will($this->returnValue($list_builder)); $this->plugin->options['destination'] = TRUE; $result = new ResultRow(); $result->_entity = $entity; $expected_build = [ '#type' => 'operations', '#links' => $operations, ]; $expected_build['#links']['foo']['query'] = ['destination' => 'foobar']; $build = $this->plugin->render($result); $this->assertSame($expected_build, $build); } /** * @covers ::render */ public function testRenderWithoutDestination() { $entity_type_id = $this->randomMachineName(); $entity = $this->getMockBuilder('\Drupal\user\Entity\Role') ->disableOriginalConstructor() ->getMock(); $entity->expects($this->any()) ->method('getEntityTypeId') ->will($this->returnValue($entity_type_id)); $operations = [ 'foo' => [ 'title' => $this->randomMachineName(), ], ]; $list_builder = $this->getMock('\Drupal\Core\Entity\EntityListBuilderInterface'); $list_builder->expects($this->once()) ->method('getOperations') ->with($entity) ->will($this->returnValue($operations)); $this->entityManager->expects($this->once()) ->method('getListBuilder') ->with($entity_type_id) ->will($this->returnValue($list_builder)); $this->plugin->options['destination'] = FALSE; $result = new ResultRow(); $result->_entity = $entity; $expected_build = [ '#type' => 'operations', '#links' => $operations, ]; $build = $this->plugin->render($result); $this->assertSame($expected_build, $build); } }