protected function BlockViewBuilderTest::verifyRenderCacheHandling in Drupal 10
Same name and namespace in other branches
- 8 core/modules/block/tests/src/Kernel/BlockViewBuilderTest.php \Drupal\Tests\block\Kernel\BlockViewBuilderTest::verifyRenderCacheHandling()
- 9 core/modules/block/tests/src/Kernel/BlockViewBuilderTest.php \Drupal\Tests\block\Kernel\BlockViewBuilderTest::verifyRenderCacheHandling()
Verifies render cache handling of the block being tested.
See also
::testBlockViewBuilderCache()
File
- core/
modules/ block/ tests/ src/ Kernel/ BlockViewBuilderTest.php, line 149
Class
- BlockViewBuilderTest
- Tests the block view builder.
Namespace
Drupal\Tests\block\KernelCode
protected function verifyRenderCacheHandling() {
// Force a request via GET so we can test the render cache.
$request = \Drupal::request();
$request_method = $request->server
->get('REQUEST_METHOD');
$request
->setMethod('GET');
// Test that a cache entry is created.
$build = $this
->getBlockRenderArray();
$cid = 'entity_view:block:test_block:' . implode(':', \Drupal::service('cache_contexts_manager')
->convertTokensToKeys([
'languages:' . LanguageInterface::TYPE_INTERFACE,
'theme',
'user.permissions',
])
->getKeys());
$this->renderer
->renderRoot($build);
$this
->assertNotEmpty($this->container
->get('cache.render')
->get($cid), 'The block render element has been cached.');
// Re-save the block and check that the cache entry has been deleted.
$this->block
->save();
$this
->assertFalse($this->container
->get('cache.render')
->get($cid), 'The block render cache entry has been cleared when the block was saved.');
// Rebuild the render array (creating a new cache entry in the process) and
// delete the block to check the cache entry is deleted.
unset($build['#printed']);
// Re-add the block because \Drupal\block\BlockViewBuilder::buildBlock()
// removes it.
$build['#block'] = $this->block;
$this->renderer
->renderRoot($build);
$this
->assertNotEmpty($this->container
->get('cache.render')
->get($cid), 'The block render element has been cached.');
$this->block
->delete();
$this
->assertFalse($this->container
->get('cache.render')
->get($cid), 'The block render cache entry has been cleared when the block was deleted.');
// Restore the previous request method.
$request
->setMethod($request_method);
}