3 namespace Doctrine\Tests\ORM\Functional;
5 use Doctrine\Tests\Models\Routing\RoutingRoute;
6 use Doctrine\Tests\Models\Routing\RoutingLocation;
7 use Doctrine\Tests\Models\Routing\RoutingLeg;
8 use Doctrine\Tests\Models\Routing\RoutingRouteBooking;
10 require_once __DIR__ . '/../../TestInit.php';
12 class OrderedCollectionTest extends \Doctrine\Tests\OrmFunctionalTestCase
14 protected $locations = array();
16 public function setUp()
18 $this->useModelSet('routing');
21 $locations = array("Berlin", "Bonn", "Brasilia", "Atlanta");
23 foreach ($locations AS $locationName) {
24 $location = new RoutingLocation();
25 $location->name = $locationName;
26 $this->_em->persist($location);
27 $this->locations[$locationName] = $location;
32 public function createPersistedRouteWithLegs()
34 $route = new RoutingRoute();
36 $leg1 = new RoutingLeg();
37 $leg1->fromLocation = $this->locations['Berlin'];
38 $leg1->toLocation = $this->locations['Bonn'];
39 $leg1->departureDate = new \DateTime("now");
40 $leg1->arrivalDate = new \DateTime("now +5 hours");
42 $leg2 = new RoutingLeg();
43 $leg2->fromLocation = $this->locations['Bonn'];
44 $leg2->toLocation = $this->locations['Brasilia'];
45 $leg2->departureDate = new \DateTime("now +6 hours");
46 $leg2->arrivalDate = new \DateTime("now +24 hours");
48 $route->legs[] = $leg2;
49 $route->legs[] = $leg1;
51 $this->_em->persist($route);
53 $routeId = $route->id;
59 public function testLazyManyToManyCollection_IsRetrievedWithOrderByClause()
61 $routeId = $this->createPersistedRouteWithLegs();
63 $route = $this->_em->find('Doctrine\Tests\Models\Routing\RoutingRoute', $routeId);
65 $this->assertEquals(2, count($route->legs));
66 $this->assertEquals("Berlin", $route->legs[0]->fromLocation->getName());
67 $this->assertEquals("Bonn", $route->legs[1]->fromLocation->getName());
70 public function testLazyOneToManyCollection_IsRetrievedWithOrderByClause()
72 $route = new RoutingRoute();
74 $this->_em->persist($route);
76 $routeId = $route->id;
78 $booking1 = new RoutingRouteBooking();
79 $booking1->passengerName = "Guilherme";
80 $booking2 = new RoutingRouteBooking();
81 $booking2->passengerName = "Benjamin";
83 $route->bookings[] = $booking1;
84 $booking1->route = $route;
85 $route->bookings[] = $booking2;
86 $booking2->route = $route;
88 $this->_em->persist($booking1);
89 $this->_em->persist($booking2);
94 $route = $this->_em->find('Doctrine\Tests\Models\Routing\RoutingRoute', $routeId);
96 $this->assertEquals(2, count($route->bookings));
97 $this->assertEquals('Benjamin', $route->bookings[0]->getPassengerName());
98 $this->assertEquals('Guilherme', $route->bookings[1]->getPassengerName());
101 public function testOrderedResultFromDqlQuery()
103 $routeId = $this->createPersistedRouteWithLegs();
105 $route = $this->_em->createQuery("SELECT r, l FROM Doctrine\Tests\Models\Routing\RoutingRoute r JOIN r.legs l WHERE r.id = ?1")
106 ->setParameter(1, $routeId)
109 $this->assertEquals(2, count($route->legs));
110 $this->assertEquals("Berlin", $route->legs[0]->fromLocation->getName());
111 $this->assertEquals("Bonn", $route->legs[1]->fromLocation->getName());