From 7142c9029c27fee200df74efe5ed395f2cfe130a Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Tue, 14 Oct 2014 01:40:19 +0200 Subject: [PATCH] #1159 - `Doctrine\ORM\Repository\DefaultRepositoryFactory` should create different repositories for different entity managers --- .../DefaultRepositoryFactoryTest.php | 46 ++++++++++++++++--- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/tests/Doctrine/Tests/ORM/Repository/DefaultRepositoryFactoryTest.php b/tests/Doctrine/Tests/ORM/Repository/DefaultRepositoryFactoryTest.php index 1d02659a6..c3909b504 100644 --- a/tests/Doctrine/Tests/ORM/Repository/DefaultRepositoryFactoryTest.php +++ b/tests/Doctrine/Tests/ORM/Repository/DefaultRepositoryFactoryTest.php @@ -33,16 +33,10 @@ class DefaultRepositoryFactoryTest extends PHPUnit_Framework_TestCase */ protected function setUp() { - $this->entityManager = $this->getMock('Doctrine\\ORM\\EntityManagerInterface'); $this->configuration = $this->getMock('Doctrine\\ORM\\Configuration'); + $this->entityManager = $this->createEntityManager(); $this->repositoryFactory = new DefaultRepositoryFactory(); - $this - ->entityManager - ->expects($this->any()) - ->method('getConfiguration') - ->will($this->returnValue($this->configuration)); - $this ->configuration ->expects($this->any()) @@ -96,6 +90,29 @@ class DefaultRepositoryFactoryTest extends PHPUnit_Framework_TestCase ); } + public function testCachesDistinctRepositoriesPerDistinctEntityManager() + { + $em1 = $this->createEntityManager(); + $em2 = $this->createEntityManager(); + + $em1 + ->expects($this->any()) + ->method('getClassMetadata') + ->will($this->returnCallback(array($this, 'buildClassMetadata'))); + $em2 + ->expects($this->any()) + ->method('getClassMetadata') + ->will($this->returnCallback(array($this, 'buildClassMetadata'))); + + $repo1 = $this->repositoryFactory->getRepository($em1, __CLASS__); + $repo2 = $this->repositoryFactory->getRepository($em2, __CLASS__); + + $this->assertSame($repo1, $this->repositoryFactory->getRepository($em1, __CLASS__)); + $this->assertSame($repo2, $this->repositoryFactory->getRepository($em2, __CLASS__)); + + $this->assertNotSame($repo1, $repo2); + } + /** * @private * @@ -117,4 +134,19 @@ class DefaultRepositoryFactoryTest extends PHPUnit_Framework_TestCase return $metadata; } + + /** + * @return \Doctrine\ORM\EntityManagerInterface|\PHPUnit_Framework_MockObject_MockObject + */ + private function createEntityManager() + { + $entityManager = $this->getMock('Doctrine\\ORM\\EntityManagerInterface'); + + $entityManager + ->expects($this->any()) + ->method('getConfiguration') + ->will($this->returnValue($this->configuration)); + + return $entityManager; + } } \ No newline at end of file