public function testRuleIsValidIfTotalQuantityReservedIsLessThanQuantityAvailable()
 {
     $accessory1 = new ReservationAccessory(1, 5);
     $accessory2 = new ReservationAccessory(2, 5);
     $quantityAvailable = 8;
     $startDate = Date::Parse('2010-04-04', 'UTC');
     $endDate = Date::Parse('2010-04-05', 'UTC');
     $startDate1 = Date::Parse('2010-04-06', 'UTC');
     $endDate1 = Date::Parse('2010-04-07', 'UTC');
     $reservation = new TestReservationSeries();
     $reservation->WithAccessory($accessory1);
     $reservation->WithAccessory($accessory2);
     $dr1 = new DateRange($startDate, $endDate);
     $dr2 = new DateRange($startDate1, $endDate1);
     $reservation->WithDuration($dr1);
     $reservation->WithInstanceOn($dr2);
     $accessoryReservation = new AccessoryReservation(2, $startDate, $endDate, $accessory1->AccessoryId, 3);
     $accessoryReservationForOtherResource = new AccessoryReservation(2, $startDate, $endDate, $accessory1->AccessoryId, 3);
     $this->accessoryRepository->expects($this->at(0))->method('LoadById')->with($accessory1->AccessoryId)->will($this->returnValue(new Accessory($accessory1->AccessoryId, 'name1', $quantityAvailable)));
     $this->accessoryRepository->expects($this->at(1))->method('LoadById')->with($accessory2->AccessoryId)->will($this->returnValue(new Accessory($accessory2->AccessoryId, 'name1', $quantityAvailable)));
     $this->reservationRepository->expects($this->at(0))->method('GetAccessoriesWithin')->with($this->equalTo($dr1))->will($this->returnValue(array($accessoryReservation, $accessoryReservationForOtherResource)));
     $this->reservationRepository->expects($this->at(1))->method('GetAccessoriesWithin')->with($this->equalTo($dr2))->will($this->returnValue(array()));
     $result = $this->rule->Validate($reservation);
     $this->assertTrue($result->IsValid());
 }