From cf8bed89825732853fa91b8bb62d75f36ccdc62e Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Thu, 18 Jan 2024 17:02:21 +0100 Subject: [PATCH] use entity manager and repository instead of object manager/repository --- form/unit_testing.rst | 8 ++++---- service_container/parent_services.rst | 4 ++-- testing/database.rst | 24 ++++++++++++------------ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/form/unit_testing.rst b/form/unit_testing.rst index 3c38bbbaf17..c730f8a63de 100644 --- a/form/unit_testing.rst +++ b/form/unit_testing.rst @@ -147,19 +147,19 @@ make sure the ``FormRegistry`` uses the created instance:: namespace App\Tests\Form\Type; use App\Form\Type\TestedType; - use Doctrine\Persistence\ObjectManager; + use Doctrine\ORM\EntityManager; use Symfony\Component\Form\PreloadedExtension; use Symfony\Component\Form\Test\TypeTestCase; // ... class TestedTypeTest extends TypeTestCase { - private MockObject|ObjectManager $objectManager; + private MockObject&EntityManager $entityManager; protected function setUp(): void { // mock any dependencies - $this->objectManager = $this->createMock(ObjectManager::class); + $this->entityManager = $this->createMock(EntityManager::class); parent::setUp(); } @@ -167,7 +167,7 @@ make sure the ``FormRegistry`` uses the created instance:: protected function getExtensions(): array { // create a type instance with the mocked dependencies - $type = new TestedType($this->objectManager); + $type = new TestedType($this->entityManager); return [ // register the type instances with the PreloadedExtension diff --git a/service_container/parent_services.rst b/service_container/parent_services.rst index 6fea615bc63..b82222c43af 100644 --- a/service_container/parent_services.rst +++ b/service_container/parent_services.rst @@ -9,7 +9,7 @@ you may have multiple repository classes which need the // src/Repository/BaseDoctrineRepository.php namespace App\Repository; - use Doctrine\Persistence\ObjectManager; + use Doctrine\ORM\EntityManager; use Psr\Log\LoggerInterface; // ... @@ -18,7 +18,7 @@ you may have multiple repository classes which need the protected LoggerInterface $logger; public function __construct( - protected ObjectManager $objectManager, + protected EntityManager $entityManager, ) { } diff --git a/testing/database.rst b/testing/database.rst index ebcaf288c58..3f7ce3704f8 100644 --- a/testing/database.rst +++ b/testing/database.rst @@ -20,18 +20,18 @@ Suppose the class you want to test looks like this:: namespace App\Salary; use App\Entity\Employee; - use Doctrine\Persistence\ObjectManager; + use Doctrine\ORM\EntityManager; class SalaryCalculator { public function __construct( - private ObjectManager $objectManager, + private EntityManager $entityManager, ) { } public function calculateTotalSalary(int $id): int { - $employeeRepository = $this->objectManager + $employeeRepository = $this->entityManager ->getRepository(Employee::class); $employee = $employeeRepository->find($id); @@ -47,8 +47,8 @@ constructor, you can pass a mock object within a test:: use App\Entity\Employee; use App\Salary\SalaryCalculator; - use Doctrine\Persistence\ObjectManager; - use Doctrine\Persistence\ObjectRepository; + use Doctrine\ORM\EntityManager; + use Doctrine\ORM\EntityRepository; use PHPUnit\Framework\TestCase; class SalaryCalculatorTest extends TestCase @@ -60,20 +60,20 @@ constructor, you can pass a mock object within a test:: $employee->setBonus(1100); // Now, mock the repository so it returns the mock of the employee - $employeeRepository = $this->createMock(ObjectRepository::class); + $employeeRepository = $this->createMock(EntityRepository::class); $employeeRepository->expects($this->any()) ->method('find') ->willReturn($employee); // Last, mock the EntityManager to return the mock of the repository // (this is not needed if the class being tested injects the - // repository it uses instead of the entire object manager) - $objectManager = $this->createMock(ObjectManager::class); - $objectManager->expects($this->any()) + // repository it uses instead of the entire entity manager) + $entityManager = $this->createMock(EntityManager::class); + $entityManager->expects($this->any()) ->method('getRepository') ->willReturn($employeeRepository); - $salaryCalculator = new SalaryCalculator($objectManager); + $salaryCalculator = new SalaryCalculator($entityManager); $this->assertEquals(2100, $salaryCalculator->calculateTotalSalary(1)); } } @@ -94,12 +94,12 @@ so, get the entity manager via the service container as follows:: namespace App\Tests\Repository; use App\Entity\Product; - use Doctrine\Persistence\ObjectManager; + use Doctrine\ORM\EntityManager; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; class ProductRepositoryTest extends KernelTestCase { - private ObjectManager $entityManager; + private EntityManager $entityManager; protected function setUp(): void {