Skip to content

Commit

Permalink
Write test for column of type blob. (#99)
Browse files Browse the repository at this point in the history
* Wrote a test for #98

* Fixed phpcs issues

* Handle the BLOB in the same way as BINARY
  • Loading branch information
SanderVerkuil authored Apr 19, 2022
1 parent 0aebff7 commit 600f64f
Show file tree
Hide file tree
Showing 3 changed files with 136 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/Provider/Doctrine/Auditing/Transaction/AuditTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ private function value(EntityManagerInterface $entityManager, Type $type, $value

break;

case DoctrineHelper::getDoctrineType('BLOB'):
case DoctrineHelper::getDoctrineType('BINARY'):
if (\is_resource($value)) {
// let's replace resources with a "simple" representation: resourceType#resourceId
Expand Down
73 changes: 73 additions & 0 deletions tests/Provider/Doctrine/Fixtures/Issue98/Issue98.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<?php

declare(strict_types=1);

namespace DH\Auditor\Tests\Provider\Doctrine\Fixtures\Issue98;

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity
* @ORM\Table(name="issue_98")
*/
#[ORM\Entity, ORM\Table(name: 'data_object')]
class Issue98
{
/**
* @ORM\Id
* @ORM\Column(type="integer", options={"unsigned": true})
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
#[ORM\Id, ORM\GeneratedValue(strategy: 'IDENTITY'), ORM\Column(type: 'integer', options: ['unsigned' => true])]
protected $id;

/**
* @ORM\Column(type="blob")
*/
#[ORM\Column(type: 'blob')]
protected $data;

/**
* Get the value of id.
*
* @return mixed
*/
public function getId(): int
{
return $this->id;
}

/**
* Set the value of id.
*
* @return DataObject
*/
public function setId(int $id): self
{
$this->id = $id;

return $this;
}

/**
* Get the value of data.
*/
public function getData()
{
return $this->data;
}

/**
* Set the value of data.
*
* @param mixed $data
*
* @return DataObject
*/
public function setData($data): self
{
$this->data = $data;

return $this;
}
}
62 changes: 62 additions & 0 deletions tests/Provider/Doctrine/Issues/Issue98Test.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?php

declare(strict_types=1);

namespace DH\Auditor\Tests\Provider\Doctrine\Issues;

use DH\Auditor\Model\Transaction;
use DH\Auditor\Provider\Doctrine\DoctrineProvider;
use DH\Auditor\Provider\Doctrine\Service\AuditingService;
use DH\Auditor\Provider\Doctrine\Service\StorageService;
use DH\Auditor\Tests\Provider\Doctrine\Fixtures\Issue98\Issue98;
use DH\Auditor\Tests\Provider\Doctrine\Traits\ReaderTrait;
use DH\Auditor\Tests\Provider\Doctrine\Traits\Schema\SchemaSetupTrait;
use PHPUnit\Framework\TestCase;

/**
* @internal
*
* @small
*/
final class Issue98Test extends TestCase
{
use ReaderTrait;
use SchemaSetupTrait;

public function testIssue98(): void
{
$reader = $this->createReader();

$em = $this->provider->getStorageServiceForEntity(Issue98::class)->getEntityManager();
$entity = new Issue98();
$entity->setData(fopen('data://text/plain,true', 'r'));
$em->persist($entity);
$em->flush();

$audits = $reader->createQuery(Issue98::class)->execute();
self::assertCount(1, $audits, 'results count ok.');
self::assertSame(Transaction::INSERT, $audits[0]->getType(), 'Reader::INSERT operation.');
}

private function createAndInitDoctrineProvider(): void
{
$auditor = $this->createAuditor();
$this->provider = new DoctrineProvider($this->createProviderConfiguration());

$entityManager = $this->createEntityManager([
__DIR__.'/../../../../src/Provider/Doctrine/Auditing/Annotation',
__DIR__.'/../Fixtures/Issue98',
]);
$this->provider->registerStorageService(new StorageService('default', $entityManager));
$this->provider->registerAuditingService(new AuditingService('default', $entityManager));

$auditor->registerProvider($this->provider);
}

private function configureEntities(): void
{
$this->provider->getConfiguration()->setEntities([
Issue98::class => ['enabled' => true],
]);
}
}

0 comments on commit 600f64f

Please sign in to comment.