function BlockComponentRenderArrayTest::testOnBuildRenderDenied

Same name and namespace in other branches
  1. 9 core/modules/layout_builder/tests/src/Unit/BlockComponentRenderArrayTest.php \Drupal\Tests\layout_builder\Unit\BlockComponentRenderArrayTest::testOnBuildRenderDenied()
  2. 8.9.x core/modules/layout_builder/tests/src/Unit/BlockComponentRenderArrayTest.php \Drupal\Tests\layout_builder\Unit\BlockComponentRenderArrayTest::testOnBuildRenderDenied()
  3. 11.x core/modules/layout_builder/tests/src/Unit/BlockComponentRenderArrayTest.php \Drupal\Tests\layout_builder\Unit\BlockComponentRenderArrayTest::testOnBuildRenderDenied()

@covers ::onBuildRender

@dataProvider providerBlockTypes

File

core/modules/layout_builder/tests/src/Unit/BlockComponentRenderArrayTest.php, line 224

Class

BlockComponentRenderArrayTest
@coversDefaultClass \Drupal\layout_builder\EventSubscriber\BlockComponentRenderArray[[api-linebreak]] @group layout_builder

Namespace

Drupal\Tests\layout_builder\Unit

Code

public function testOnBuildRenderDenied($refinable_dependent_access) : void {
  $contexts = [];
  if ($refinable_dependent_access) {
    $block = $this->prophesize(TestBlockPluginWithRefinableDependentAccessInterface::class);
    $layout_entity = $this->prophesize(EntityInterface::class);
    $layout_entity = $layout_entity->reveal();
    $context = $this->prophesize(ContextInterface::class);
    $context->getContextValue()
      ->willReturn($layout_entity);
    $contexts['layout_builder.entity'] = $context->reveal();
    $block->setAccessDependency($layout_entity)
      ->shouldBeCalled();
  }
  else {
    $block = $this->prophesize(BlockPluginInterface::class);
  }
  $access_result = AccessResult::forbidden();
  $block->access($this->account
    ->reveal(), TRUE)
    ->willReturn($access_result)
    ->shouldBeCalled();
  $block->getCacheContexts()
    ->shouldNotBeCalled();
  $block->getCacheTags()
    ->shouldNotBeCalled();
  $block->getCacheMaxAge()
    ->shouldNotBeCalled();
  $block->getConfiguration()
    ->shouldNotBeCalled();
  $block->getPluginId()
    ->shouldNotBeCalled();
  $block->getBaseId()
    ->shouldNotBeCalled();
  $block->getDerivativeId()
    ->shouldNotBeCalled();
  $block_content = [
    '#markup' => 'The block content.',
  ];
  $block->build()
    ->willReturn($block_content);
  $this->blockManager
    ->createInstance('some_block_id', [
    'id' => 'some_block_id',
  ])
    ->willReturn($block->reveal());
  $component = new SectionComponent('some-uuid', 'some-region', [
    'id' => 'some_block_id',
  ]);
  $in_preview = FALSE;
  $event = new SectionComponentBuildRenderArrayEvent($component, $contexts, $in_preview);
  $subscriber = new BlockComponentRenderArray($this->account
    ->reveal());
  $expected_build = [];
  $expected_cache = [
    '#cache' => [
      'contexts' => [],
      'tags' => [],
      'max-age' => -1,
    ],
  ];
  $subscriber->onBuildRender($event);
  $result = $event->getBuild();
  $this->assertEquals($expected_build, $result);
  $event->getCacheableMetadata()
    ->applyTo($result);
  $this->assertEquals($expected_cache, $result);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.