Skip to content

Commit 2b53bd4

Browse files
committed
Split entity manager methods of MockEntityFactoryTrait into separate trait
1 parent 9528c5f commit 2b53bd4

7 files changed

Lines changed: 61 additions & 41 deletions

tests/FunctionalTests/Controller/ApiControllerPublicTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use CodedMonkey\Dirigent\Doctrine\Entity\Registry;
77
use CodedMonkey\Dirigent\Doctrine\Entity\RegistryPackageMirroring;
88
use CodedMonkey\Dirigent\Tests\FunctionalTests\PublicKernel;
9+
use CodedMonkey\Dirigent\Tests\Helper\EntityManagerTestTrait;
910
use CodedMonkey\Dirigent\Tests\Helper\KernelTestCaseTrait;
1011
use CodedMonkey\Dirigent\Tests\Helper\MockEntityFactoryTrait;
1112
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
@@ -14,6 +15,7 @@
1415

1516
class ApiControllerPublicTest extends KernelTestCase
1617
{
18+
use EntityManagerTestTrait;
1719
use KernelTestCaseTrait;
1820
use MockEntityFactoryTrait;
1921

tests/FunctionalTests/Controller/Dashboard/DashboardAccountControllerTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use CodedMonkey\Dirigent\Controller\Dashboard\DashboardAccountController;
66
use CodedMonkey\Dirigent\Doctrine\Entity\User;
7+
use CodedMonkey\Dirigent\Tests\Helper\EntityManagerTestTrait;
78
use CodedMonkey\Dirigent\Tests\Helper\MockEntityFactoryTrait;
89
use CodedMonkey\Dirigent\Tests\Helper\WebTestCaseTrait;
910
use Doctrine\ORM\EntityManagerInterface;
@@ -15,6 +16,7 @@
1516
#[CoversClass(DashboardAccountController::class)]
1617
class DashboardAccountControllerTest extends WebTestCase
1718
{
19+
use EntityManagerTestTrait;
1820
use MockEntityFactoryTrait;
1921
use WebTestCaseTrait;
2022

tests/FunctionalTests/Controller/Dashboard/DashboardCredentialsControllerTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use CodedMonkey\Dirigent\Controller\Dashboard\DashboardCredentialsController;
66
use CodedMonkey\Dirigent\Doctrine\Entity\Credentials;
77
use CodedMonkey\Dirigent\Doctrine\Entity\CredentialsType;
8+
use CodedMonkey\Dirigent\Tests\Helper\EntityManagerTestTrait;
89
use CodedMonkey\Dirigent\Tests\Helper\MockEntityFactoryTrait;
910
use CodedMonkey\Dirigent\Tests\Helper\WebTestCaseTrait;
1011
use PHPUnit\Framework\Attributes\CoversClass;
@@ -14,6 +15,7 @@
1415
#[CoversClass(DashboardCredentialsController::class)]
1516
class DashboardCredentialsControllerTest extends WebTestCase
1617
{
18+
use EntityManagerTestTrait;
1719
use MockEntityFactoryTrait;
1820
use WebTestCaseTrait;
1921

tests/FunctionalTests/Controller/Dashboard/DashboardPackagesControllerTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55
use CodedMonkey\Dirigent\Doctrine\Entity\Package;
66
use CodedMonkey\Dirigent\Doctrine\Repository\PackageRepository;
77
use CodedMonkey\Dirigent\Doctrine\Repository\RegistryRepository;
8+
use CodedMonkey\Dirigent\Tests\Helper\EntityManagerTestTrait;
89
use CodedMonkey\Dirigent\Tests\Helper\MockEntityFactoryTrait;
910
use CodedMonkey\Dirigent\Tests\Helper\WebTestCaseTrait;
1011
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
1112
use Symfony\Component\HttpFoundation\Response;
1213

1314
class DashboardPackagesControllerTest extends WebTestCase
1415
{
16+
use EntityManagerTestTrait;
1517
use MockEntityFactoryTrait;
1618
use WebTestCaseTrait;
1719

tests/FunctionalTests/Controller/Dashboard/DashboardPackagesInfoControllerTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@
33
namespace CodedMonkey\Dirigent\Tests\FunctionalTests\Controller\Dashboard;
44

55
use CodedMonkey\Dirigent\Doctrine\Repository\PackageRepository;
6+
use CodedMonkey\Dirigent\Tests\Helper\EntityManagerTestTrait;
67
use CodedMonkey\Dirigent\Tests\Helper\MockEntityFactoryTrait;
78
use CodedMonkey\Dirigent\Tests\Helper\WebTestCaseTrait;
89
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
910
use Symfony\Component\HttpFoundation\Response;
1011

1112
class DashboardPackagesInfoControllerTest extends WebTestCase
1213
{
14+
use EntityManagerTestTrait;
1315
use MockEntityFactoryTrait;
1416
use WebTestCaseTrait;
1517

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
3+
namespace CodedMonkey\Dirigent\Tests\Helper;
4+
5+
use Doctrine\ORM\EntityManagerInterface;
6+
7+
trait EntityManagerTestTrait
8+
{
9+
/**
10+
* Find a single entity by its ID or an array of criteria.
11+
*
12+
* @template T of object
13+
*
14+
* @param class-string<T> $className
15+
*
16+
* @return T|null
17+
*/
18+
protected function findEntity(string $className, array|int $criteria): ?object
19+
{
20+
if (is_array($criteria)) {
21+
return $this->getService(EntityManagerInterface::class)->getRepository($className)->findOneBy($criteria);
22+
}
23+
24+
return $this->getService(EntityManagerInterface::class)->find($className, $criteria);
25+
}
26+
27+
/**
28+
* Persist and flush all given entities.
29+
*
30+
* @param object ...$entities
31+
*/
32+
protected function persistEntities(...$entities): void
33+
{
34+
$entityManager = $this->getService(EntityManagerInterface::class);
35+
36+
foreach ($entities as $entity) {
37+
$entityManager->persist($entity);
38+
}
39+
40+
$entityManager->flush();
41+
}
42+
43+
protected function clearEntities(): void
44+
{
45+
$this->getService(EntityManagerInterface::class)->clear();
46+
}
47+
}

tests/Helper/MockEntityFactoryTrait.php

Lines changed: 4 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
use CodedMonkey\Dirigent\Doctrine\Entity\User;
99
use CodedMonkey\Dirigent\Doctrine\Entity\Version;
1010
use Composer\Semver\VersionParser;
11-
use Doctrine\ORM\EntityManagerInterface;
1211
use Scheb\TwoFactorBundle\Security\TwoFactor\Provider\Totp\TotpAuthenticator;
1312

1413
trait MockEntityFactoryTrait
@@ -57,7 +56,10 @@ protected function createMockUser(bool $mfaEnabled = false): User
5756
$user->setPlainPassword('PlainPassword99');
5857

5958
if ($mfaEnabled) {
60-
$totpAuthenticator = $this->getService(TotpAuthenticator::class);
59+
/** @var TotpAuthenticator $totpAuthenticator */
60+
$totpAuthenticator = $this->getMockBuilder(TotpAuthenticator::class)
61+
->disableOriginalConstructor()
62+
->getMock();
6163

6264
$user->setTotpSecret($totpAuthenticator->generateSecret());
6365
}
@@ -74,43 +76,4 @@ protected function createMockVersion(Package $package, string $versionName = '1.
7476

7577
return $version;
7678
}
77-
78-
/**
79-
* Find a single entity by its ID or an array of criteria.
80-
*
81-
* @template T of object
82-
*
83-
* @param class-string<T> $className
84-
*
85-
* @return T|null
86-
*/
87-
protected function findEntity(string $className, array|int $criteria): ?object
88-
{
89-
if (is_array($criteria)) {
90-
return $this->getService(EntityManagerInterface::class)->getRepository($className)->findOneBy($criteria);
91-
}
92-
93-
return $this->getService(EntityManagerInterface::class)->find($className, $criteria);
94-
}
95-
96-
/**
97-
* Persist and flush all given entities.
98-
*
99-
* @param object ...$entities
100-
*/
101-
protected function persistEntities(...$entities): void
102-
{
103-
$entityManager = $this->getService(EntityManagerInterface::class);
104-
105-
foreach ($entities as $entity) {
106-
$entityManager->persist($entity);
107-
}
108-
109-
$entityManager->flush();
110-
}
111-
112-
protected function clearEntities(): void
113-
{
114-
$this->getService(EntityManagerInterface::class)->clear();
115-
}
11679
}

0 commit comments

Comments
 (0)