Add test case for autoincremented id of custom type
This commit is contained in:
parent
52badf1cdd
commit
0a86c324ad
111
tests/Doctrine/Tests/ORM/Functional/Ticket/DDC5684Test.php
Normal file
111
tests/Doctrine/Tests/ORM/Functional/Ticket/DDC5684Test.php
Normal file
@ -0,0 +1,111 @@
|
||||
<?php
|
||||
|
||||
namespace Doctrine\Tests\ORM\Functional\Ticket;
|
||||
|
||||
use Doctrine\DBAL\Platforms\AbstractPlatform;
|
||||
use Doctrine\DBAL\Types as DBALTypes;
|
||||
|
||||
class DDC5684Test extends \Doctrine\Tests\OrmFunctionalTestCase
|
||||
{
|
||||
protected function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
if (DBALTypes\Type::hasType(DDC5684ObjectIdType::NAME)) {
|
||||
DBALTypes\Type::overrideType(DDC5684ObjectIdType::NAME, DDC5684ObjectIdType::CLASSNAME);
|
||||
} else {
|
||||
DBALTypes\Type::addType(DDC5684ObjectIdType::NAME, DDC5684ObjectIdType::CLASSNAME);
|
||||
}
|
||||
|
||||
$this->_schemaTool->createSchema([$this->_em->getClassMetadata(DDC5684Object::CLASSNAME)]);
|
||||
}
|
||||
|
||||
protected function tearDown()
|
||||
{
|
||||
$this->_schemaTool->dropSchema([$this->_em->getClassMetadata(DDC5684Object::CLASSNAME)]);
|
||||
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testAutoIncrementIdWithCustomType()
|
||||
{
|
||||
$object = new DDC5684Object();
|
||||
$this->_em->persist($object);
|
||||
$this->_em->flush();
|
||||
|
||||
$this->assertInstanceOf(DDC5684ObjectId::CLASSNAME, $object->id);
|
||||
}
|
||||
|
||||
public function testFetchObjectWithAutoIncrementedCustomType()
|
||||
{
|
||||
$object = new DDC5684Object();
|
||||
$this->_em->persist($object);
|
||||
$this->_em->flush();
|
||||
$this->_em->clear();
|
||||
|
||||
$rawId = $object->id->value;
|
||||
$object = $this->_em->find(DDC5684Object::CLASSNAME, new DDC5684ObjectId($rawId));
|
||||
|
||||
$this->assertInstanceOf(DDC5684ObjectId::CLASSNAME, $object->id);
|
||||
$this->assertEquals($rawId, $object->id->value);
|
||||
}
|
||||
}
|
||||
|
||||
class DDC5684ObjectIdType extends DBALTypes\IntegerType
|
||||
{
|
||||
const NAME = 'ticket_5684_object_id';
|
||||
const CLASSNAME = __CLASS__;
|
||||
|
||||
public function convertToPHPValue($value, AbstractPlatform $platform)
|
||||
{
|
||||
return new DDC5684ObjectId($value);
|
||||
}
|
||||
|
||||
public function convertToDatabaseValue($value, AbstractPlatform $platform)
|
||||
{
|
||||
return $value->value;
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return self::NAME;
|
||||
}
|
||||
|
||||
public function requiresSQLCommentHint(AbstractPlatform $platform)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
class DDC5684ObjectId
|
||||
{
|
||||
const CLASSNAME = __CLASS__;
|
||||
|
||||
public $value;
|
||||
|
||||
public function __construct($value)
|
||||
{
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
public function __toString()
|
||||
{
|
||||
return (string) $this->value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Entity
|
||||
* @Table(name="ticket_5684_objects")
|
||||
*/
|
||||
class DDC5684Object
|
||||
{
|
||||
const CLASSNAME = __CLASS__;
|
||||
|
||||
/**
|
||||
* @Id
|
||||
* @Column(type="ticket_5684_object_id")
|
||||
* @GeneratedValue(strategy="AUTO")
|
||||
*/
|
||||
public $id;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user