public function testBranchedSingleInstance() { $seriesId = 10909; $userId = 10; $resourceId = 11; $title = "new title"; $description = "new description"; $expectedRepeat = new RepeatNone(); $referenceNumber = 'ref number current'; $allowParticipation = true; $currentReservation = new TestReservation($referenceNumber, new TestDateRange()); $builder = new ExistingReservationSeriesBuilder(); $builder->WithRequiresNewSeries(true); $builder->WithRepeatOptions($expectedRepeat); $builder->WithCurrentInstance($currentReservation); $existingReservation = $builder->BuildTestVersion(); $existingReservation->Update($userId, new FakeBookableResource($resourceId), $title, $description, new FakeUserSession()); $existingReservation->AllowParticipation($allowParticipation); $this->db->_ExpectedInsertId = $seriesId; $this->repository->Update($existingReservation); $addNewSeriesCommand = new AddReservationSeriesCommand(Date::Now(), $title, $description, $expectedRepeat->RepeatType(), $expectedRepeat->ConfigurationString(), ReservationTypes::Reservation, ReservationStatus::Created, $userId, $allowParticipation); $updateReservationCommand = $this->GetUpdateReservationCommand($seriesId, $currentReservation); $this->assertTrue(in_array($addNewSeriesCommand, $this->db->_Commands)); $this->assertTrue(in_array($updateReservationCommand, $this->db->_Commands)); }
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)); }