Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ a release.
---

## [Unreleased]
- Blameable: Added UUID in allowed types list for Blameable fields in Annotation

## [3.15.0]
### Added
Expand Down
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
2 changes: 2 additions & 0 deletions src/Blameable/Mapping/Driver/Annotation.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ class Annotation extends AbstractAnnotationDriver
'one',
'string',
'int',
'ulid',
'uuid',
];

public function readExtendedMetadata($meta, array &$config)
Expand Down
2 changes: 2 additions & 0 deletions src/Blameable/Mapping/Driver/Xml.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ class Xml extends BaseXml
'one',
'string',
'int',
'ulid',
'uuid',
];

public function readExtendedMetadata($meta, array &$config)
Expand Down
2 changes: 2 additions & 0 deletions src/Blameable/Mapping/Driver/Yaml.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ class Yaml extends File implements Driver
'one',
'string',
'int',
'ulid',
'uuid',
];

/**
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 <[email protected]> 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 <[email protected]> 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);