You are here

public function LayoutBuilderIsActiveCacheContextTest::testGetContext in Drupal 10

@covers ::getContext @covers ::getDisplay

@dataProvider providerTestGetContext

File

core/modules/layout_builder/tests/src/Unit/LayoutBuilderIsActiveCacheContextTest.php, line 55

Class

LayoutBuilderIsActiveCacheContextTest
@coversDefaultClass \Drupal\layout_builder\Cache\LayoutBuilderIsActiveCacheContext

Namespace

Drupal\Tests\layout_builder\Unit

Code

public function testGetContext($is_overridden, $expected) {
  $entity_display = $this
    ->prophesize(LayoutEntityDisplayInterface::class);
  $entity_display
    ->isOverridable()
    ->willReturn($is_overridden);
  $entity_type_id = 'a_fieldable_entity_type';
  $fieldable_entity = $this
    ->prophesize(FieldableEntityInterface::class);
  $fieldable_entity
    ->getEntityTypeId()
    ->willReturn($entity_type_id);
  $fieldable_entity
    ->bundle()
    ->willReturn('the_bundle_id');
  $route_match = $this
    ->prophesize(RouteMatchInterface::class);
  $route_match
    ->getParameter($entity_type_id)
    ->willReturn($fieldable_entity
    ->reveal());

  // \Drupal\Core\Entity\Entity\EntityViewDisplay::collectRenderDisplay() is a
  // static method and can not be mocked on its own. All of the expectations
  // of that method are mocked in the next code block.
  $entity_query = $this
    ->prophesize(QueryInterface::class);
  $entity_query
    ->condition(Argument::cetera())
    ->willReturn($entity_query);
  $entity_query
    ->execute()
    ->willReturn([
    'a_fieldable_entity_type.the_bundle_id.full' => 'a_fieldable_entity_type.the_bundle_id.full',
  ]);
  $entity_storage = $this
    ->prophesize(EntityStorageInterface::class);
  $entity_storage
    ->getQuery('AND')
    ->willReturn($entity_query
    ->reveal());
  $entity_storage
    ->loadMultiple(Argument::type('array'))
    ->willReturn([
    'a_fieldable_entity_type.the_bundle_id.full' => $entity_display
      ->reveal(),
  ]);
  $entity_type_manager = $this
    ->prophesize(EntityTypeManagerInterface::class);
  $entity_type_manager
    ->getStorage('entity_view_display')
    ->willReturn($entity_storage
    ->reveal());
  $module_handler = $this
    ->prophesize(ModuleHandlerInterface::class);
  $container = new ContainerBuilder();
  $container
    ->set('entity_type.manager', $entity_type_manager
    ->reveal());
  $container
    ->set('module_handler', $module_handler
    ->reveal());
  \Drupal::setContainer($container);
  $cache_context = new LayoutBuilderIsActiveCacheContext($route_match
    ->reveal());
  $actual = $cache_context
    ->getContext($entity_type_id);
  $this
    ->assertSame($expected, $actual);
}