1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
<?php
declare(strict_types=1);
namespace Doctrine\Tests\ORM\Persisters;
use Doctrine\Common\Collections\Criteria;
use Doctrine\ORM\Persisters\Entity\BasicEntityPersister;
use Doctrine\Tests\Mocks\EntityManagerMock;
use Doctrine\Tests\Models\GeoNames\Admin1;
use Doctrine\Tests\Models\GeoNames\Admin1AlternateName;
use Doctrine\Tests\Models\GeoNames\Country;
use Doctrine\Tests\OrmTestCase;
use PHPUnit\Framework\Attributes\RequiresPhpunit;
#[RequiresPhpunit('< 12')]
class BasicEntityPersisterCompositeTypeParametersTest extends OrmTestCase
{
protected BasicEntityPersister $persister;
protected EntityManagerMock $entityManager;
protected function setUp(): void
{
parent::setUp();
$this->entityManager = $this->getTestEntityManager();
$this->entityManager->getClassMetadata(Country::class);
$this->entityManager->getClassMetadata(Admin1::class);
$this->entityManager->getClassMetadata(Admin1AlternateName::class);
$this->persister = new BasicEntityPersister($this->entityManager, $this->entityManager->getClassMetadata(Admin1AlternateName::class));
}
public function testExpandParametersWillExpandCompositeEntityKeys(): void
{
$country = new Country('IT', 'Italy');
$admin1 = new Admin1(10, 'Rome', $country);
[$values, $types] = $this->persister->expandParameters(['admin1' => $admin1]);
self::assertEquals(['integer', 'string'], $types);
self::assertEquals([10, 'IT'], $values);
}
public function testExpandCriteriaParametersWillExpandCompositeEntityKeys(): void
{
$country = new Country('IT', 'Italy');
$admin1 = new Admin1(10, 'Rome', $country);
$criteria = Criteria::create();
$criteria->andWhere(Criteria::expr()->eq('admin1', $admin1));
[$values, $types] = $this->persister->expandCriteriaParameters($criteria);
self::assertEquals(['integer', 'string'], $types);
self::assertEquals([10, 'IT'], $values);
}
}
|