3 namespace Drupal\Tests\views\Functional\Entity;
5 use Drupal\node\Entity\Node;
6 use Drupal\Tests\views\Functional\ViewTestBase;
7 use Drupal\views\Tests\ViewTestData;
8 use Drupal\views\Views;
11 * Tests the generic entity bundle filter.
15 class FilterEntityBundleTest extends ViewTestBase {
18 * Views used by this test.
22 public static $testViews = ['test_entity_type_filter'];
29 public static $modules = ['node'];
36 protected $entityBundles;
39 * An array of entities.
43 protected $entities = [];
45 protected function setUp($import_test_views = TRUE) {
48 $this->drupalCreateContentType(['type' => 'test_bundle']);
49 $this->drupalCreateContentType(['type' => 'test_bundle_2']);
51 ViewTestData::createTestViews(get_class($this), ['views_test_config']);
53 $this->entityBundles = $this->container->get('entity_type.bundle.info')->getBundleInfo('node');
55 $this->entities['count'] = 0;
57 foreach ($this->entityBundles as $key => $info) {
58 for ($i = 0; $i < 5; $i++) {
59 $entity = Node::create([
60 'title' => $this->randomString(),
65 $this->entities[$key][$entity->id()] = $entity;
66 $this->entities['count']++;
72 * Tests the generic bundle filter.
74 public function testFilterEntity() {
75 $view = Views::getView('test_entity_type_filter');
77 // Tests \Drupal\views\Plugin\views\filter\Bundle::calculateDependencies().
80 'node.type.test_bundle',
81 'node.type.test_bundle_2',
87 $this->assertIdentical($expected, $view->getDependencies());
89 $this->executeView($view);
91 // Test we have all the results, with all types selected.
92 $this->assertEqual(count($view->result), $this->entities['count']);
94 // Test the valueOptions of the filter handler.
97 foreach ($this->entityBundles as $key => $info) {
98 $expected[$key] = $info['label'];
100 $this->assertIdentical($view->filter['type']->getValueOptions(), $expected);
104 // Test each bundle type.
105 foreach ($this->entityBundles as $key => $info) {
106 // Test each bundle type.
107 $view->initDisplay();
108 $filters = $view->display_handler->getOption('filters');
109 $filters['type']['value'] = [$key => $key];
110 $view->display_handler->setOption('filters', $filters);
111 $this->executeView($view);
113 $this->assertEqual(count($view->result), count($this->entities[$key]));
118 // Test an invalid bundle type to make sure we have no results.
119 $view->initDisplay();
120 $filters = $view->display_handler->getOption('filters');
121 $filters['type']['value'] = ['type_3' => 'type_3'];
122 $view->display_handler->setOption('filters', $filters);
123 $this->executeView($view);
125 $this->assertEqual(count($view->result), 0);