DDC656Test.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace Doctrine\Tests\ORM\Functional\Ticket;
  3. use DateTime;
  4. require_once __DIR__ . '/../../../TestInit.php';
  5. class DDC656Test extends \Doctrine\Tests\OrmFunctionalTestCase
  6. {
  7. protected function setUp()
  8. {
  9. parent::setUp();
  10. try {
  11. $this->_schemaTool->createSchema(array(
  12. $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC656Entity')
  13. ));
  14. } catch(\Exception $e) {
  15. }
  16. }
  17. public function testRecomputeSingleEntityChangeSet_PreservesFieldOrder()
  18. {
  19. $entity = new DDC656Entity();
  20. $entity->setName('test1');
  21. $entity->setType('type1');
  22. $this->_em->persist($entity);
  23. $this->_em->getUnitOfWork()->computeChangeSet($this->_em->getClassMetadata(get_class($entity)), $entity);
  24. $data1 = $this->_em->getUnitOfWork()->getEntityChangeset($entity);
  25. $entity->setType('type2');
  26. $this->_em->getUnitOfWork()->recomputeSingleEntityChangeSet($this->_em->getClassMetadata(get_class($entity)), $entity);
  27. $data2 = $this->_em->getUnitOfWork()->getEntityChangeset($entity);
  28. $this->assertEquals(array_keys($data1), array_keys($data2));
  29. $this->_em->flush();
  30. $this->_em->clear();
  31. $persistedEntity = $this->_em->find(get_class($entity), $entity->specificationId);
  32. $this->assertEquals('type2', $persistedEntity->getType());
  33. $this->assertEquals('test1', $persistedEntity->getName());
  34. }
  35. }
  36. /**
  37. * @Entity
  38. */
  39. class DDC656Entity
  40. {
  41. /**
  42. * @Column(type="string")
  43. */
  44. public $name;
  45. /**
  46. * @Column(type="string")
  47. */
  48. public $type;
  49. /**
  50. * @Id @Column(type="integer") @GeneratedValue
  51. */
  52. public $specificationId;
  53. public function getName() {
  54. return $this->name;
  55. }
  56. public function setName($name) {
  57. $this->name = $name;
  58. }
  59. public function getType() {
  60. return $this->type;
  61. }
  62. public function setType($type) {
  63. $this->type = $type;
  64. }
  65. }