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. 10 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 <a href="/api/drupal/core%21lib%21Drupal%21Core%21Entity%21EntityStorageBase.php/class/EntityStorageBase/11.x" title="A base entity storage class." class="local">\Drupal\Core\Entity\EntityStorageBase</a> @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.