View source
<?php
namespace Drupal\Tests\views_ui\Functional;
use Drupal\views\Views;
class DisplayAttachmentTest extends UITestBase {
public static $testViews = [
'test_attachment_ui',
];
protected $defaultTheme = 'stark';
public function testAttachmentUI() {
$this
->drupalGet('admin/structure/views/view/test_attachment_ui/edit/attachment_1');
$this
->assertSession()
->pageTextContains('Not defined');
$attachment_display_url = 'admin/structure/views/nojs/display/test_attachment_ui/attachment_1/displays';
$this
->drupalGet($attachment_display_url);
$this
->assertSession()
->assertEscaped('<em>Page</em>');
$this
->assertSession()
->checkboxNotChecked("edit-displays-default");
$this
->assertSession()
->checkboxNotChecked("edit-displays-page-1");
$this
->drupalGet($attachment_display_url);
$this
->submitForm([
'displays[page_1]' => 1,
], 'Apply');
$this
->assertSession()
->assertEscaped('<em>Page</em>');
$this
->assertSession()
->responseNotContains('<em>Page</em>');
$this
->assertSession()
->elementAttributeContains('xpath', '//a[@id = "views-attachment-1-displays"]', 'title', 'Page');
$this
->submitForm([], 'Save');
$view = Views::getView('test_attachment_ui');
$view
->initDisplay();
$this
->assertEquals([
'page_1',
], array_keys(array_filter($view->displayHandlers
->get('attachment_1')
->getOption('displays'))), 'The attached displays got saved as expected');
$this
->drupalGet($attachment_display_url);
$this
->submitForm([
'displays[default]' => 1,
'displays[page_1]' => 1,
], 'Apply');
$this
->assertSession()
->elementAttributeContains('xpath', '//a[@id = "views-attachment-1-displays"]', 'title', 'Multiple displays');
$this
->submitForm([], 'Save');
$view = Views::getView('test_attachment_ui');
$view
->initDisplay();
$this
->assertEquals([
'default',
'page_1',
], array_keys($view->displayHandlers
->get('attachment_1')
->getOption('displays')), 'The attached displays got saved as expected');
}
public function testRemoveAttachedDisplay() {
$view = $this
->randomView();
$path_prefix = 'admin/structure/views/view/' . $view['id'] . '/edit';
$attachment_display_url = 'admin/structure/views/nojs/display/' . $view['id'] . '/attachment_1/displays';
$this
->drupalGet($path_prefix . '/page_1');
$this
->submitForm([], 'Add Attachment');
$this
->assertSession()
->pageTextContains('Not defined');
$this
->drupalGet($attachment_display_url);
$this
->submitForm([
'displays[page_1]' => 1,
], 'Apply');
$this
->submitForm([], 'Save');
$this
->drupalGet($path_prefix . '/page_1');
$this
->assertSession()
->buttonExists('edit-displays-settings-settings-content-tab-content-details-top-actions-delete');
$this
->drupalGet($path_prefix . '/page_1');
$this
->submitForm([], 'Delete Page');
$this
->drupalGet($path_prefix . '/attachment_1');
$this
->submitForm([], 'Save');
$this
->assertSession()
->pageTextNotContains("Plugin ID 'page_1' was not found.");
$this
->assertSession()
->pageTextContains('Not defined');
}
}