public function testDeletesWholeSeriesWhenAdminRegardlessOfDate()
 {
     $r1 = new TestReservation();
     $r1->SetReservationDate(TestDateRange::CreateWithDays(-1));
     $r2 = new TestReservation();
     $r2->SetReservationDate(TestDateRange::CreateWithDays(-2));
     $builder = new ExistingReservationSeriesBuilder();
     $builder->WithCurrentInstance($r1);
     $builder->WithInstance($r2);
     $series = $builder->Build();
     $series->ApplyChangesTo(SeriesUpdateScope::FullSeries);
     $series->Delete($this->admin);
     $events = $series->GetEvents();
     $this->assertEquals(1, count($events));
     $this->assertTrue(in_array(new SeriesDeletedEvent($series), $events));
 }
 public function testChangesOwner()
 {
     $currentOwner = 1111;
     $newOwner = 2222;
     $instanceId1 = 100;
     $reservation1 = new TestReservation(null, null, $instanceId1);
     $instanceId2 = 101;
     $reservation2 = new TestReservation(null, null, $instanceId2);
     $builder = new ExistingReservationSeriesBuilder();
     $builder->WithInstance($reservation1);
     $builder->WithInstance($reservation2);
     $series = $builder->Build();
     $series->WithOwner($currentOwner);
     $series->Update($newOwner, $series->Resource(), '', '', $this->fakeUser);
     $this->repository->Update($series);
     $this->assertTrue($this->db->ContainsCommand($this->GetRemoveUserCommand($instanceId1, $currentOwner)));
     $this->assertTrue($this->db->ContainsCommand($this->GetRemoveUserCommand($instanceId1, $newOwner)));
     $this->assertTrue($this->db->ContainsCommand($this->GetAddUserCommand($instanceId1, $newOwner, ReservationUserLevel::OWNER)));
     $this->assertTrue($this->db->ContainsCommand($this->GetRemoveUserCommand($instanceId2, $currentOwner)));
     $this->assertTrue($this->db->ContainsCommand($this->GetRemoveUserCommand($instanceId2, $newOwner)));
     $this->assertTrue($this->db->ContainsCommand($this->GetAddUserCommand($instanceId2, $newOwner, ReservationUserLevel::OWNER)));
 }
 public function testRemovesParticipationFromAllInstances()
 {
     $userId = 1;
     $r1 = new TestReservation();
     $r1->WithParticipant($userId);
     $r1->SetReservationId(100);
     $r2 = new TestReservation();
     $r2->WithParticipant($userId);
     $r2->SetReservationId(101);
     $r3 = new TestReservation();
     $r3->WithParticipant(89);
     $r3->SetReservationId(102);
     $builder = new ExistingReservationSeriesBuilder();
     $builder->WithInstance($r1);
     $builder->WithInstance($r2);
     $builder->WithInstance($r3);
     $series = $builder->Build();
     $series->CancelAllParticipation($userId);
     $events = $series->GetEvents();
     $this->assertContains($userId, $r1->RemovedParticipants());
     $this->assertContains($userId, $r2->RemovedParticipants());
     $this->assertEmpty($r3->RemovedInvitees());
     $this->assertTrue(in_array(new InstanceUpdatedEvent($r1, $series), $events));
     $this->assertTrue(in_array(new InstanceUpdatedEvent($r2, $series), $events));
     $this->assertFalse(in_array(new InstanceUpdatedEvent($r3, $series), $events));
 }