Skip to content

Commit e14e986

Browse files
committed
Create functional test for deleting packages with TestEntityFactoryTrait
1 parent 23b994c commit e14e986

3 files changed

Lines changed: 78 additions & 2 deletions

File tree

tests/FunctionalTests/Controller/Dashboard/DashboardPackagesControllerTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +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;
12+
use Symfony\Component\HttpFoundation\Response;
913

1014
class DashboardPackagesControllerTest extends WebTestCase
1115
{
16+
use TestEntityFactoryTrait;
1217
use WebTestCaseTrait;
1318

1419
public function testAddMirroring(): void
@@ -74,4 +79,29 @@ public function testEdit(): void
7479

7580
$this->assertResponseStatusCodeSame(302);
7681
}
82+
83+
public function testDelete(): void
84+
{
85+
$client = static::createClient();
86+
$this->loginUser('admin');
87+
88+
$entityManager = $this->getService(EntityManagerInterface::class);
89+
90+
$package = $this->createPackage();
91+
92+
$entityManager->persist($package);
93+
$entityManager->flush();
94+
95+
$packageId = $package->getId();
96+
97+
$client->request('GET', "/packages/{$package->getName()}/delete");
98+
99+
$this->assertResponseStatusCodeSame(Response::HTTP_FOUND);
100+
101+
$entityManager->clear();
102+
103+
$savedPackage = $entityManager->find(Package::class, $packageId);
104+
105+
$this->assertNull($savedPackage, 'The package was deleted.');
106+
}
77107
}

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)