function it_has_rates_that_overlap_with_rental_period() { $this->getApplicableRates()->shouldHaveCount(1); $this->equipment->addRate(null, Price::fromString('11', Currency::fromString('EUR')), 1); $this->getApplicableRates()->shouldHaveCount(2); $this->equipment->addRate(RentalPeriod::fromDateTime(new \DateTime('2014-07-05'), new \DateTime('2014-07-10')), Price::fromString('11', Currency::fromString('EUR')), 1); $this->getApplicableRates()->shouldHaveCount(3); $this->equipment->addRate(RentalPeriod::fromDateTime(new \DateTime('2014-07-08'), new \DateTime('2014-07-10')), Price::fromString('11', Currency::fromString('EUR')), 1); $this->getApplicableRates()->shouldHaveCount(3); $this->equipment->addRate(RentalPeriod::fromDateTime(new \DateTime('2014-06-08'), new \DateTime('2014-06-30')), Price::fromString('11', Currency::fromString('EUR')), 1); $this->getApplicableRates()->shouldHaveCount(3); }
private function buildEquipment() { $price = Price::fromString('12', Currency::fromString('EUR')); $baseRate = new Rate(null, $price, 1); $equipment = new Equipment('Truck', $baseRate); // first rate $rentalPeriod = RentalPeriod::fromDateTime(new \DateTime('2014-06-01'), new \DateTime('2014-06-07')); $equipment->addRate($rentalPeriod, Price::fromString('10', Currency::fromString('EUR')), 1); // second rate $rentalPeriod = RentalPeriod::fromDateTime(new \DateTime('2014-07-01'), new \DateTime('2014-07-07')); $equipment->addRate($rentalPeriod, Price::fromString('10', Currency::fromString('EUR')), 2); return $equipment; }
function it_finds_a_daily_rate_price_from_date_range_rate() { // Date Range daily rate supplied $dailyPrice = Price::fromString('10', Currency::fromString('EUR')); $equipment = new Equipment('Jack Hammer', new Rate(null, $dailyPrice, 1)); $rentalQuery = new RentalQuery($equipment, RentalPeriod::fromDateTime(new \DateTime('2014-07-01'), new \DateTime('2014-07-07'), 1)); $quotes = $this->getQuotesFor($rentalQuery); $quote = $quotes[0]; /** @var RateQuote $quote */ $quote->getLineItems()->shouldHaveCount(1); $lineItems = $quote->getLineItems(); /** @var RateQuoteLineItem $lineItem */ $lineItem = $lineItems[0]; $lineItem->getRate()->getPrice()->equals($dailyPrice); ////////// $tempPrice = Price::fromString('8', Currency::fromString('EUR')); $equipment->addRate(RentalPeriod::fromDateTime(new \DateTime('2014-07-04'), new \DateTime('2014-07-10')), $tempPrice, 1); $quotes = $this->getQuotesFor($rentalQuery); $quote = $quotes[0]; /** @var RateQuote $quote */ $quote->getLineItems()->shouldHaveCount(1); $lineItems = $quote->getLineItems(); /** @var RateQuoteLineItem $lineItem */ $lineItem = $lineItems[0]; $lineItem->getRate()->getPrice()->equals($tempPrice); }