You are here

public function EntityTypeBundleInfoTest::testGetAllBundleInfo in Drupal 8

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Core/Entity/EntityTypeBundleInfoTest.php \Drupal\Tests\Core\Entity\EntityTypeBundleInfoTest::testGetAllBundleInfo()

Tests the getAllBundleInfo() method.

@covers ::getAllBundleInfo

File

core/tests/Drupal/Tests/Core/Entity/EntityTypeBundleInfoTest.php, line 215

Class

EntityTypeBundleInfoTest
@coversDefaultClass \Drupal\Core\Entity\EntityTypeBundleInfo @group Entity

Namespace

Drupal\Tests\Core\Entity

Code

public function testGetAllBundleInfo() {
  $this->moduleHandler
    ->invokeAll('entity_bundle_info')
    ->willReturn([]);
  $this->moduleHandler
    ->alter('entity_bundle_info', Argument::type('array'))
    ->willReturn(NULL);
  $apple = $this
    ->prophesize(EntityTypeInterface::class);
  $apple
    ->getLabel()
    ->willReturn('Apple');
  $apple
    ->getBundleEntityType()
    ->willReturn(NULL);
  $banana = $this
    ->prophesize(EntityTypeInterface::class);
  $banana
    ->getLabel()
    ->willReturn('Banana');
  $banana
    ->getBundleEntityType()
    ->willReturn(NULL);
  $this
    ->setUpEntityTypeDefinitions([
    'apple' => $apple,
    'banana' => $banana,
  ]);
  $this->cacheBackend
    ->get('entity_bundle_info:en')
    ->willReturn(FALSE);
  $this->cacheBackend
    ->set('entity_bundle_info:en', Argument::any(), Cache::PERMANENT, [
    'entity_types',
    'entity_bundles',
  ])
    ->will(function () {
    $this
      ->get('entity_bundle_info:en')
      ->willReturn((object) [
      'data' => 'cached data',
    ])
      ->shouldBeCalled();
  })
    ->shouldBeCalled();
  $this->cacheTagsInvalidator
    ->invalidateTags([
    'entity_bundles',
  ])
    ->shouldBeCalled();
  $this->typedDataManager
    ->clearCachedDefinitions()
    ->shouldBeCalled();
  $expected = [
    'apple' => [
      'apple' => [
        'label' => 'Apple',
      ],
    ],
    'banana' => [
      'banana' => [
        'label' => 'Banana',
      ],
    ],
  ];
  $bundle_info = $this->entityTypeBundleInfo
    ->getAllBundleInfo();
  $this
    ->assertSame($expected, $bundle_info);
  $bundle_info = $this->entityTypeBundleInfo
    ->getAllBundleInfo();
  $this
    ->assertSame($expected, $bundle_info);
  $this->entityTypeBundleInfo
    ->clearCachedBundles();
  $bundle_info = $this->entityTypeBundleInfo
    ->getAllBundleInfo();
  $this
    ->assertSame('cached data', $bundle_info);
}