public function OverrideDisplaysTest::testOverrideDisplays in Drupal 9
Same name and namespace in other branches
- 8 core/modules/views_ui/tests/src/Functional/OverrideDisplaysTest.php \Drupal\Tests\views_ui\Functional\OverrideDisplaysTest::testOverrideDisplays()
Tests that displays can be overridden via the UI.
File
- core/
modules/ views_ui/ tests/ src/ Functional/ OverrideDisplaysTest.php, line 26
Class
- OverrideDisplaysTest
- Tests that displays can be correctly overridden via the user interface.
Namespace
Drupal\Tests\views_ui\FunctionalCode
public function testOverrideDisplays() {
// Create a basic view that shows all content, with a page and a block
// display.
$view['label'] = $this
->randomMachineName(16);
$view['id'] = strtolower($this
->randomMachineName(16));
$view['page[create]'] = 1;
$view['page[path]'] = $this
->randomMachineName(16);
$view['block[create]'] = 1;
$view_path = $view['page[path]'];
$this
->drupalGet('admin/structure/views/add');
$this
->submitForm($view, 'Save and edit');
// Configure its title. Since the page and block both started off with the
// same (empty) title in the views wizard, we expect the wizard to have set
// things up so that they both inherit from the default display, and we
// therefore only need to change that to have it take effect for both.
$edit = [];
$edit['title'] = $original_title = $this
->randomMachineName(16);
$edit['override[dropdown]'] = 'default';
$this
->drupalGet("admin/structure/views/nojs/display/{$view['id']}/page_1/title");
$this
->submitForm($edit, 'Apply');
$this
->drupalGet("admin/structure/views/view/{$view['id']}/edit/page_1");
$this
->submitForm([], 'Save');
// Add a node that will appear in the view, so that the block will actually
// be displayed.
$this
->drupalCreateContentType([
'type' => 'page',
]);
$this
->drupalCreateNode();
// Make sure the title appears in the page.
$this
->drupalGet($view_path);
$this
->assertSession()
->statusCodeEquals(200);
$this
->assertSession()
->pageTextContains($original_title);
// Confirm that the view block is available in the block administration UI.
$this
->drupalGet('admin/structure/block/list/' . $this
->config('system.theme')
->get('default'));
$this
->clickLink('Place block');
$this
->assertSession()
->pageTextContains($view['label']);
// Place the block.
$this
->drupalPlaceBlock("views_block:{$view['id']}-block_1");
// Make sure the title appears in the block.
$this
->drupalGet('');
$this
->assertSession()
->pageTextContains($original_title);
// Change the title for the page display only, and make sure that the
// original title still appears on the page.
$edit = [];
$edit['title'] = $new_title = $this
->randomMachineName(16);
$edit['override[dropdown]'] = 'page_1';
$this
->drupalGet("admin/structure/views/nojs/display/{$view['id']}/page_1/title");
$this
->submitForm($edit, 'Apply');
$this
->drupalGet("admin/structure/views/view/{$view['id']}/edit/page_1");
$this
->submitForm([], 'Save');
$this
->drupalGet($view_path);
$this
->assertSession()
->statusCodeEquals(200);
$this
->assertSession()
->pageTextContains($new_title);
$this
->assertSession()
->pageTextContains($original_title);
}