PlaceholderMessageTest.php

Same filename in other branches
  1. 9 core/modules/system/tests/src/Functional/Render/PlaceholderMessageTest.php
  2. 8.9.x core/modules/system/tests/src/Functional/Render/PlaceholderMessageTest.php
  3. 11.x core/modules/system/tests/src/Functional/Render/PlaceholderMessageTest.php

Namespace

Drupal\Tests\system\Functional\Render

File

core/modules/system/tests/src/Functional/Render/PlaceholderMessageTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\system\Functional\Render;

use Drupal\Core\Url;
use Drupal\Tests\BrowserTestBase;

/**
 * Functional test verifying that messages set in placeholders always appear.
 *
 * @group Render
 */
class PlaceholderMessageTest extends BrowserTestBase {
    
    /**
     * {@inheritdoc}
     */
    protected static $modules = [
        'render_placeholder_message_test',
    ];
    
    /**
     * {@inheritdoc}
     */
    protected $defaultTheme = 'stark';
    
    /**
     * Tests rendering of message placeholder.
     */
    public function testMessagePlaceholder() : void {
        $messages_markup = '<div role="contentinfo" aria-label="Status message"';
        $test_routes = [
            // Messages placeholder rendered first.
'render_placeholder_message_test.first',
            // Messages placeholder rendered after one, before another.
'render_placeholder_message_test.middle',
            // Messages placeholder rendered last.
'render_placeholder_message_test.last',
        ];
        $assert = $this->assertSession();
        foreach ($test_routes as $route) {
            // Verify that we start off with zero messages queued.
            $this->drupalGet(Url::fromRoute('render_placeholder_message_test.queued'));
            $assert->responseNotContains($messages_markup);
            // Verify the test case at this route behaves as expected.
            $this->drupalGet(Url::fromRoute($route));
            $assert->elementContains('css', 'p.logged-message:nth-of-type(1)', 'Message: P1');
            $assert->elementContains('css', 'p.logged-message:nth-of-type(2)', 'Message: P2');
            $assert->responseContains($messages_markup);
            $assert->elementExists('css', 'div[aria-label="Status message"] ul');
            $assert->elementContains('css', 'div[aria-label="Status message"] ul li:nth-of-type(1)', 'P1');
            $assert->elementContains('css', 'div[aria-label="Status message"] ul li:nth-of-type(2)', 'P2');
            // Verify that we end with all messages printed, hence again zero queued.
            $this->drupalGet(Url::fromRoute('render_placeholder_message_test.queued'));
            $assert->responseNotContains($messages_markup);
        }
    }

}

Classes

Title Deprecated Summary
PlaceholderMessageTest Functional test verifying that messages set in placeholders always appear.

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