public function testChangingTimeForFullSeriesUpdatesAllInstanceTimes() { $repeatOptions = new RepeatDaily(1, Date::Now()); $dateRange = DateRange::Create('2015-01-01 08:30', '2015-01-01 09:30', 'UTC'); $instance1Date = $dateRange->AddDays(5); $instance2Date = $dateRange->AddDays(8); $instance1 = new TestReservation('123', $instance1Date, 100); $builder = new ExistingReservationSeriesBuilder(); $builder->WithBookedBy(new FakeUserSession(true)); $builder->WithRepeatOptions($repeatOptions); $builder->WithInstance($instance1); $builder->WithInstance(new TestReservation('223', $instance2Date, 101)); $builder->WithCurrentInstance(new TestReservation('1', $dateRange, 102)); $series = $builder->Build(); $series->ApplyChangesTo(SeriesUpdateScope::FullSeries); $newDuration = DateRange::Create('2015-01-01 09:30:00', '2015-01-02 00:00:00', 'UTC'); $series->UpdateDuration($newDuration); $this->assertEquals($newDuration, $series->CurrentInstance()->Duration()); $newInstance1Start = Date::Parse('2015-01-06 09:30:00', 'UTC'); $newInstance1End = Date::Parse('2015-01-07 00:00:00', 'UTC'); $newInstance2Start = Date::Parse('2015-01-09 09:30:00', 'UTC'); $newInstance2End = Date::Parse('2015-01-10 00:00:00', 'UTC'); // $this->assertEquals(new DateRange($newInstance1Start, $newInstance1End), $series->GetInstance($newInstance1Start)->Duration()); // $this->assertEquals(new DateRange($newInstance2Start, $newInstance2End), $series->GetInstance($newInstance2Start)->Duration()); $events = $series->GetEvents(); $this->assertTrue(in_array(new InstanceUpdatedEvent($instance1, $series), $events)); }