function DisplayAttachmentTest::testDisabledAttachments

Same name in other branches
  1. 9 core/modules/views/tests/src/Functional/Plugin/DisplayAttachmentTest.php \Drupal\Tests\views\Functional\Plugin\DisplayAttachmentTest::testDisabledAttachments()
  2. 10 core/modules/views/tests/src/Functional/Plugin/DisplayAttachmentTest.php \Drupal\Tests\views\Functional\Plugin\DisplayAttachmentTest::testDisabledAttachments()
  3. 11.x core/modules/views/tests/src/Functional/Plugin/DisplayAttachmentTest.php \Drupal\Tests\views\Functional\Plugin\DisplayAttachmentTest::testDisabledAttachments()

Tests that nothing is output when the attachment displays are disabled.

File

core/modules/views/tests/src/Functional/Plugin/DisplayAttachmentTest.php, line 63

Class

DisplayAttachmentTest
Tests the attachment display plugin.

Namespace

Drupal\Tests\views\Functional\Plugin

Code

public function testDisabledAttachments() {
    $this->drupalCreateContentType([
        'type' => 'page',
    ]);
    $this->drupalCreateNode();
    // Ensure that the feed_1 display is attached to the page_1 display.
    $view = Views::getView('test_attached_disabled');
    $view->setDisplay('page_1');
    $attached_displays = $view->display_handler
        ->getAttachedDisplays();
    $this->assertContains('attachment_1', $attached_displays, 'The attachment_1 display is attached to the page display.');
    $this->assertContains('attachment_2', $attached_displays, 'The attachment_2 display is attached to the page display.');
    // Check that the attachments are output on the page display.
    $this->drupalGet('test-attached-disabled');
    $result = $this->xpath('//div[contains(@class, "view-content")]');
    $this->assertCount(3, $result, 'The page view and the attachments are rendered.');
    $result = $this->xpath('//div[contains(@class, "attachment-before")]');
    $this->assertCount(1, $result, 'The attachment is rendered before the page view.');
    $result = $this->xpath('//div[contains(@class, "attachment-after")]');
    $this->assertCount(1, $result, 'The attachment is rendered after the page view.');
    // Disable the attachment_1 display.
    $view->displayHandlers
        ->get('attachment_1')
        ->setOption('enabled', FALSE);
    $view->save();
    // Test that the before attachment is not displayed.
    $this->drupalGet('/test-attached-disabled');
    $result = $this->xpath('//div[contains(@class, "view-content")]');
    $this->assertCount(2, $result, 'The page view and only one attachment are rendered.');
    $result = $this->xpath('//div[contains(@class, "attachment-before")]');
    $this->assertCount(0, $result, 'The attachment_1 is not rendered.');
    // Disable the attachment_2 display.
    $view->displayHandlers
        ->get('attachment_2')
        ->setOption('enabled', FALSE);
    $view->save();
    // Test that the after attachment is not displayed.
    $this->drupalGet('/test-attached-disabled');
    $result = $this->xpath('//div[contains(@class, "view-content")]');
    $this->assertCount(1, $result, 'The page view is rendered without attachments.');
    $result = $this->xpath('//div[contains(@class, "attachment-after")]');
    $this->assertCount(0, $result, 'The attachment_2 is not rendered.');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.