diff --git a/src/Codeception/Module/Doctrine2.php b/src/Codeception/Module/Doctrine2.php index e10c3c3..7b09848 100644 --- a/src/Codeception/Module/Doctrine2.php +++ b/src/Codeception/Module/Doctrine2.php @@ -685,6 +685,7 @@ private function extractPrimaryKey($instance) * * @param string|string[]|object[] $fixtures * @param bool $append + * @return ORMExecutor * @throws ModuleException * @throws ModuleRequireException */ @@ -785,6 +786,7 @@ public function loadFixtures($fixtures, $append = true) $purger = new ORMPurger($this->em); $executor = new ORMExecutor($this->em, $purger); $executor->execute($loader->getFixtures(), $append); + return $executor; } catch (Exception $e) { throw new ModuleException( __CLASS__, diff --git a/tests/data/doctrine2_fixtures/SharedTestFixture1.php b/tests/data/doctrine2_fixtures/SharedTestFixture1.php new file mode 100644 index 0000000..a5a733f --- /dev/null +++ b/tests/data/doctrine2_fixtures/SharedTestFixture1.php @@ -0,0 +1,17 @@ +setName('from SharedTestFixture1'); + $manager->persist($entity); + $manager->flush(); + + $this->addReference('shared-testfixture-1', $entity); + } +} diff --git a/tests/data/doctrine2_fixtures/SharedTestFixture2.php b/tests/data/doctrine2_fixtures/SharedTestFixture2.php new file mode 100644 index 0000000..54ee9b4 --- /dev/null +++ b/tests/data/doctrine2_fixtures/SharedTestFixture2.php @@ -0,0 +1,17 @@ +setName('from SharedTestFixture2'); + $manager->persist($entity); + $manager->flush(); + + $this->addReference('shared-testfixture-2', $entity); + } +} diff --git a/tests/unit/Codeception/Module/Doctrine2Test.php b/tests/unit/Codeception/Module/Doctrine2Test.php index 785bb0d..26ba42c 100644 --- a/tests/unit/Codeception/Module/Doctrine2Test.php +++ b/tests/unit/Codeception/Module/Doctrine2Test.php @@ -1,4 +1,4 @@ -assertSame($bbb2->getA(), $aaa); $this->assertSame($ccc->getB(), $bbb2); } + + public function testReferenceAccess() + { + $this->_preloadFixtures(); + + $executor = $this->module->loadFixtures([SharedTestFixture1::class, SharedTestFixture2::class]); + $repository = $executor->getReferenceRepository(); + + $sharedFixture1 = $repository->getReference('shared-testfixture-1'); + $sharedFixture2 = $repository->getReference('shared-testfixture-2'); + + $this->assertEquals('from SharedTestFixture1', $sharedFixture1->getName()); + $this->assertEquals('from SharedTestFixture2', $sharedFixture2->getName()); + } }