Skip to content

Commit 553c228

Browse files
committed
Create functional test for deleting packages with TestEntityFactoryTrait
1 parent ebca54f commit 553c228

3 files changed

Lines changed: 77 additions & 2 deletions

File tree

tests/FunctionalTests/Controller/Dashboard/DashboardPackagesControllerTest.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,18 @@
22

33
namespace CodedMonkey\Dirigent\Tests\FunctionalTests\Controller\Dashboard;
44

5+
use CodedMonkey\Dirigent\Doctrine\Entity\Package;
56
use CodedMonkey\Dirigent\Doctrine\Repository\PackageRepository;
67
use CodedMonkey\Dirigent\Doctrine\Repository\RegistryRepository;
78
use CodedMonkey\Dirigent\Tests\FunctionalTests\WebTestCaseTrait;
9+
use CodedMonkey\Dirigent\Tests\Helper\TestEntityFactoryTrait;
10+
use Doctrine\ORM\EntityManagerInterface;
811
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
912
use Symfony\Component\HttpFoundation\Response;
1013

1114
class DashboardPackagesControllerTest extends WebTestCase
1215
{
16+
use TestEntityFactoryTrait;
1317
use WebTestCaseTrait;
1418

1519
public function testAddMirroring(): void
@@ -84,4 +88,29 @@ public function testEdit(): void
8488

8589
$this->assertResponseStatusCodeSame(Response::HTTP_FOUND);
8690
}
91+
92+
public function testDelete(): void
93+
{
94+
$client = static::createClient();
95+
$this->loginUser('admin');
96+
97+
$entityManager = $this->getService(EntityManagerInterface::class);
98+
99+
$package = $this->createPackage();
100+
101+
$entityManager->persist($package);
102+
$entityManager->flush();
103+
104+
$packageId = $package->getId();
105+
106+
$client->request('GET', "/packages/{$package->getName()}/delete");
107+
108+
$this->assertResponseStatusCodeSame(Response::HTTP_FOUND);
109+
110+
$entityManager->clear();
111+
112+
$savedPackage = $entityManager->find(Package::class, $packageId);
113+
114+
$this->assertNull($savedPackage, 'The package was deleted.');
115+
}
87116
}

tests/FunctionalTests/WebTestCaseTrait.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,26 @@
88

99
trait WebTestCaseTrait
1010
{
11+
/**
12+
* @template TServiceClass of object
13+
*
14+
* @param class-string<TServiceClass> $class
15+
*
16+
* @return TServiceClass
17+
*/
18+
protected function getService(string $class, ?string $name = null): object
19+
{
20+
/** @var KernelBrowser $client */
21+
$client = static::getClient();
22+
23+
return $client->getContainer()->get($name ?: $class);
24+
}
25+
1126
protected function loginUser(string $username = 'user'): User
1227
{
1328
/** @var KernelBrowser $client */
1429
$client = static::getClient();
15-
/** @var UserRepository $userRepository */
16-
$userRepository = $client->getContainer()->get(UserRepository::class);
30+
$userRepository = static::getService(UserRepository::class);
1731

1832
/** @var User $user */
1933
$user = $userRepository->findOneByUsername($username);
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
namespace CodedMonkey\Dirigent\Tests\Helper;
4+
5+
use CodedMonkey\Dirigent\Doctrine\Entity\Package;
6+
use CodedMonkey\Dirigent\Doctrine\Entity\Version;
7+
use Composer\Semver\VersionParser;
8+
9+
trait TestEntityFactoryTrait
10+
{
11+
protected function createPackage(): Package
12+
{
13+
$package = new Package();
14+
$package->setName(sprintf('%s/%s', uniqid(), uniqid()));
15+
16+
return $package;
17+
}
18+
19+
protected function createVersion(Package $package, string $versionName = '1.0.0'): Version
20+
{
21+
$version = new Version();
22+
23+
$version->setName($package->getName());
24+
$version->setVersion($versionName);
25+
$version->setNormalizedVersion((new VersionParser())->normalize($versionName));
26+
$version->setPackage($package);
27+
28+
$package->getVersions()->add($version);
29+
30+
return $version;
31+
}
32+
}

0 commit comments

Comments
 (0)