Skip to content

Commit

Permalink
Added Blameable UUID test
Browse files Browse the repository at this point in the history
  • Loading branch information
fwolfsjaeger committed Feb 27, 2024
1 parent 862ac8d commit 21fff3f
Show file tree
Hide file tree
Showing 4 changed files with 156 additions and 0 deletions.
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
"rector/rector": "^0.19",
"symfony/console": "^5.4 || ^6.0 || ^7.0",
"symfony/phpunit-bridge": "^6.0 || ^7.0",
"symfony/uid": "^7.0",
"symfony/yaml": "^5.4 || ^6.0 || ^7.0"
},
"conflict": {
Expand Down
70 changes: 70 additions & 0 deletions tests/Gedmo/Blameable/BlameableUuidTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
<?php

declare(strict_types=1);

/*
* This file is part of the Doctrine Behavioral Extensions package.
* (c) Gediminas Morkevicius <gediminas.morkevicius@gmail.com> http://www.gediminasm.org
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Gedmo\Tests\Blameable;

use Doctrine\Common\EventManager;
use Gedmo\Blameable\Blameable;
use Gedmo\Blameable\BlameableListener;
use Gedmo\Tests\Blameable\Fixture\Entity\Company;
use Gedmo\Tests\Tool\BaseTestCaseORM;
use Symfony\Component\Uid\Uuid;
use Symfony\Component\Uid\UuidV6;

final class BlameableUuidTest extends BaseTestCaseORM
{
private const COMPANY = Company::class;

private UuidV6 $uuid;

protected function setUp(): void
{
parent::setUp();

$this->uuid = Uuid::v6();

$listener = new BlameableListener();
$listener->setUserValue($this->uuid);

$evm = new EventManager();
$evm->addEventSubscriber($listener);

$this->getDefaultMockSqliteEntityManager($evm);
}

public function testBlameableUuid(): void
{
$company = new Company();
$company->setName('ACME');

self::assertInstanceOf(Blameable::class, $company);

$this->em->persist($company);
$this->em->flush();
$this->em->clear();

/**
* @var Company $foundCompany
*/
$foundCompany = $this->em->getRepository(self::COMPANY)->findOneBy(['name' => 'ACME']);
$created = $foundCompany->getCreated();
$createdUuid = $created instanceof Uuid ? $created->toRfc4122() : null;

self::assertSame($this->uuid->toRfc4122(), $createdUuid);
}

protected function getUsedEntityFixtures(): array
{
return [
self::COMPANY,
];
}
}
81 changes: 81 additions & 0 deletions tests/Gedmo/Blameable/Fixture/Entity/Company.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<?php

declare(strict_types=1);

/*
* This file is part of the Doctrine Behavioral Extensions package.
* (c) Gediminas Morkevicius <gediminas.morkevicius@gmail.com> http://www.gediminasm.org
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Gedmo\Tests\Blameable\Fixture\Entity;

use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Blameable\Blameable;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Uid\Uuid;
use Symfony\Component\Uid\UuidV6;

/**
* @ORM\Entity
*/
#[ORM\Entity]
class Company implements Blameable
{
/**
* @var int|null
*
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: Types::INTEGER)]
private $id;

/**
* @var string|null
*
* @ORM\Column(name="name", type="string", length=128)
*/
#[ORM\Column(name: 'name', type: Types::STRING, length: 128)]
private $name;

/**
* @var UuidV6|null
*
* @Gedmo\Blameable(on="create")
* @ORM\Column(name="created", type="uuid")
*/
#[ORM\Column(name: 'created', type: 'uuid')]
#[Gedmo\Blameable(on: 'create')]
private $created;

public function getId(): ?int
{
return $this->id;
}

public function setName(?string $name): void
{
$this->name = $name;
}

public function getName(): ?string
{
return $this->name;
}

public function getCreated(): ?Uuid
{
return $this->created;
}

public function setCreated(?UuidV6 $created): void
{
$this->created = $created;
}
}
4 changes: 4 additions & 0 deletions tests/bootstrap.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@

use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\Common\Annotations\PsrCachedReader;
use Doctrine\DBAL\Types\Type;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
use Symfony\Bridge\Doctrine\Types\UuidType;

/*
* This is bootstrap for phpUnit unit tests,
Expand All @@ -30,3 +32,5 @@
$reader = new AnnotationReader();
$reader = new PsrCachedReader($reader, new ArrayAdapter());
$_ENV['annotation_reader'] = $reader;

Type::addType('uuid', UuidType::class);

0 comments on commit 21fff3f

Please sign in to comment.