diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityStorageBaseTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityStorageBaseTest.php index de87cce4435dd6ff63e74f3fc6b333048f171826..82bef5186037aa6c87ed06cf7d5009651d29f50c 100644 --- a/core/tests/Drupal/Tests/Core/Entity/EntityStorageBaseTest.php +++ b/core/tests/Drupal/Tests/Core/Entity/EntityStorageBaseTest.php @@ -4,7 +4,9 @@ namespace Drupal\Tests\Core\Entity; +use Drupal\Core\Entity\EntityInterface; use Drupal\Tests\UnitTestCase; +use PHPUnit\Framework\MockObject\MockObject; /** * @coversDefaultClass \Drupal\Core\Entity\EntityStorageBase @@ -21,34 +23,23 @@ class EntityStorageBaseTest extends UnitTestCase { * @return \Drupal\Core\Entity\EntityInterface|\PHPUnit\Framework\MockObject\MockObject * The mocked entity. */ - public function generateEntityInterface($id) { - $mock_entity = $this->createMock('\Drupal\Core\Entity\EntityInterface'); + public function generateEntityInterface(string $id): EntityInterface&MockObject { + $mock_entity = $this->createMock(EntityInterface::class); $mock_entity->expects($this->any()) ->method('id') - ->willReturn((string) $id); + ->willReturn($id); return $mock_entity; } /** * Data provider for testLoad(). - * - * @return array - * - Expected output of load(). - * - A fixture of entities to query against. Suitable return value for - * loadMultiple(). - * - The ID we'll query. */ - public function providerLoad() { - $data = []; - + public static function providerLoad(): \Generator { // Data set for a matching value. - $entity = $this->generateEntityInterface('1'); - $data['matching-value'] = [$entity, ['1' => $entity], '1']; + yield 'matching-value' => ['1', ['1' => '1'], '1']; // Data set for no matching value. - $data['no-matching-value'] = [NULL, [], '0']; - - return $data; + yield 'no-matching-value' => [NULL, [], '0']; } /** @@ -56,7 +47,12 @@ public function providerLoad() { * * @dataProvider providerLoad */ - public function testLoad($expected, $entity_fixture, $query) { + public function testLoad(string|null $expected, array $entity_fixture, string $query): void { + if (!is_null($expected)) { + $expected = $this->generateEntityInterface($expected); + } + $entity_fixture = array_map([$this, 'generateEntityInterface'], $entity_fixture); + $mock_base = $this->getMockBuilder('\Drupal\Core\Entity\EntityStorageBase') ->disableOriginalConstructor() ->onlyMethods(['loadMultiple']) @@ -73,59 +69,26 @@ public function testLoad($expected, $entity_fixture, $query) { /** * Data provider for testLoadMultiple. - * - * @return array - * - The expected result. - * - Results for doLoadMultiple(), called internally by loadMultiple(). - * - The query, an array of IDs. */ - public function providerLoadMultiple() { - // Create a fixture of entity objects. - $fixture = []; - foreach (range(1, 10) as $index) { - $fixture[(string) $index] = $this->generateEntityInterface($index); - } - - $data = []; - + public static function providerLoadMultiple(): \Generator { // Data set for NULL ID parameter. - $data['null-id-parameter'] = [$fixture, $fixture, NULL]; + yield 'null-id-parameter' => [range(1, 10), range(1, 10), NULL]; // Data set for no results. - $data['no-results'] = [[], [], ['11']]; + yield 'no-results' => [[], [], ['11']]; // Data set for 0 results for multiple IDs. - $data['no-results-multiple-ids'] = [[], [], ['11', '12', '13']]; + yield 'no-results-multiple-ids' => [[], [], ['11', '12', '13']]; // Data set for 1 result for 1 ID. - $data['1-result-for-1-id'] = [ - ['1' => $fixture['1']], - ['1' => $fixture['1']], - ['1'], - ]; + yield '1-result-for-1-id' => [['1' => '1'], ['1' => '1'], ['1']]; // Data set for results for all IDs. $ids = ['1', '2', '3']; - foreach ($ids as $id) { - $expectation[$id] = $fixture[$id]; - $load_multiple[$id] = $fixture[$id]; - } - $data['results-for-all-ids'] = [$expectation, $load_multiple, $ids]; + yield 'results-for-all-ids' => [$ids, $ids, $ids]; // Data set for partial results for multiple IDs. - $ids = ['1', '2', '3']; - foreach ($ids as $id) { - $expectation[$id] = $fixture[$id]; - $load_multiple[$id] = $fixture[$id]; - } - $ids = array_merge($ids, ['11', '12']); - $data['partial-results-for-multiple-ids'] = [ - $expectation, - $load_multiple, - $ids, - ]; - - return $data; + yield 'partial-results-for-multiple-ids' => [$ids, $ids, array_merge($ids, ['11', '12'])]; } /** @@ -137,7 +100,10 @@ public function providerLoadMultiple() { * * @dataProvider providerLoadMultiple */ - public function testLoadMultiple($expected, $load_multiple, $query) { + 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()