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