protected function BlockViewBuilderTest::verifyRenderCacheHandling in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/block/src/Tests/BlockViewBuilderTest.php \Drupal\block\Tests\BlockViewBuilderTest::verifyRenderCacheHandling()
Verifies render cache handling of the block being tested.
See also
::testBlockViewBuilderCache()
1 call to BlockViewBuilderTest::verifyRenderCacheHandling()
- BlockViewBuilderTest::testBlockViewBuilderCache in core/
modules/ block/ src/ Tests/ BlockViewBuilderTest.php - Tests block render cache handling.
File
- core/
modules/ block/ src/ Tests/ BlockViewBuilderTest.php, line 153 - Contains \Drupal\block\Tests\BlockViewBuilderTest.
Class
- BlockViewBuilderTest
- Tests the block view builder.
Namespace
Drupal\block\TestsCode
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
->assertTrue($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
->assertTrue($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);
}