From 0a86c324ad368ca5aaa68ab9714f338921a9583a Mon Sep 17 00:00:00 2001 From: Christian Hammerl Date: Sun, 27 Nov 2016 01:45:56 +0100 Subject: [PATCH] Add test case for autoincremented id of custom type --- .../ORM/Functional/Ticket/DDC5684Test.php | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 tests/Doctrine/Tests/ORM/Functional/Ticket/DDC5684Test.php diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC5684Test.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC5684Test.php new file mode 100644 index 000000000..22c3b0695 --- /dev/null +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC5684Test.php @@ -0,0 +1,111 @@ +_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; +}