Chris@0: container = new ContainerBuilder(); Chris@0: $user = $this->getMock('Drupal\Core\Session\AccountInterface'); Chris@0: $request_stack = new RequestStack(); Chris@0: $request_stack->push(new Request()); Chris@0: $views_data = $this->getMockBuilder('Drupal\views\ViewsData') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: $route_provider = $this->getMock('Drupal\Core\Routing\RouteProviderInterface'); Chris@0: $this->container->set('views.executable', new ViewExecutableFactory($user, $request_stack, $views_data, $route_provider)); Chris@0: Chris@0: \Drupal::setContainer($this->container); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests the getView() method. Chris@0: * Chris@0: * @covers ::getView Chris@0: */ Chris@0: public function testGetView() { Chris@0: $view = new View(['id' => 'test_view'], 'view'); Chris@0: Chris@0: $view_storage = $this->getMockBuilder('Drupal\Core\Config\Entity\ConfigEntityStorage') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: $view_storage->expects($this->once()) Chris@0: ->method('load') Chris@0: ->with('test_view') Chris@0: ->will($this->returnValue($view)); Chris@0: Chris@0: $entity_manager = $this->getMock('Drupal\Core\Entity\EntityManagerInterface'); Chris@0: $entity_manager->expects($this->once()) Chris@0: ->method('getStorage') Chris@0: ->with('view') Chris@0: ->will($this->returnValue($view_storage)); Chris@0: $this->container->set('entity.manager', $entity_manager); Chris@0: Chris@0: $executable = Views::getView('test_view'); Chris@0: $this->assertInstanceOf('Drupal\views\ViewExecutable', $executable); Chris@0: $this->assertEquals($view->id(), $executable->storage->id()); Chris@0: $this->assertEquals(spl_object_hash($view), spl_object_hash($executable->storage)); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::getApplicableViews Chris@0: * Chris@0: * @dataProvider providerTestGetApplicableViews Chris@0: */ Chris@0: public function testGetApplicableViews($applicable_type, $expected) { Chris@0: $view_1 = new View([ Chris@0: 'id' => 'test_view_1', Chris@0: 'display' => [ Chris@0: 'default' => [ Chris@0: 'display_plugin' => 'default', Chris@0: 'display_options' => [], Chris@0: ], Chris@0: 'type_a' => [ Chris@0: 'display_plugin' => 'type_a', Chris@0: 'display_options' => [], Chris@0: ], Chris@0: ], Chris@0: ], 'view'); Chris@0: $view_2 = new View([ Chris@0: 'id' => 'test_view_2', Chris@0: 'display' => [ Chris@0: 'default' => [ Chris@0: 'display_plugin' => 'default', Chris@0: 'display_options' => [], Chris@0: ], Chris@0: 'type_b' => [ Chris@0: 'display_plugin' => 'type_b', Chris@0: 'display_options' => [ Chris@0: 'enabled' => TRUE, Chris@0: ], Chris@0: ], Chris@0: 'type_b_2' => [ Chris@0: 'display_plugin' => 'type_b', Chris@0: 'display_options' => [ Chris@0: 'enabled' => FALSE, Chris@0: ], Chris@0: ], Chris@0: ], Chris@0: ], 'view'); Chris@0: $view_3 = new View([ Chris@0: 'id' => 'test_view_3', Chris@0: 'display' => [ Chris@0: 'default' => [ Chris@0: 'display_plugin' => 'default', Chris@0: 'display_options' => [], Chris@0: ], Chris@0: // Test with Type A but a disabled display. Chris@0: 'type_a' => [ Chris@0: 'display_plugin' => 'type_a', Chris@0: 'display_options' => [ Chris@17: 'enabled' => FALSE, Chris@0: ], Chris@0: ], Chris@0: // Type D intentionally doesn't exist. Chris@0: 'type_d' => [ Chris@0: 'display_plugin' => 'type_d', Chris@0: 'display_options' => [], Chris@0: ], Chris@0: ], Chris@0: ], 'view'); Chris@0: Chris@0: $query = $this->getMock('Drupal\Core\Entity\Query\QueryInterface'); Chris@0: $query->expects($this->exactly(2)) Chris@0: ->method('condition') Chris@0: ->willReturnSelf(); Chris@0: $query->expects($this->once()) Chris@0: ->method('execute') Chris@0: ->willReturn(['test_view_1', 'test_view_2', 'test_view_3']); Chris@0: Chris@0: $view_storage = $this->getMockBuilder('Drupal\Core\Config\Entity\ConfigEntityStorage') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: $view_storage->expects($this->once()) Chris@0: ->method('getQuery') Chris@0: ->willReturn($query); Chris@0: Chris@0: $view_storage->expects($this->once()) Chris@0: ->method('loadMultiple') Chris@0: ->with(['test_view_1', 'test_view_2', 'test_view_3']) Chris@0: ->will($this->returnValue(['test_view_1' => $view_1, 'test_view_2' => $view_2, 'test_view_3' => $view_3])); Chris@0: Chris@0: $entity_type_manager = $this->getMock(EntityTypeManagerInterface::class); Chris@0: $entity_type_manager->expects($this->exactly(2)) Chris@0: ->method('getStorage') Chris@0: ->with('view') Chris@0: ->will($this->returnValue($view_storage)); Chris@0: $this->container->set('entity_type.manager', $entity_type_manager); Chris@0: Chris@0: $definitions = [ Chris@0: 'type_a' => [ Chris@0: 'type_a' => TRUE, Chris@0: 'type_b' => FALSE, Chris@0: ], Chris@0: 'type_b' => [ Chris@0: 'type_a' => FALSE, Chris@0: 'type_b' => TRUE, Chris@0: ], Chris@0: ]; Chris@0: Chris@0: $display_manager = $this->getMock('Drupal\Component\Plugin\PluginManagerInterface'); Chris@0: $display_manager->expects($this->once()) Chris@0: ->method('getDefinitions') Chris@0: ->willReturn($definitions); Chris@0: $this->container->set('plugin.manager.views.display', $display_manager); Chris@0: Chris@0: $result = Views::getApplicableViews($applicable_type); Chris@0: $this->assertEquals($expected, $result); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Data provider for testGetApplicableViews. Chris@0: * Chris@0: * @return array Chris@0: */ Chris@0: public function providerTestGetApplicableViews() { Chris@0: return [ Chris@0: ['type_a', [['test_view_1', 'type_a']]], Chris@0: ['type_b', [['test_view_2', 'type_b']]], Chris@0: ['type_c', []], Chris@0: ]; Chris@0: } Chris@0: Chris@0: }