function ViewExecutableTest::testDisplays
Same name in other branches
- 9 core/modules/views/tests/src/Kernel/ViewExecutableTest.php \Drupal\Tests\views\Kernel\ViewExecutableTest::testDisplays()
- 10 core/modules/views/tests/src/Kernel/ViewExecutableTest.php \Drupal\Tests\views\Kernel\ViewExecutableTest::testDisplays()
- 11.x core/modules/views/tests/src/Kernel/ViewExecutableTest.php \Drupal\Tests\views\Kernel\ViewExecutableTest::testDisplays()
Tests the display related methods and properties.
File
-
core/
modules/ views/ tests/ src/ Kernel/ ViewExecutableTest.php, line 224
Class
- ViewExecutableTest
- Tests the ViewExecutable class.
Namespace
Drupal\Tests\views\KernelCode
public function testDisplays() {
$view = Views::getView('test_executable_displays');
// Tests Drupal\views\ViewExecutable::initDisplay().
$view->initDisplay();
$this->assertInstanceOf(DisplayPluginCollection::class, $view->displayHandlers);
// Tests the classes of the instances.
$this->assertInstanceOf(DefaultDisplay::class, $view->displayHandlers
->get('default'));
$this->assertInstanceOf(Page::class, $view->displayHandlers
->get('page_1'));
$this->assertInstanceOf(Page::class, $view->displayHandlers
->get('page_2'));
// After initializing the default display is the current used display.
$this->assertEqual($view->current_display, 'default');
$this->assertEqual(spl_object_hash($view->display_handler), spl_object_hash($view->displayHandlers
->get('default')));
// All handlers should have a reference to the default display.
$this->assertEqual(spl_object_hash($view->displayHandlers
->get('page_1')->default_display), spl_object_hash($view->displayHandlers
->get('default')));
$this->assertEqual(spl_object_hash($view->displayHandlers
->get('page_2')->default_display), spl_object_hash($view->displayHandlers
->get('default')));
// Tests Drupal\views\ViewExecutable::setDisplay().
$view->setDisplay();
$this->assertEqual($view->current_display, 'default', 'If setDisplay is called with no parameter the default display should be used.');
$this->assertEqual(spl_object_hash($view->display_handler), spl_object_hash($view->displayHandlers
->get('default')));
// Set two different valid displays.
$view->setDisplay('page_1');
$this->assertEqual($view->current_display, 'page_1', 'If setDisplay is called with a valid display id the appropriate display should be used.');
$this->assertEqual(spl_object_hash($view->display_handler), spl_object_hash($view->displayHandlers
->get('page_1')));
$view->setDisplay('page_2');
$this->assertEqual($view->current_display, 'page_2', 'If setDisplay is called with a valid display id the appropriate display should be used.');
$this->assertEqual(spl_object_hash($view->display_handler), spl_object_hash($view->displayHandlers
->get('page_2')));
// Destroy the view, so we can start again and test an invalid display.
$view->destroy();
// Test the style and row plugins are replaced correctly when setting the
// display.
$view->setDisplay('page_1');
$view->initStyle();
$this->assertInstanceOf(DefaultStyle::class, $view->style_plugin);
$this->assertInstanceOf(Fields::class, $view->rowPlugin);
$view->setDisplay('page_2');
$view->initStyle();
$this->assertInstanceOf(Grid::class, $view->style_plugin);
// @todo Change this rowPlugin type too.
$this->assertInstanceOf(Fields::class, $view->rowPlugin);
// Test the newDisplay() method.
$view = $this->container
->get('entity_type.manager')
->getStorage('view')
->create([
'id' => 'test_executable_displays',
]);
$executable = $view->getExecutable();
$executable->newDisplay('page');
$executable->newDisplay('page');
$executable->newDisplay('display_test');
$this->assertInstanceOf(DefaultDisplay::class, $executable->displayHandlers
->get('default'));
$this->assertFalse(isset($executable->displayHandlers
->get('default')->default_display));
$this->assertInstanceOf(Page::class, $executable->displayHandlers
->get('page_1'));
$this->assertInstanceOf(DefaultDisplay::class, $executable->displayHandlers
->get('page_1')->default_display);
$this->assertInstanceOf(Page::class, $executable->displayHandlers
->get('page_2'));
$this->assertInstanceOf(DefaultDisplay::class, $executable->displayHandlers
->get('page_2')->default_display);
$this->assertInstanceOf(DisplayTest::class, $executable->displayHandlers
->get('display_test_1'));
$this->assertInstanceOf(DefaultDisplay::class, $executable->displayHandlers
->get('display_test_1')->default_display);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.