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()); }