function EntityStorageBaseTest::testLoadMultiple

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Core/Entity/EntityStorageBaseTest.php \Drupal\Tests\Core\Entity\EntityStorageBaseTest::testLoadMultiple()
  2. 11.x core/tests/Drupal/Tests/Core/Entity/EntityStorageBaseTest.php \Drupal\Tests\Core\Entity\EntityStorageBaseTest::testLoadMultiple()

Test loadMultiple().

Does not cover statically-cached results.

@covers ::loadMultiple

@dataProvider providerLoadMultiple

File

core/tests/Drupal/Tests/Core/Entity/EntityStorageBaseTest.php, line 103

Class

EntityStorageBaseTest
@coversDefaultClass \Drupal\Core\Entity\EntityStorageBase[[api-linebreak]] @group Entity

Namespace

Drupal\Tests\Core\Entity

Code

public function testLoadMultiple(array $expected, array $load_multiple, array|null $query) : void {
  $expected = array_map([
    $this,
    'generateEntityInterface',
  ], $expected);
  $load_multiple = array_map([
    $this,
    'generateEntityInterface',
  ], $load_multiple);
  // Make our EntityStorageBase mock.
  $mock_base = $this->getMockBuilder('\\Drupal\\Core\\Entity\\EntityStorageBase')
    ->disableOriginalConstructor()
    ->onlyMethods([
    'doLoadMultiple',
    'postLoad',
  ])
    ->getMockForAbstractClass();
  // For all non-cached queries, we call doLoadMultiple().
  $mock_base->expects($this->once())
    ->method('doLoadMultiple')
    ->with($query)
    ->willReturn($load_multiple);
  // Make our EntityTypeInterface mock so that we can turn off static caching.
  $mock_entity_type = $this->createMock('\\Drupal\\Core\\Entity\\EntityTypeInterface');
  // Disallow caching.
  $mock_entity_type->expects($this->any())
    ->method('isStaticallyCacheable')
    ->willReturn(FALSE);
  // Add the EntityTypeInterface to the storage object.
  $ref_entity_type = new \ReflectionProperty($mock_base, 'entityType');
  $ref_entity_type->setValue($mock_base, $mock_entity_type);
  // Set up expectations for postLoad(), which we only call if there are
  // results from loadMultiple().
  $mock_base->expects($this->exactly(empty($load_multiple) ? 0 : 1))
    ->method('postLoad');
  $this->assertEquals($expected, $mock_base->loadMultiple($query));
}

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