Skip to content

Commit

Permalink
Adjust PHPBench mocks
Browse files Browse the repository at this point in the history
  • Loading branch information
derrabus committed Mar 21, 2024
1 parent 0a1988b commit 9c56071
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 23 deletions.
25 changes: 8 additions & 17 deletions tests/Performance/Mock/NonLoadingPersister.php
Expand Up @@ -4,31 +4,22 @@

namespace Doctrine\Performance\Mock;

use Doctrine\DBAL\LockMode;
use Doctrine\ORM\Mapping\AssociationMapping;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Persisters\Entity\BasicEntityPersister;

/**
* A persister that doesn't actually load given objects
*/
class NonLoadingPersister extends BasicEntityPersister
{
public function __construct()
{
public function __construct(
ClassMetadata $class,
) {
$this->class = $class;
}

/**
* {@inheritDoc}
*/
public function load(
array $criteria,
object|null $entity = null,
AssociationMapping|null $assoc = null,
array $hints = [],
LockMode|int|null $lockMode = null,
int|null $limit = null,
array|null $orderBy = null,
): object|null {
return $entity;
public function loadById(array $identifier, object|null $entity = null): object|null
{
return $entity ?? new ($this->class->name)();
}
}
2 changes: 1 addition & 1 deletion tests/Performance/Mock/NonProxyLoadingEntityManager.php
Expand Up @@ -57,7 +57,7 @@ public function getClassMetadata(string $className): ClassMetadata

public function getUnitOfWork(): UnitOfWork
{
return new NonProxyLoadingUnitOfWork();
return new NonProxyLoadingUnitOfWork($this);
}

public function getCache(): Cache|null
Expand Down
13 changes: 8 additions & 5 deletions tests/Performance/Mock/NonProxyLoadingUnitOfWork.php
Expand Up @@ -4,22 +4,25 @@

namespace Doctrine\Performance\Mock;

use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\UnitOfWork;

/**
* An unit of work mock that prevents lazy-loading of proxies
*/
class NonProxyLoadingUnitOfWork extends UnitOfWork
{
private NonLoadingPersister $entityPersister;
/** @var array<class-string, NonLoadingPersister> */
private array $entityPersisters = [];

public function __construct()
{
$this->entityPersister = new NonLoadingPersister();
public function __construct(
private EntityManagerInterface $entityManager,
) {
}

public function getEntityPersister(string $entityName): NonLoadingPersister
{
return $this->entityPersister;
return $this->entityPersisters[$entityName]
??= new NonLoadingPersister($this->entityManager->getClassMetadata($entityName));
}
}

0 comments on commit 9c56071

Please sign in to comment.