public function BlockViewBuilderTest::testBlockViewBuilderViewAlter in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/block/src/Tests/BlockViewBuilderTest.php \Drupal\block\Tests\BlockViewBuilderTest::testBlockViewBuilderViewAlter()
Tests block view altering.
See also
hook_block_view_BASE_BLOCK_ID_alter()
File
- core/
modules/ block/ src/ Tests/ BlockViewBuilderTest.php, line 191 - Contains \Drupal\block\Tests\BlockViewBuilderTest.
Class
- BlockViewBuilderTest
- Tests the block view builder.
Namespace
Drupal\block\TestsCode
public function testBlockViewBuilderViewAlter() {
// Establish baseline.
$build = $this
->getBlockRenderArray();
$this
->setRawContent((string) $this->renderer
->renderRoot($build));
$this
->assertIdentical(trim((string) $this
->cssSelect('div')[0]), 'Llamas > unicorns!');
// Enable the block view alter hook that adds a foo=bar attribute.
\Drupal::state()
->set('block_test_view_alter_suffix', TRUE);
Cache::invalidateTags($this->block
->getCacheTagsToInvalidate());
$build = $this
->getBlockRenderArray();
$this
->setRawContent((string) $this->renderer
->renderRoot($build));
$this
->assertIdentical(trim((string) $this
->cssSelect('[foo=bar]')[0]), 'Llamas > unicorns!');
\Drupal::state()
->set('block_test_view_alter_suffix', FALSE);
\Drupal::state()
->set('block_test.content', NULL);
Cache::invalidateTags($this->block
->getCacheTagsToInvalidate());
// Advanced: cached block, but an alter hook adds a #pre_render callback to
// alter the eventual content.
\Drupal::state()
->set('block_test_view_alter_append_pre_render_prefix', TRUE);
$build = $this
->getBlockRenderArray();
$this
->assertFalse(isset($build['#prefix']), 'The appended #pre_render callback has not yet run before rendering.');
$this
->assertIdentical((string) $this->renderer
->renderRoot($build), 'Hiya!<br>');
$this
->assertTrue(isset($build['#prefix']) && $build['#prefix'] === 'Hiya!<br>', 'A cached block without content is altered.');
}