Skip to content

Commit e95c68d

Browse files
committed
Merge branch 'persist-keywords' into 0.7
2 parents 23bc496 + 6829223 commit e95c68d

2 files changed

Lines changed: 34 additions & 1 deletion

File tree

‎src/Doctrine/Repository/KeywordRepository.php‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public function remove(Keyword $entity, bool $flush = false): void
4848

4949
public function getByName(string $name): Keyword
5050
{
51-
if (isset($this->cachedKeywords[$name])) {
51+
if (isset($this->cachedKeywords[$name]) && $this->getEntityManager()->contains($this->cachedKeywords[$name])) {
5252
return $this->cachedKeywords[$name];
5353
}
5454

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace CodedMonkey\Dirigent\Tests\FunctionalTests\Doctrine\Repository;
6+
7+
use CodedMonkey\Dirigent\Doctrine\Repository\KeywordRepository;
8+
use CodedMonkey\Dirigent\Tests\Helper\EntityManagerTestTrait;
9+
use CodedMonkey\Dirigent\Tests\Helper\KernelTestCaseTrait;
10+
use Doctrine\ORM\EntityManagerInterface;
11+
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
12+
13+
class KeywordRepositoryTest extends KernelTestCase
14+
{
15+
use EntityManagerTestTrait;
16+
use KernelTestCaseTrait;
17+
18+
public function testGetByNameDoesNotReturnCachedDetachedEntity(): void
19+
{
20+
$repository = $this->getService(KeywordRepository::class);
21+
$entityManager = $this->getService(EntityManagerInterface::class);
22+
$keyword = $repository->getByName(uniqid('keyword-', true));
23+
24+
$entityManager->flush();
25+
$entityManager->clear();
26+
27+
$managedKeyword = $repository->getByName($keyword->getName());
28+
29+
$this->assertNotSame($keyword, $managedKeyword);
30+
$this->assertSame($keyword->getId(), $managedKeyword->getId());
31+
$this->assertTrue($entityManager->contains($managedKeyword));
32+
}
33+
}

0 commit comments

Comments
 (0)