public function testDoesNotMarkAsRequiringApprovalIfUserCanApproveForResource() { $series = new TestReservationSeries(); $resource = new FakeBookableResource(1); $resource->RequiresApproval(true); $series->WithResource($resource); $series->WithBookedBy($this->fakeUser); $this->authorizationService->expects($this->once())->method('CanApproveForResource')->with($this->equalTo($this->fakeUser), $this->equalTo($resource))->will($this->returnValue(true)); $this->rule->Validate($series); $this->assertFalse($series->RequiresApproval()); }
/** * @param ReservationSeries $reservationSeries * @return ReservationRuleResult */ function Validate($reservationSeries) { $status = ReservationStatus::Created; /** @var BookableResource $resource */ foreach ($reservationSeries->AllResources() as $resource) { if ($resource->GetRequiresApproval()) { if (!$this->authorizationService->CanApproveForResource($reservationSeries->BookedBy(), $resource)) { $status = ReservationStatus::Pending; break; } } } $reservationSeries->SetStatusId($status); return new ReservationRuleResult(); }
public function testCanSeeDetailsIfCanBeReserved() { $reservationView = new ReservationView(); $ownerId = 92929; $reservationView->OwnerId = $ownerId; $resource1 = new ReservationResourceView(1, '', 1, 1, 1); $reservationView->Resources = array($resource1); $this->authorizationService->expects($this->atLeastOnce())->method('CanReserveFor')->with($this->equalTo($this->currentUser), $this->equalTo($ownerId))->will($this->returnValue(false)); $this->authorizationService->expects($this->once())->method('CanEditForResource')->with($this->equalTo($this->currentUser), $this->equalTo($resource1))->will($this->returnValue(true)); $canSeeDetails = $this->reservationAuthorization->CanViewDetails($reservationView, $this->currentUser); $this->assertTrue($canSeeDetails); }
/** * @param ReservationView $reservationView * @param UserSession $currentUser * @return bool */ private function IsAccessibleTo(ReservationView $reservationView, UserSession $currentUser) { if ($reservationView->OwnerId == $currentUser->UserId || $currentUser->IsAdmin) { return true; } else { $canReserveForUser = $this->authorizationService->CanReserveFor($currentUser, $reservationView->OwnerId); if ($canReserveForUser) { return true; } foreach ($reservationView->Resources as $resource) { if ($this->authorizationService->CanEditForResource($currentUser, $resource)) { return true; } } } return false; }