public function CacheTest::testHeaderStorage in Drupal 9
Same name and namespace in other branches
- 8 core/modules/views/tests/src/Kernel/Plugin/CacheTest.php \Drupal\Tests\views\Kernel\Plugin\CacheTest::testHeaderStorage()
Tests css/js storage and restoring mechanism.
File
- core/
modules/ views/ tests/ src/ Kernel/ Plugin/ CacheTest.php, line 264
Class
- CacheTest
- Tests pluggable caching for views.
Namespace
Drupal\Tests\views\Kernel\PluginCode
public function testHeaderStorage() {
// Create a view with output caching enabled.
// Some hook_views_pre_render in views_test_data.module adds the test css/js file.
// so they should be added to the css/js storage.
$view = Views::getView('test_view');
$view
->setDisplay();
$view->storage
->set('id', 'test_cache_header_storage');
$view->display_handler
->overrideOption('cache', [
'type' => 'time',
'options' => [
'output_lifespan' => '3600',
],
]);
$output = $view
->buildRenderable();
/** @var \Drupal\Core\Render\RendererInterface $renderer */
$renderer = \Drupal::service('renderer');
$renderer
->executeInRenderContext(new RenderContext(), function () use (&$output, $renderer) {
return $renderer
->render($output);
});
unset($view->pre_render_called);
$view
->destroy();
$view
->setDisplay();
$output = $view
->buildRenderable();
$renderer
->executeInRenderContext(new RenderContext(), function () use (&$output, $renderer) {
return $renderer
->render($output);
});
$this
->assertContains('views_test_data/test', $output['#attached']['library'], 'Make sure libraries are added for cached views.');
$this
->assertEquals([
'foo' => 'bar',
], $output['#attached']['drupalSettings'], 'Make sure drupalSettings are added for cached views.');
// Note: views_test_data_views_pre_render() adds some cache tags.
$this
->assertEquals([
'config:views.view.test_cache_header_storage',
'views_test_data:1',
], $output['#cache']['tags']);
$this
->assertEquals([
'non-existing-placeholder-just-for-testing-purposes' => [
'#lazy_builder' => [
'Drupal\\views_test_data\\Controller\\ViewsTestDataController::placeholderLazyBuilder',
[
'bar',
],
],
],
], $output['#attached']['placeholders']);
$this
->assertFalse(!empty($view->build_info['pre_render_called']), 'Make sure hook_views_pre_render is not called for the cached view.');
}