function AssertViewsCacheTagsTrait::assertViewsCacheTagsFromStaticRenderArray
Same name in other branches
- 9 core/modules/views/src/Tests/AssertViewsCacheTagsTrait.php \Drupal\views\Tests\AssertViewsCacheTagsTrait::assertViewsCacheTagsFromStaticRenderArray()
- 10 core/modules/views/src/Tests/AssertViewsCacheTagsTrait.php \Drupal\views\Tests\AssertViewsCacheTagsTrait::assertViewsCacheTagsFromStaticRenderArray()
- 11.x core/modules/views/src/Tests/AssertViewsCacheTagsTrait.php \Drupal\views\Tests\AssertViewsCacheTagsTrait::assertViewsCacheTagsFromStaticRenderArray()
Asserts a view's result & render cache items' cache tags.
This method starts with a pre bubbling basic render array.
Parameters
\Drupal\views\ViewExecutable $view: The view.
string[] $expected_render_array_cache_tags: The expected render cache tags.
bool $views_caching_is_enabled: Defines whether views output / render caching is enabled.
Return value
array The render array.
2 calls to AssertViewsCacheTagsTrait::assertViewsCacheTagsFromStaticRenderArray()
- RenderCacheIntegrationTest::assertCacheTagsForEntityBasedView in core/
modules/ views/ tests/ src/ Kernel/ RenderCacheIntegrationTest.php - Tests cache tags on output & result cache items for an entity-based view.
- RenderCacheIntegrationTest::assertCacheTagsForFieldBasedView in core/
modules/ views/ tests/ src/ Kernel/ RenderCacheIntegrationTest.php - Tests cache tags on output & result cache items for a field-based view.
File
-
core/
modules/ views/ src/ Tests/ AssertViewsCacheTagsTrait.php, line 118
Class
Namespace
Drupal\views\TestsCode
protected function assertViewsCacheTagsFromStaticRenderArray(ViewExecutable $view, array $expected_render_array_cache_tags, $views_caching_is_enabled) {
$original = $build = DisplayPluginBase::buildBasicRenderable($view->id(), $view->current_display ?: 'default', $view->args);
/** @var \Drupal\Core\Render\RendererInterface $renderer */
$renderer = \Drupal::service('renderer');
/** @var \Drupal\Core\Render\RenderCacheInterface $render_cache */
$render_cache = \Drupal::service('render_cache');
// Ensure the current request is a GET request so that render caching is
// active for direct rendering of views, just like for actual requests.
/** @var \Symfony\Component\HttpFoundation\RequestStack $request_stack */
$request_stack = \Drupal::service('request_stack');
$request = new Request();
$request->server
->set('REQUEST_TIME', REQUEST_TIME);
$request_stack->push($request);
$renderer->renderRoot($build);
// Render array cache tags.
$this->pass('Checking render array cache tags.');
sort($expected_render_array_cache_tags);
$this->assertEqual($build['#cache']['tags'], $expected_render_array_cache_tags);
$this->pass('Checking Views render cache item cache tags.');
$original['#cache'] += [
'contexts' => [],
];
$original['#cache']['contexts'] = Cache::mergeContexts($original['#cache']['contexts'], $this->container
->getParameter('renderer.config')['required_cache_contexts']);
$render_cache_item = $render_cache->get($original);
if ($views_caching_is_enabled) {
$this->assertTrue(!empty($render_cache_item), 'Render cache item found.');
if ($render_cache_item) {
$this->assertEqual($render_cache_item['#cache']['tags'], $expected_render_array_cache_tags);
}
}
else {
$this->assertFalse($render_cache_item, 'Render cache item not found.');
}
return $build;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.