function ChainedPlaceholderStrategyTest::providerProcessPlaceholders

Same name in other branches
  1. 9 core/tests/Drupal/Tests/Core/Render/Placeholder/ChainedPlaceholderStrategyTest.php \Drupal\Tests\Core\Render\Placeholder\ChainedPlaceholderStrategyTest::providerProcessPlaceholders()
  2. 8.9.x core/tests/Drupal/Tests/Core/Render/Placeholder/ChainedPlaceholderStrategyTest.php \Drupal\Tests\Core\Render\Placeholder\ChainedPlaceholderStrategyTest::providerProcessPlaceholders()
  3. 10 core/tests/Drupal/Tests/Core/Render/Placeholder/ChainedPlaceholderStrategyTest.php \Drupal\Tests\Core\Render\Placeholder\ChainedPlaceholderStrategyTest::providerProcessPlaceholders()

Provides a list of render strategies, placeholders and results.

Return value

array

File

core/tests/Drupal/Tests/Core/Render/Placeholder/ChainedPlaceholderStrategyTest.php, line 38

Class

ChainedPlaceholderStrategyTest
@coversDefaultClass \Drupal\Core\Render\Placeholder\ChainedPlaceholderStrategy @group Render

Namespace

Drupal\Tests\Core\Render\Placeholder

Code

public static function providerProcessPlaceholders() {
    $prophet = new Prophet();
    $data = [];
    // Empty placeholders.
    $data['empty placeholders'] = [
        [],
        [],
        [],
    ];
    // Placeholder removing strategy.
    $placeholders = [
        'remove-me' => [
            '#markup' => 'I-am-a-llama-that-will-be-removed-sad-face.',
        ],
    ];
    $prophecy = $prophet->prophesize('\\Drupal\\Core\\Render\\Placeholder\\PlaceholderStrategyInterface');
    $prophecy->processPlaceholders($placeholders)
        ->willReturn([]);
    $dev_null_strategy = $prophecy->reveal();
    $data['placeholder removing strategy'] = [
        [
            $dev_null_strategy,
        ],
        $placeholders,
        [],
    ];
    // Fake Single Flush strategy.
    $placeholders = [
        '67890' => [
            '#markup' => 'special-placeholder',
        ],
    ];
    $prophecy = $prophet->prophesize('\\Drupal\\Core\\Render\\Placeholder\\PlaceholderStrategyInterface');
    $prophecy->processPlaceholders($placeholders)
        ->willReturn($placeholders);
    $single_flush_strategy = $prophecy->reveal();
    $data['fake single flush strategy'] = [
        [
            $single_flush_strategy,
        ],
        $placeholders,
        $placeholders,
    ];
    // Fake ESI strategy.
    $placeholders = [
        '12345' => [
            '#markup' => 'special-placeholder-for-esi',
        ],
    ];
    $result = [
        '12345' => [
            '#markup' => '<esi:include src="/fragment/12345" />',
        ],
    ];
    $prophecy = $prophet->prophesize('\\Drupal\\Core\\Render\\Placeholder\\PlaceholderStrategyInterface');
    $prophecy->processPlaceholders($placeholders)
        ->willReturn($result);
    $esi_strategy = $prophecy->reveal();
    $data['fake esi strategy'] = [
        [
            $esi_strategy,
        ],
        $placeholders,
        $result,
    ];
    // ESI + SingleFlush strategy (ESI replaces all).
    $prophecy = $prophet->prophesize('\\Drupal\\Core\\Render\\Placeholder\\PlaceholderStrategyInterface');
    $prophecy->processPlaceholders($placeholders)
        ->willReturn($result);
    $esi_strategy = $prophecy->reveal();
    $prophecy = $prophet->prophesize('\\Drupal\\Core\\Render\\Placeholder\\PlaceholderStrategyInterface');
    $prophecy->processPlaceholders($placeholders)
        ->shouldNotBeCalled();
    $prophecy->processPlaceholders($result)
        ->shouldNotBeCalled();
    $prophecy->processPlaceholders([])
        ->shouldNotBeCalled();
    $single_flush_strategy = $prophecy->reveal();
    $data['fake esi and single_flush strategy - esi replaces all'] = [
        [
            $esi_strategy,
            $single_flush_strategy,
        ],
        $placeholders,
        $result,
    ];
    // ESI + SingleFlush strategy (mixed).
    $placeholders = [
        '12345' => [
            '#markup' => 'special-placeholder-for-ESI',
        ],
        '67890' => [
            '#markup' => 'special-placeholder',
        ],
        'foo' => [
            '#markup' => 'bar',
        ],
    ];
    $esi_result = [
        '12345' => [
            '#markup' => '<esi:include src="/fragment/12345" />',
        ],
    ];
    $normal_result = [
        '67890' => [
            '#markup' => 'special-placeholder',
        ],
        'foo' => [
            '#markup' => 'bar',
        ],
    ];
    $result = $esi_result + $normal_result;
    $prophecy = $prophet->prophesize('\\Drupal\\Core\\Render\\Placeholder\\PlaceholderStrategyInterface');
    $prophecy->processPlaceholders($placeholders)
        ->willReturn($esi_result);
    $esi_strategy = $prophecy->reveal();
    $prophecy = $prophet->prophesize('\\Drupal\\Core\\Render\\Placeholder\\PlaceholderStrategyInterface');
    $prophecy->processPlaceholders($normal_result)
        ->willReturn($normal_result);
    $single_flush_strategy = $prophecy->reveal();
    $data['fake esi and single_flush strategy - mixed'] = [
        [
            $esi_strategy,
            $single_flush_strategy,
        ],
        $placeholders,
        $result,
    ];
    return $data;
}

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