public function DisplayTest::testDisplayPlugin in Drupal 9
Same name and namespace in other branches
- 8 core/modules/views/tests/src/Functional/Plugin/DisplayTest.php \Drupal\Tests\views\Functional\Plugin\DisplayTest::testDisplayPlugin()
Tests the display test plugin.
See also
\Drupal\views_test_data\Plugin\views\display\DisplayTest
File
- core/
modules/ views/ tests/ src/ Functional/ Plugin/ DisplayTest.php, line 55
Class
- DisplayTest
- Tests the basic display plugin.
Namespace
Drupal\Tests\views\Functional\PluginCode
public function testDisplayPlugin() {
/** @var \Drupal\Core\Render\RendererInterface $renderer */
$renderer = $this->container
->get('renderer');
$view = Views::getView('test_view');
// Add a new 'display_test' display and test it's there.
$view->storage
->addDisplay('display_test');
$displays = $view->storage
->get('display');
$this
->assertTrue(isset($displays['display_test_1']), 'Added display has been assigned to "display_test_1"');
// Check the display options are like expected.
$options = [
'display_options' => [],
'display_plugin' => 'display_test',
'id' => 'display_test_1',
'display_title' => 'Display test',
'position' => 1,
];
$this
->assertEquals($options, $displays['display_test_1']);
// Add another one to ensure that position is counted up.
$view->storage
->addDisplay('display_test');
$displays = $view->storage
->get('display');
$options = [
'display_options' => [],
'display_plugin' => 'display_test',
'id' => 'display_test_2',
'display_title' => 'Display test 2',
'position' => 2,
];
$this
->assertEquals($options, $displays['display_test_2']);
// Move the second display before the first one in order to test custom
// sorting.
$displays['display_test_1']['position'] = 2;
$displays['display_test_2']['position'] = 1;
$view->storage
->set('display', $displays);
$view
->save();
$view
->setDisplay('display_test_1');
$this
->assertInstanceOf(DisplayTestPlugin::class, $view->display_handler);
// Check the test option.
$this
->assertSame('', $view->display_handler
->getOption('test_option'));
$style = $view->display_handler
->getOption('style');
$style['type'] = 'test_style';
$view->display_handler
->setOption('style', $style);
$view
->initDisplay();
$view
->initStyle();
$view->style_plugin
->setUsesRowPlugin(FALSE);
$output = $view
->preview();
$output = $renderer
->renderRoot($output);
$this
->assertStringContainsString('<h1></h1>', $output, 'An empty value for test_option found in output.');
// Change this option and check the title of out output.
$view->display_handler
->overrideOption('test_option', 'Test option title');
$view
->save();
$output = $view
->preview();
$output = $renderer
->renderRoot($output);
// Test we have our custom <h1> tag in the output of the view.
$this
->assertStringContainsString('<h1>Test option title</h1>', $output, 'The test_option value found in display output title.');
// Test that the display category/summary is in the UI.
$this
->drupalGet('admin/structure/views/view/test_view/edit/display_test_1');
$this
->assertSession()
->pageTextContains('Display test settings');
// Ensure that the order is as expected.
$result = $this
->xpath('//ul[@id="views-display-menu-tabs"]/li/a/child::text()');
$this
->assertEquals('Display test 2', $result[0]
->getText());
$this
->assertEquals('Display test', $result[1]
->getText());
$this
->clickLink('Test option title');
$test_option = $this
->randomString();
$this
->submitForm([
'test_option' => $test_option,
], 'Apply');
// Check the new value has been saved by checking the UI summary text.
$this
->drupalGet('admin/structure/views/view/test_view/edit/display_test_1');
$this
->assertSession()
->linkExists($test_option);
// Test the enable/disable status of a display.
$view->display_handler
->setOption('enabled', FALSE);
$this
->assertFalse($view->display_handler
->isEnabled(), 'Make sure that isEnabled returns FALSE on a disabled display.');
$view->display_handler
->setOption('enabled', TRUE);
$this
->assertTrue($view->display_handler
->isEnabled(), 'Make sure that isEnabled returns TRUE on a disabled display.');
}