Chris@0: view = $this->getMock('Drupal\views\ViewEntityInterface'); Chris@0: $this->user = $this->getMock('Drupal\Core\Session\AccountInterface'); Chris@0: $this->viewsData = $this->getMockBuilder('Drupal\views\ViewsData') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: $this->displayHandler = $this->getMockBuilder('Drupal\views\Plugin\views\display\DisplayRouterInterface') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: $this->routeProvider = $this->getMock('Drupal\Core\Routing\RouteProviderInterface'); Chris@0: $this->displayHandlers = $this->getMockBuilder('Drupal\views\DisplayPluginCollection') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: Chris@0: $this->executable = new ViewExecutable($this->view, $this->user, $this->viewsData, $this->routeProvider); Chris@0: $this->executable->display_handler = $this->displayHandler; Chris@0: $this->executable->displayHandlers = $this->displayHandlers; Chris@0: Chris@0: $this->viewExecutableFactory = $this->getMockBuilder('Drupal\views\ViewExecutableFactory') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: Chris@0: $module_handler = $this->getMockBuilder(ModuleHandlerInterface::class) Chris@0: ->getMock(); Chris@0: Chris@0: $this->noneCache = $this->getMockBuilder(NoneCache::class) Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: Chris@0: $success_cache = $this->prophesize(CachePluginBase::class); Chris@0: $success_cache->cacheGet('results')->willReturn(TRUE); Chris@0: $this->successCache = $success_cache->reveal(); Chris@0: Chris@0: $cache_manager = $this->prophesize(PluginManagerInterface::class); Chris@0: $cache_manager->createInstance('none')->willReturn($this->noneCache); Chris@0: Chris@0: $translation = $this->getStringTranslationStub(); Chris@0: $container = new ContainerBuilder(); Chris@0: $container->set('string_translation', $translation); Chris@0: $container->set('views.executable', $this->viewExecutableFactory); Chris@0: $container->set('module_handler', $module_handler); Chris@0: $container->set('plugin.manager.views.cache', $cache_manager->reveal()); Chris@0: \Drupal::setContainer($container); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::getUrl Chris@0: */ Chris@0: public function testGetUrlWithOverriddenUrl() { Chris@0: $url = Url::fromRoute('example'); Chris@0: $this->executable->override_url = $url; Chris@0: Chris@0: $this->assertSame($url, $this->executable->getUrl()); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::getUrl Chris@0: */ Chris@0: public function testGetUrlWithPathNoPlaceholders() { Chris@0: $this->displayHandler->expects($this->any()) Chris@0: ->method('getRoutedDisplay') Chris@0: ->willReturn($this->displayHandler); Chris@0: $this->displayHandlers->expects($this->any()) Chris@0: ->method('get') Chris@0: ->willReturn($this->displayHandler); Chris@0: $this->displayHandler->expects($this->any()) Chris@0: ->method('getUrlInfo') Chris@0: ->willReturn(Url::fromRoute('views.test.page_1')); Chris@0: $this->displayHandler->expects($this->any()) Chris@0: ->method('getPath') Chris@0: ->willReturn('test-path'); Chris@0: Chris@0: $this->assertEquals(Url::fromRoute('views.test.page_1'), $this->executable->getUrl()); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::getUrl Chris@0: */ Chris@0: public function testGetUrlWithoutRouterDisplay() { Chris@0: $this->displayHandler = $this->getMock('Drupal\views\Plugin\views\display\DisplayPluginInterface'); Chris@0: $this->displayHandlers->expects($this->any()) Chris@0: ->method('get') Chris@0: ->willReturn($this->displayHandler); Chris@0: $this->executable->display_handler = $this->displayHandler; Chris@0: Chris@0: $this->setExpectedException(\InvalidArgumentException::class); Chris@0: $this->executable->getUrl(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::getUrl Chris@0: */ Chris@0: public function testGetUrlWithPlaceholdersAndArgs() { Chris@0: $this->displayHandler->expects($this->any()) Chris@0: ->method('getRoutedDisplay') Chris@0: ->willReturn($this->displayHandler); Chris@0: $this->displayHandlers->expects($this->any()) Chris@0: ->method('get') Chris@0: ->willReturn($this->displayHandler); Chris@0: $this->displayHandler->expects($this->any()) Chris@0: ->method('getUrlInfo') Chris@0: ->willReturn(Url::fromRoute('views.test.page_1')); Chris@0: $this->displayHandler->expects($this->any()) Chris@0: ->method('getPath') Chris@0: ->willReturn('test-path/%'); Chris@0: Chris@0: $route = new Route('/test-path/{arg_0}'); Chris@0: $this->routeProvider->expects($this->any()) Chris@0: ->method('getRouteByName') Chris@0: ->with('views.test.page_1') Chris@0: ->willReturn($route); Chris@0: Chris@0: $this->assertEquals(Url::fromRoute('views.test.page_1', ['arg_0' => 'test']), $this->executable->getUrl(['test'])); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::getUrl Chris@0: */ Chris@0: public function testGetUrlWithPlaceholdersAndWithoutArgs() { Chris@0: $this->displayHandler->expects($this->any()) Chris@0: ->method('getRoutedDisplay') Chris@0: ->willReturn($this->displayHandler); Chris@0: $this->displayHandlers->expects($this->any()) Chris@0: ->method('get') Chris@0: ->willReturn($this->displayHandler); Chris@0: $this->displayHandler->expects($this->any()) Chris@0: ->method('getUrlInfo') Chris@0: ->willReturn(Url::fromRoute('views.test.page_1')); Chris@0: $this->displayHandler->expects($this->any()) Chris@0: ->method('getPath') Chris@0: ->willReturn('test-path/%/%'); Chris@0: Chris@0: $route = new Route('/test-path/{arg_0}/{arg_1}'); Chris@0: $this->routeProvider->expects($this->any()) Chris@0: ->method('getRouteByName') Chris@0: ->with('views.test.page_1') Chris@0: ->willReturn($route); Chris@0: Chris@0: $this->assertEquals(Url::fromRoute('views.test.page_1', ['arg_0' => '*', 'arg_1' => '*']), $this->executable->getUrl()); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::getUrl Chris@0: */ Chris@0: public function testGetUrlWithPlaceholdersAndWithoutArgsAndExceptionValue() { Chris@0: $this->displayHandler->expects($this->any()) Chris@0: ->method('getRoutedDisplay') Chris@0: ->willReturn($this->displayHandler); Chris@0: $this->displayHandlers->expects($this->any()) Chris@0: ->method('get') Chris@0: ->willReturn($this->displayHandler); Chris@0: $this->displayHandler->expects($this->any()) Chris@0: ->method('getUrlInfo') Chris@0: ->willReturn(Url::fromRoute('views.test.page_1')); Chris@0: $this->displayHandler->expects($this->any()) Chris@0: ->method('getPath') Chris@0: ->willReturn('test-path/%/%'); Chris@0: Chris@0: $route = new Route('/test-path/{arg_0}/{arg_1}'); Chris@0: $this->routeProvider->expects($this->any()) Chris@0: ->method('getRouteByName') Chris@0: ->with('views.test.page_1') Chris@0: ->willReturn($route); Chris@0: Chris@0: $argument_handler = $this->getMockBuilder('Drupal\views\Plugin\views\argument\ArgumentPluginBase') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: $argument_handler->options['exception']['value'] = 'exception_0'; Chris@0: $this->executable->argument['key_1'] = $argument_handler; Chris@0: $argument_handler = $this->getMockBuilder('Drupal\views\Plugin\views\argument\ArgumentPluginBase') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: $argument_handler->options['exception']['value'] = 'exception_1'; Chris@0: $this->executable->argument['key_2'] = $argument_handler; Chris@0: Chris@0: $this->assertEquals(Url::fromRoute('views.test.page_1', ['arg_0' => 'exception_0', 'arg_1' => 'exception_1']), $this->executable->getUrl()); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::buildThemeFunctions Chris@0: */ Chris@0: public function testBuildThemeFunctions() { Chris@0: /** @var \Drupal\views\ViewExecutable|\PHPUnit_Framework_MockObject_MockObject $view */ Chris@0: /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit_Framework_MockObject_MockObject $display */ Chris@0: list($view, $display) = $this->setupBaseViewAndDisplay(); Chris@0: Chris@0: unset($view->display_handler); Chris@0: $expected = [ Chris@0: 'test_hook__test_view', Chris@17: 'test_hook', Chris@0: ]; Chris@0: $this->assertEquals($expected, $view->buildThemeFunctions('test_hook')); Chris@0: Chris@0: $view->display_handler = $display; Chris@0: $expected = [ Chris@0: 'test_hook__test_view__default', Chris@0: 'test_hook__default', Chris@0: 'test_hook__one', Chris@0: 'test_hook__two', Chris@0: 'test_hook__and_three', Chris@0: 'test_hook__test_view', Chris@17: 'test_hook', Chris@0: ]; Chris@0: $this->assertEquals($expected, $view->buildThemeFunctions('test_hook')); Chris@0: Chris@0: // Change the name of the display plugin and make sure that is in the array. Chris@0: $view->display_handler->display['display_plugin'] = 'default2'; Chris@0: Chris@0: $expected = [ Chris@0: 'test_hook__test_view__default', Chris@0: 'test_hook__default', Chris@0: 'test_hook__one', Chris@0: 'test_hook__two', Chris@0: 'test_hook__and_three', Chris@0: 'test_hook__test_view__default2', Chris@0: 'test_hook__default2', Chris@0: 'test_hook__test_view', Chris@17: 'test_hook', Chris@0: ]; Chris@0: $this->assertEquals($expected, $view->buildThemeFunctions('test_hook')); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::generateHandlerId Chris@0: */ Chris@0: public function testGenerateHandlerId() { Chris@0: // Test the generateHandlerId() method. Chris@0: $test_ids = ['test' => 'test', 'test_1' => 'test_1']; Chris@0: $this->assertEquals(ViewExecutable::generateHandlerId('new', $test_ids), 'new'); Chris@0: $this->assertEquals(ViewExecutable::generateHandlerId('test', $test_ids), 'test_2'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::addHandler Chris@0: */ Chris@0: public function testAddHandler() { Chris@0: /** @var \Drupal\views\ViewExecutable|\PHPUnit_Framework_MockObject_MockObject $view */ Chris@0: /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit_Framework_MockObject_MockObject $display */ Chris@0: list($view, $display) = $this->setupBaseViewAndDisplay(); Chris@0: Chris@0: $views_data = []; Chris@0: $views_data['test_field'] = [ Chris@0: 'field' => ['id' => 'standard'], Chris@0: 'filter' => ['id' => 'standard'], Chris@0: 'argument' => ['id' => 'standard'], Chris@0: 'sort' => ['id' => 'standard'], Chris@0: ]; Chris@0: Chris@0: $this->viewsData->expects($this->atLeastOnce()) Chris@0: ->method('get') Chris@0: ->with('test_entity') Chris@0: ->willReturn($views_data); Chris@0: Chris@0: foreach (['field', 'filter', 'argument', 'sort'] as $handler_type) { Chris@0: $display->expects($this->atLeastOnce()) Chris@0: ->method('setOption') Chris@0: ->with($this->callback(function ($argument) { Chris@0: return $argument; Chris@0: }), [ Chris@0: 'test_field' => [ Chris@0: 'id' => 'test_field', Chris@0: 'table' => 'test_entity', Chris@0: 'field' => 'test_field', Chris@0: 'plugin_id' => 'standard', Chris@0: ], Chris@0: ]); Chris@0: } Chris@0: Chris@0: foreach (['field', 'filter', 'argument', 'sort'] as $handler_type) { Chris@0: $view->addHandler('default', $handler_type, 'test_entity', 'test_field'); Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::addHandler Chris@0: */ Chris@0: public function testAddHandlerWithEntityField() { Chris@0: /** @var \Drupal\views\ViewExecutable|\PHPUnit_Framework_MockObject_MockObject $view */ Chris@0: /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit_Framework_MockObject_MockObject $display */ Chris@0: list($view, $display) = $this->setupBaseViewAndDisplay(); Chris@0: Chris@0: $views_data = []; Chris@0: $views_data['table']['entity type'] = 'test_entity_type'; Chris@0: $views_data['test_field'] = [ Chris@0: 'entity field' => 'test_field', Chris@0: 'field' => ['id' => 'standard'], Chris@0: 'filter' => ['id' => 'standard'], Chris@0: 'argument' => ['id' => 'standard'], Chris@0: 'sort' => ['id' => 'standard'], Chris@0: ]; Chris@0: Chris@0: $this->viewsData->expects($this->atLeastOnce()) Chris@0: ->method('get') Chris@0: ->with('test_entity') Chris@0: ->willReturn($views_data); Chris@0: Chris@0: foreach (['field', 'filter', 'argument', 'sort'] as $handler_type) { Chris@0: $display->expects($this->atLeastOnce()) Chris@0: ->method('setOption') Chris@0: ->with($this->callback(function ($argument) { Chris@0: return $argument; Chris@0: }), [ Chris@0: 'test_field' => [ Chris@0: 'id' => 'test_field', Chris@0: 'table' => 'test_entity', Chris@0: 'field' => 'test_field', Chris@0: 'entity_type' => 'test_entity_type', Chris@0: 'entity_field' => 'test_field', Chris@0: 'plugin_id' => 'standard', Chris@0: ], Chris@0: ]); Chris@0: } Chris@0: Chris@0: foreach (['field', 'filter', 'argument', 'sort'] as $handler_type) { Chris@0: $view->addHandler('default', $handler_type, 'test_entity', 'test_field'); Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::attachDisplays Chris@0: */ Chris@0: public function testAttachDisplays() { Chris@0: /** @var \Drupal\views\ViewExecutable|\PHPUnit_Framework_MockObject_MockObject $view */ Chris@0: /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit_Framework_MockObject_MockObject $display */ Chris@0: list($view, $display) = $this->setupBaseViewAndDisplay(); Chris@0: Chris@0: $display->expects($this->atLeastOnce()) Chris@0: ->method('acceptAttachments') Chris@0: ->willReturn(TRUE); Chris@0: $display->expects($this->atLeastOnce()) Chris@0: ->method('getAttachedDisplays') Chris@0: ->willReturn(['page_1']); Chris@0: Chris@0: $cloned_view = $this->getMockBuilder('Drupal\views\ViewExecutable') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: $this->viewExecutableFactory->expects($this->atLeastOnce()) Chris@0: ->method('get') Chris@0: ->willReturn($cloned_view); Chris@0: Chris@0: $page_display = $this->getMockBuilder('Drupal\views\Plugin\views\display\DisplayPluginBase') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: Chris@0: $page_display->expects($this->atLeastOnce()) Chris@0: ->method('isEnabled') Chris@0: ->willReturn(TRUE); Chris@0: Chris@0: $display_collection = $this->getMockBuilder('Drupal\views\DisplayPluginCollection') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: Chris@0: $display_collection->expects($this->atLeastOnce()) Chris@0: ->method('get') Chris@0: ->with('page_1') Chris@0: ->willReturn($page_display); Chris@0: $view->displayHandlers = $display_collection; Chris@0: Chris@0: // Setup the expectations. Chris@0: $page_display->expects($this->once()) Chris@0: ->method('attachTo') Chris@0: ->with($cloned_view, 'default', $view->element); Chris@0: Chris@0: $view->attachDisplays(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Setups a view executable and default display. Chris@0: * Chris@0: * @return array Chris@0: * Returns the view executable and default display. Chris@0: */ Chris@0: protected function setupBaseViewAndDisplay() { Chris@0: $config = [ Chris@0: 'id' => 'test_view', Chris@0: 'tag' => 'OnE, TWO, and three', Chris@0: 'display' => [ Chris@0: 'default' => [ Chris@0: 'id' => 'default', Chris@0: 'display_plugin' => 'default', Chris@0: 'display_title' => 'Default', Chris@0: ], Chris@0: ], Chris@0: ]; Chris@0: Chris@0: $storage = new View($config, 'view'); Chris@0: $view = new ViewExecutable($storage, $this->user, $this->viewsData, $this->routeProvider); Chris@0: $display = $this->getMockBuilder('Drupal\views\Plugin\views\display\DisplayPluginBase') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: $display->expects($this->any()) Chris@0: ->method('getPlugin') Chris@0: ->with($this->equalTo('cache')) Chris@0: ->willReturn($this->successCache); Chris@0: Chris@0: $display->display = $config['display']['default']; Chris@0: Chris@0: $view->current_display = 'default'; Chris@0: $view->display_handler = $display; Chris@0: $view->displayHandlers = $this->displayHandlers; Chris@0: $view->displayHandlers->expects($this->any()) Chris@0: ->method('get') Chris@0: ->with('default') Chris@0: ->willReturn($display); Chris@0: $view->displayHandlers->expects($this->any()) Chris@0: ->method('has') Chris@0: ->with('default') Chris@0: ->willReturn(TRUE); Chris@0: Chris@0: foreach (array_keys($view->getHandlerTypes()) as $type) { Chris@0: $view->$type = []; Chris@0: } Chris@0: Chris@0: return [$view, $display]; Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::setItemsPerPage Chris@0: * @covers ::getItemsPerPage Chris@0: */ Chris@0: public function testSetItemsPerPageBeforePreRender() { Chris@0: /** @var \Drupal\views\ViewExecutable|\PHPUnit_Framework_MockObject_MockObject $view */ Chris@0: /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit_Framework_MockObject_MockObject $display */ Chris@0: list($view, $display) = $this->setupBaseViewAndDisplay(); Chris@0: Chris@0: $view->setItemsPerPage(12); Chris@0: $this->assertEquals(12, $view->getItemsPerPage()); Chris@0: $this->assertContains('items_per_page:12', $view->element['#cache']['keys']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::setItemsPerPage Chris@0: * @covers ::getItemsPerPage Chris@0: */ Chris@0: public function testSetItemsPerPageDuringPreRender() { Chris@0: /** @var \Drupal\views\ViewExecutable|\PHPUnit_Framework_MockObject_MockObject $view */ Chris@0: /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit_Framework_MockObject_MockObject $display */ Chris@0: list($view, $display) = $this->setupBaseViewAndDisplay(); Chris@0: Chris@0: $elements = &$view->element; Chris@0: $elements['#cache'] += ['keys' => []]; Chris@0: $elements['#pre_rendered'] = TRUE; Chris@0: Chris@0: $view->setItemsPerPage(12); Chris@0: $this->assertEquals(12, $view->getItemsPerPage()); Chris@0: $this->assertNotContains('items_per_page:12', $view->element['#cache']['keys']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::setOffset Chris@0: * @covers ::getOffset Chris@0: */ Chris@0: public function testSetOffsetBeforePreRender() { Chris@0: /** @var \Drupal\views\ViewExecutable|\PHPUnit_Framework_MockObject_MockObject $view */ Chris@0: /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit_Framework_MockObject_MockObject $display */ Chris@0: list($view, $display) = $this->setupBaseViewAndDisplay(); Chris@0: Chris@0: $view->setOffset(12); Chris@0: $this->assertEquals(12, $view->getOffset()); Chris@0: $this->assertContains('offset:12', $view->element['#cache']['keys']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::setOffset Chris@0: * @covers ::getOffset Chris@0: */ Chris@0: public function testSetOffsetDuringPreRender() { Chris@0: /** @var \Drupal\views\ViewExecutable|\PHPUnit_Framework_MockObject_MockObject $view */ Chris@0: /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit_Framework_MockObject_MockObject $display */ Chris@0: list($view, $display) = $this->setupBaseViewAndDisplay(); Chris@0: Chris@0: $elements = &$view->element; Chris@0: $elements['#cache'] += ['keys' => []]; Chris@0: $elements['#pre_rendered'] = TRUE; Chris@0: Chris@0: $view->setOffset(12); Chris@0: $this->assertEquals(12, $view->getOffset()); Chris@0: $this->assertNotContains('offset:12', $view->element['#cache']['keys']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::setCurrentPage Chris@0: * @covers ::getCurrentPage Chris@0: */ Chris@0: public function testSetCurrentPageBeforePreRender() { Chris@0: /** @var \Drupal\views\ViewExecutable|\PHPUnit_Framework_MockObject_MockObject $view */ Chris@0: /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit_Framework_MockObject_MockObject $display */ Chris@0: list($view, $display) = $this->setupBaseViewAndDisplay(); Chris@0: Chris@0: $view->setCurrentPage(12); Chris@0: $this->assertEquals(12, $view->getCurrentPage()); Chris@0: $this->assertContains('page:12', $view->element['#cache']['keys']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::setCurrentPage Chris@0: * @covers ::getCurrentPage Chris@0: */ Chris@0: public function testSetCurrentPageDuringPreRender() { Chris@0: /** @var \Drupal\views\ViewExecutable|\PHPUnit_Framework_MockObject_MockObject $view */ Chris@0: /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit_Framework_MockObject_MockObject $display */ Chris@0: list($view, $display) = $this->setupBaseViewAndDisplay(); Chris@0: Chris@0: $elements = &$view->element; Chris@0: $elements['#cache'] += ['keys' => []]; Chris@0: $elements['#pre_rendered'] = TRUE; Chris@0: Chris@0: $view->setCurrentPage(12); Chris@0: $this->assertEquals(12, $view->getCurrentPage()); Chris@0: $this->assertNotContains('page:12', $view->element['#cache']['keys']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::execute Chris@0: */ Chris@0: public function testCacheIsIgnoredDuringPreview() { Chris@0: /** @var \Drupal\views\ViewExecutable|\PHPUnit_Framework_MockObject_MockObject $view */ Chris@0: /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit_Framework_MockObject_MockObject $display */ Chris@0: list($view, $display) = $this->setupBaseViewAndDisplay(); Chris@0: Chris@0: // Pager needs to be set to avoid false test failures. Chris@0: $view->pager = $this->getMockBuilder(NonePager::class) Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: Chris@0: $query = $this->getMockBuilder(QueryPluginBase::class) Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: Chris@0: $view->query = $query; Chris@0: $view->built = TRUE; Chris@0: $view->live_preview = TRUE; Chris@0: Chris@0: $this->noneCache->expects($this->once())->method('cacheGet'); Chris@0: $query->expects($this->once())->method('execute'); Chris@0: Chris@0: $view->execute(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests the return values for the execute() method. Chris@0: * Chris@0: * @param bool $display_enabled Chris@0: * Whether the display to test should be enabled. Chris@0: * @param bool $expected_result Chris@0: * The expected result when calling execute(). Chris@0: * Chris@0: * @covers ::execute Chris@0: * @dataProvider providerExecuteReturn Chris@0: */ Chris@0: public function testExecuteReturn($display_enabled, $expected_result) { Chris@0: /** @var \Drupal\views\ViewExecutable|\PHPUnit_Framework_MockObject_MockObject $view */ Chris@0: /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit_Framework_MockObject_MockObject $display */ Chris@0: list($view, $display) = $this->setupBaseViewAndDisplay(); Chris@0: Chris@0: $display->expects($this->any()) Chris@0: ->method('isEnabled') Chris@0: ->willReturn($display_enabled); Chris@0: Chris@0: // Pager needs to be set to avoid false test failures. Chris@0: $view->pager = $this->getMockBuilder(NonePager::class) Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: Chris@0: $query = $this->getMockBuilder(QueryPluginBase::class) Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: Chris@0: $view->query = $query; Chris@0: $view->built = TRUE; Chris@0: Chris@0: $this->assertEquals($expected_result, $view->execute()); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Provider for testExecuteReturn(). Chris@0: * Chris@0: * @return array[] Chris@0: * An array of arrays containing the display state and expected value. Chris@0: */ Chris@0: public function providerExecuteReturn() { Chris@0: return [ Chris@0: 'enabled' => [static::DISPLAY_ENABLED, TRUE], Chris@0: 'disabled' => [static::DISPLAY_DISABLED, FALSE], Chris@0: ]; Chris@0: } Chris@0: Chris@0: }