public function testDoesNotConflictIfBeingDeletedOrUpdated() { $now = Date::Now(); $currentDate = new DateRange($now->AddDays(10), $now->AddDays(15)); $resourceId = 18; $id1 = 100; $id2 = 101; $currentId = 99; $deleted = new TestReservation('ref2', new TestDateRange()); $deleted->SetReservationId($id1); $updated = new TestReservation('ref3', new TestDateRange()); $updated->SetReservationId($id2); $current = new TestReservation('ref', $currentDate); $current->SetReservationId($currentId); $series = new ExistingReservationSeries(); $series->WithPrimaryResource(new FakeBookableResource($resourceId)); $series->WithCurrentInstance($current); $series->WithInstance($deleted); $series->WithInstance($updated); $series->RemoveInstance($deleted); $series->UpdateInstance($updated, new DateRange($now->AddDays(20), $now->AddDays(21))); $reservations = array(new TestReservationItemView($id1, Date::Now(), Date::Now(), $resourceId), new TestReservationItemView($id2, Date::Now(), Date::Now(), $resourceId)); $this->strategy->expects($this->exactly(2))->method('GetItemsBetween')->with($this->anything(), $this->anything())->will($this->returnValue($reservations)); $rule = new ExistingResourceAvailabilityRule($this->strategy, $this->timezone); $ruleResult = $rule->Validate($series); $this->assertTrue($ruleResult->IsValid()); }