function PlaceholderGeneratorTest::testRenderPlaceholdersDifferentSortedContextsTags

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Core/Render/PlaceholderGeneratorTest.php \Drupal\Tests\Core\Render\PlaceholderGeneratorTest::testRenderPlaceholdersDifferentSortedContextsTags()
  2. 10 core/tests/Drupal/Tests/Core/Render/PlaceholderGeneratorTest.php \Drupal\Tests\Core\Render\PlaceholderGeneratorTest::testRenderPlaceholdersDifferentSortedContextsTags()

Tests the creation of an element with a #lazy_builder callback.

Between two renders neither the cache contexts nor tags sort should change. A placeholder should generate the same hash, so it is not rendered twice.

@covers ::createPlaceholder

File

core/tests/Drupal/Tests/Core/Render/PlaceholderGeneratorTest.php, line 52

Class

PlaceholderGeneratorTest
@coversDefaultClass <a href="/api/drupal/core%21lib%21Drupal%21Core%21Render%21PlaceholderGenerator.php/class/PlaceholderGenerator/11.x" title="Turns a render array into a placeholder." class="local">\Drupal\Core\Render\PlaceholderGenerator</a> @group Render

Namespace

Drupal\Tests\Core\Render

Code

public function testRenderPlaceholdersDifferentSortedContextsTags() : void {
    $contexts_1 = [
        'user',
        'foo',
    ];
    $contexts_2 = [
        'foo',
        'user',
    ];
    $tags_1 = [
        'current-temperature',
        'foo',
    ];
    $tags_2 = [
        'foo',
        'current-temperature',
    ];
    $test_element = [
        '#cache' => [
            'max-age' => Cache::PERMANENT,
        ],
        '#lazy_builder' => [
            'Drupal\\Tests\\Core\\Render\\PlaceholdersTest::callback',
            [
                'foo' => TRUE,
            ],
        ],
    ];
    $test_element['#cache']['contexts'] = $contexts_1;
    $test_element['#cache']['tags'] = $tags_1;
    $placeholder_element1 = $this->placeholderGenerator
        ->createPlaceholder($test_element);
    $test_element['#cache']['contexts'] = $contexts_2;
    $test_element['#cache']['tags'] = $tags_1;
    $placeholder_element2 = $this->placeholderGenerator
        ->createPlaceholder($test_element);
    $test_element['#cache']['contexts'] = $contexts_1;
    $test_element['#cache']['tags'] = $tags_2;
    $placeholder_element3 = $this->placeholderGenerator
        ->createPlaceholder($test_element);
    // Verify placeholder and specially hash are same with different contexts
    // order.
    $this->assertSame((string) $placeholder_element1['#markup'], (string) $placeholder_element2['#markup']);
    // Verify placeholder and specially hash are same with different tags order.
    $this->assertSame((string) $placeholder_element1['#markup'], (string) $placeholder_element3['#markup']);
}

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