ScalarHydratorTest.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace Doctrine\Tests\ORM\Hydration;
  3. use Doctrine\Tests\Mocks\HydratorMockStatement;
  4. use Doctrine\ORM\Query\ResultSetMapping;
  5. require_once __DIR__ . '/../../TestInit.php';
  6. class ScalarHydratorTest extends HydrationTestCase
  7. {
  8. /**
  9. * Select u.id, u.name from CmsUser u
  10. */
  11. public function testNewHydrationSimpleEntityQuery()
  12. {
  13. $rsm = new ResultSetMapping;
  14. $rsm->addEntityResult('Doctrine\Tests\Models\CMS\CmsUser', 'u');
  15. $rsm->addFieldResult('u', 'u__id', 'id');
  16. $rsm->addFieldResult('u', 'u__name', 'name');
  17. // Faked result set
  18. $resultSet = array(
  19. array(
  20. 'u__id' => '1',
  21. 'u__name' => 'romanb'
  22. ),
  23. array(
  24. 'u__id' => '2',
  25. 'u__name' => 'jwage'
  26. )
  27. );
  28. $stmt = new HydratorMockStatement($resultSet);
  29. $hydrator = new \Doctrine\ORM\Internal\Hydration\ScalarHydrator($this->_em);
  30. $result = $hydrator->hydrateAll($stmt, $rsm);
  31. $this->assertTrue(is_array($result));
  32. $this->assertEquals(2, count($result));
  33. $this->assertEquals('romanb', $result[0]['u_name']);
  34. $this->assertEquals(1, $result[0]['u_id']);
  35. $this->assertEquals('jwage', $result[1]['u_name']);
  36. $this->assertEquals(2, $result[1]['u_id']);
  37. }
  38. /**
  39. * @group DDC-407
  40. */
  41. public function testHydrateScalarResults()
  42. {
  43. $rsm = new ResultSetMapping();
  44. $rsm->addScalarResult('foo1', 'foo');
  45. $rsm->addScalarResult('bar2', 'bar');
  46. $rsm->addScalarResult('baz3', 'baz');
  47. $resultSet = array(
  48. array(
  49. 'foo1' => 'A',
  50. 'bar2' => 'B',
  51. 'baz3' => 'C',
  52. ),
  53. );
  54. $stmt = new HydratorMockStatement($resultSet);
  55. $hydrator = new \Doctrine\ORM\Internal\Hydration\ScalarHydrator($this->_em);
  56. $result = $hydrator->hydrateAll($stmt, $rsm);
  57. }
  58. /**
  59. * @group DDC-644
  60. */
  61. public function testSkipUnknownColumns()
  62. {
  63. $rsm = new ResultSetMapping;
  64. $rsm->addEntityResult('Doctrine\Tests\Models\CMS\CmsUser', 'u');
  65. $rsm->addFieldResult('u', 'u__id', 'id');
  66. $rsm->addFieldResult('u', 'u__name', 'name');
  67. $rsm->addScalarResult('foo1', 'foo');
  68. $rsm->addScalarResult('bar2', 'bar');
  69. $rsm->addScalarResult('baz3', 'baz');
  70. $resultSet = array(
  71. array(
  72. 'u__id' => '1',
  73. 'u__name' => 'romanb',
  74. 'foo1' => 'A',
  75. 'bar2' => 'B',
  76. 'baz3' => 'C',
  77. 'foo' => 'bar', // Unknown!
  78. ),
  79. );
  80. $stmt = new HydratorMockStatement($resultSet);
  81. $hydrator = new \Doctrine\ORM\Internal\Hydration\ScalarHydrator($this->_em);
  82. $result = $hydrator->hydrateAll($stmt, $rsm);
  83. }
  84. }