forked from doctrine/orm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
EntityManagerMock.php
63 lines (52 loc) · 1.63 KB
/
EntityManagerMock.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
declare(strict_types=1);
namespace Doctrine\Tests\Mocks;
use Doctrine\Common\EventManager;
use Doctrine\ORM\Configuration;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\ORMSetup;
use Doctrine\ORM\Proxy\ProxyFactory;
use Doctrine\ORM\UnitOfWork;
/**
* Special EntityManager mock used for testing purposes.
*/
class EntityManagerMock extends EntityManager
{
private ?UnitOfWork $_uowMock = null;
private ?ProxyFactory $_proxyFactoryMock = null;
public function getUnitOfWork(): UnitOfWork
{
return $this->_uowMock ?? parent::getUnitOfWork();
}
/* Mock API */
/**
* Sets a (mock) UnitOfWork that will be returned when getUnitOfWork() is called.
*/
public function setUnitOfWork(UnitOfWork $uow): void
{
$this->_uowMock = $uow;
}
public function setProxyFactory(ProxyFactory $proxyFactory): void
{
$this->_proxyFactoryMock = $proxyFactory;
}
public function getProxyFactory(): ProxyFactory
{
return $this->_proxyFactoryMock ?? parent::getProxyFactory();
}
/**
* Mock factory method to create an EntityManager.
*
* {@inheritdoc}
*/
public static function create($conn, ?Configuration $config = null, ?EventManager $eventManager = null): self
{
if ($config === null) {
$config = new Configuration();
$config->setProxyDir(__DIR__ . '/../Proxies');
$config->setProxyNamespace('Doctrine\Tests\Proxies');
$config->setMetadataDriverImpl(ORMSetup::createDefaultAnnotationDriver());
}
return new EntityManagerMock($conn, $config);
}
}