PaginationTest.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace Doctrine\Tests\ORM\Functional;
  3. use Doctrine\ORM\Tools\SchemaTool;
  4. use Doctrine\ORM\Query;
  5. use Doctrine\Tests\Models\CMS\CmsUser;
  6. use Doctrine\Tests\Models\CMS\CmsPhonenumber;
  7. use Doctrine\Tests\Models\CMS\CmsAddress;
  8. use Doctrine\Tests\Models\CMS\CmsGroup;
  9. use Doctrine\Tests\Models\CMS\CmsArticle;
  10. use Doctrine\Tests\Models\CMS\CmsComment;
  11. use Doctrine\ORM\Tools\Pagination\Paginator;
  12. /**
  13. * @group DDC-1613
  14. */
  15. class PaginationTest extends \Doctrine\Tests\OrmFunctionalTestCase
  16. {
  17. protected function setUp()
  18. {
  19. $this->useModelSet('cms');
  20. parent::setUp();
  21. $this->populate();
  22. }
  23. public function testCountSimpleWithoutJoin()
  24. {
  25. $dql = "SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u";
  26. $query = $this->_em->createQuery($dql);
  27. $paginator = new Paginator($query);
  28. $this->assertEquals(3, count($paginator));
  29. }
  30. public function testCountWithFetchJoin()
  31. {
  32. $dql = "SELECT u,g FROM Doctrine\Tests\Models\CMS\CmsUser u JOIN u.groups g";
  33. $query = $this->_em->createQuery($dql);
  34. $paginator = new Paginator($query);
  35. $this->assertEquals(3, count($paginator));
  36. }
  37. public function testIterateSimpleWithoutJoinFetchJoinHandlingOff()
  38. {
  39. $dql = "SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u";
  40. $query = $this->_em->createQuery($dql);
  41. $paginator = new Paginator($query, false);
  42. $data = array();
  43. foreach ($paginator as $user) {
  44. $data[] = $user;
  45. }
  46. $this->assertEquals(3, count($data));
  47. }
  48. public function testIterateSimpleWithoutJoinFetchJoinHandlingOn()
  49. {
  50. $dql = "SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u";
  51. $query = $this->_em->createQuery($dql);
  52. $paginator = new Paginator($query, true);
  53. $data = array();
  54. foreach ($paginator as $user) {
  55. $data[] = $user;
  56. }
  57. $this->assertEquals(3, count($data));
  58. }
  59. public function testIterateWithFetchJoin()
  60. {
  61. $dql = "SELECT u,g FROM Doctrine\Tests\Models\CMS\CmsUser u JOIN u.groups g";
  62. $query = $this->_em->createQuery($dql);
  63. $paginator = new Paginator($query, true);
  64. $data = array();
  65. foreach ($paginator as $user) {
  66. $data[] = $user;
  67. }
  68. $this->assertEquals(3, count($data));
  69. }
  70. public function populate()
  71. {
  72. for ($i = 0; $i < 3; $i++) {
  73. $user = new CmsUser();
  74. $user->name = "Name$i";
  75. $user->username = "username$i";
  76. $user->status = "active";
  77. $this->_em->persist($user);
  78. for ($j = 0; $j < 3; $j++) {;
  79. $group = new CmsGroup();
  80. $group->name = "group$j";
  81. $user->addGroup($group);
  82. $this->_em->persist($group);
  83. }
  84. }
  85. $this->_em->flush();
  86. }
  87. }