public function testHandlingReservationCreationDelegatesToServicesForValidationAndPersistenceAndNotification()
 {
     $builder = new ExistingReservationSeriesBuilder();
     $series = $builder->Build();
     $instance = new Reservation($series, NullDateRange::Instance());
     $series->WithCurrentInstance($instance);
     $this->handler->expects($this->once())->method('Handle')->with($this->equalTo($series), $this->equalTo($this->page))->will($this->returnValue(true));
     $this->presenter->HandleReservation($series);
 }
 public function testLoadAndApprovesReservationSendingNotifications()
 {
     $referenceNumber = 'rn';
     $builder = new ExistingReservationSeriesBuilder();
     $reservation = $builder->Build();
     $this->page->expects($this->once())->method('GetReferenceNumber')->will($this->returnValue($referenceNumber));
     $this->persistence->expects($this->once())->method('LoadByReferenceNumber')->with($this->equalTo($referenceNumber))->will($this->returnValue($reservation));
     $this->handler->expects($this->once())->method('Handle')->with($this->equalTo($reservation), $this->equalTo($this->page))->will($this->returnValue(true));
     $this->auth->expects($this->once())->method('CanApprove')->with($this->equalTo(new ReservationViewAdapter($reservation)), $this->equalTo($this->fakeUser))->will($this->returnValue(true));
     $this->presenter->PageLoad();
     $this->assertTrue(in_array(new SeriesApprovedEvent($reservation), $reservation->GetEvents()));
 }
 public function testDeletesReservation()
 {
     $id = 123;
     $reservationView = new TestReservationItemView($id, Date::Now(), Date::Now());
     $repo = $this->getMock('IReservationRepository');
     $handler = new ReservationConflictDelete($repo);
     $builder = new ExistingReservationSeriesBuilder();
     $builder->WithId($id);
     $reservation = $builder->Build();
     $repo->expects($this->once())->method('LoadById')->with($this->equalTo($id))->will($this->returnValue($reservation));
     $repo->expects($this->once())->method('Delete')->with($this->equalTo($reservation));
     $handled = $handler->Handle($reservationView);
     $this->assertTrue($handled);
     $this->assertEquals(SeriesUpdateScope::ThisInstance, $reservation->SeriesUpdateScope());
 }
 public function testPreventsPersistenceAndNotificationAndShowsFailedMessageWhenValidationFails()
 {
     $persistenceService = $this->getMock('IReservationPersistenceService');
     $validationService = $this->getMock('IReservationValidationService');
     $notificationService = $this->getMock('IReservationNotificationService');
     $page = $this->getMock('IReservationSaveResultsView');
     $errorMessage1 = 'e1';
     $errorMessage2 = 'e2';
     $errors = array($errorMessage1, $errorMessage2);
     $builder = new ExistingReservationSeriesBuilder();
     $series = $builder->Build();
     $validationResult = new ReservationValidationResult(false, $errors);
     $validationService->expects($this->once())->method('Validate')->with($this->equalTo($series))->will($this->returnValue($validationResult));
     $persistenceService->expects($this->never())->method('Persist');
     $notificationService->expects($this->never())->method('Notify');
     $page->expects($this->once())->method('SetSaveSuccessfulMessage')->with($this->equalTo(false));
     $page->expects($this->once())->method('SetErrors')->with($this->equalTo($errors));
     $handler = new ReservationHandler($persistenceService, $validationService, $notificationService);
     $handler->Handle($series, $page);
 }
 public function testHandlingReservationCreationDelegatesToServicesForValidationAndPersistenceAndNotification()
 {
     $builder = new ExistingReservationSeriesBuilder();
     $series = $builder->Build();
     $series->SetStatusId(ReservationStatus::Pending);
     $instance = new Reservation($series, NullDateRange::Instance());
     $series->WithCurrentInstance($instance);
     $this->handler->expects($this->once())->method('Handle')->with($this->equalTo($series), $this->isInstanceOf('FakeReservationUpdatePage'))->will($this->returnValue(true));
     $this->presenter->HandleReservation($series);
     $this->assertEquals($instance->ReferenceNumber(), $this->page->referenceNumber);
     $this->assertEquals($series->RequiresApproval(), $this->page->requiresApproval);
 }
Exemple #6
0
Booked Scheduler is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Booked Scheduler.  If not, see <http://www.gnu.org/licenses/>.
*/
define('ROOT_DIR', dirname(__FILE__) . '/../');
require_once ROOT_DIR . "lib/Email/namespace.php";
require_once ROOT_DIR . "lib/Email/Messages/ReservationCreatedEmail.php";
require_once ROOT_DIR . "lib/Email/Messages/ReservationUpdatedEmail.php";
require_once ROOT_DIR . "Domain/namespace.php";
require_once ROOT_DIR . "tests/fakes/namespace.php";
$start = Date::Parse('2010-10-05 03:30:00', 'UTC');
$end = Date::Parse('2010-10-06 13:30:00', 'UTC');
$resourceRepo = new ResourceRepository();
$resources = $resourceRepo->GetResourceList();
$builder = new ExistingReservationSeriesBuilder();
$builder->WithPrimaryResource($resources[1]);
$reservation = $builder->Build();
//$reservation->WithCurrentInstance(new TestReservation("ref", new TestDateRange()));
//$reservation->Update(1, new FakeBookableResource(1, 'name'), 'crazy title', 'super description', new FakeUserSession());
//$reservation->UpdateDuration(new DateRange($start, $end));
$reservation->Repeats(new RepeatDayOfMonth(1, $end->AddDays(100), new DateRange($start, $end)));
$user = new FakeUser();
//$user->SetLanguage('en_gb');
$email = new ReservationUpdatedEmail($user, $reservation, 'en_us', new AttributeRepository());
echo $email->Body();
//$emailService = new EmailService();
//$emailService->Send($email);
 public function testRemovesReminders()
 {
     $seriesId = 99;
     $builder = new ExistingReservationSeriesBuilder();
     $series = $builder->WithId($seriesId)->Build();
     $series->WithStartReminder(new ReservationReminder(100, ReservationReminderInterval::Days));
     $series->WithEndReminder(new ReservationReminder(15, ReservationReminderInterval::Minutes));
     $series->RemoveStartReminder();
     $series->RemoveEndReminder();
     $this->repository->Update($series);
     $command1 = new RemoveReservationReminderCommand($seriesId, ReservationReminderType::Start);
     $command2 = new RemoveReservationReminderCommand($seriesId, ReservationReminderType::End);
     $this->assertTrue($this->db->ContainsCommand($command1));
     $this->assertTrue($this->db->ContainsCommand($command2));
 }
 public function testWhenReservationStartConstraintIsViolated()
 {
     $this->fakeConfig->SetSectionKey(ConfigSection::RESERVATION, ConfigKeys::RESERVATION_START_TIME_CONSTRAINT, ReservationStartTimeConstraint::FUTURE);
     $referenceNumber = 'abc';
     $currentUserId = 1029;
     $builder = new ExistingReservationSeriesBuilder();
     $instance = new TestReservation($referenceNumber, new DateRange(Date::Now()->AddMinutes(-1), Date::Now()->AddMinutes(30)), null);
     $builder->WithCurrentInstance($instance);
     $series = $builder->Build();
     $this->page->expects($this->once())->method('GetResponseType')->will($this->returnValue('json'));
     $this->page->expects($this->once())->method('GetInvitationAction')->will($this->returnValue(InvitationAction::Join));
     $this->page->expects($this->once())->method('GetInvitationReferenceNumber')->will($this->returnValue($referenceNumber));
     $this->page->expects($this->once())->method('GetUserId')->will($this->returnValue($currentUserId));
     $this->reservationRepo->expects($this->once())->method('LoadByReferenceNumber')->with($this->equalTo($referenceNumber))->will($this->returnValue($series));
     $this->page->expects($this->once())->method('DisplayResult')->with($this->stringContains('ParticipationNotAllowed'));
     $this->presenter->PageLoad();
 }
 public function testWhenDeletingAnInstanceItDoesNotCount()
 {
     $ref1 = 'ref1';
     $ref2 = 'ref2';
     $ref3 = 'ref3';
     $duration = new QuotaDurationDay();
     $limit = new QuotaLimitCount(1);
     $quota = new Quota(1, $duration, $limit);
     $r1start = Date::Parse('2011-04-03 1:30', $this->tz);
     $r1End = Date::Parse('2011-04-03 2:30', $this->tz);
     $r2start = Date::Parse('2011-04-04 1:30', $this->tz);
     $r2End = Date::Parse('2011-04-04 2:30', $this->tz);
     $existing1 = new TestReservation($ref1, new DateRange($r1start, $r1End), 1);
     $deleted = new TestReservation($ref2, new DateRange($r2start, $r2End), 2);
     $new = new TestReservation($ref3, new DateRange($r2start, $r2End), 3);
     $builder = new ExistingReservationSeriesBuilder();
     $builder->WithCurrentInstance($existing1)->WithInstance($deleted)->WithInstance($new);
     $series = $builder->BuildTestVersion();
     $series->RemoveInstance($deleted);
     $res1 = new ReservationItemView($ref1, $r1start, $r1End, '', $series->ResourceId(), $existing1->ReservationId());
     $res2 = new ReservationItemView($ref2, $r1start, $r1End, '', $series->ResourceId(), $deleted->ReservationId());
     $res3 = new ReservationItemView($ref3, $r2start, $r2End, '', $series->ResourceId(), $new->ReservationId());
     $reservations = array($res1, $res2, $res3);
     $this->SearchReturns($reservations);
     $exceeds = $quota->ExceedsQuota($series, $this->user, $this->schedule, $this->reservationViewRepository);
     $this->assertFalse($exceeds);
 }
 public function testShowsErrorFileDoesNotBelongToReservation()
 {
     $fileId = 110;
     $resourceId = 1909;
     $referenceNumber = 'rn';
     $seriesId = 1;
     $fileSeriesId = 2;
     $builder = new ExistingReservationSeriesBuilder();
     $builder->WithId($seriesId);
     $builder->WithPrimaryResource(new FakeBookableResource($resourceId));
     $reservationSeries = $builder->Build();
     $reservationAttachment = new FakeReservationAttachment($fileId);
     $reservationAttachment->SetSeriesId($fileSeriesId);
     $this->page->expects($this->once())->method('GetFileId')->will($this->returnValue($fileId));
     $this->page->expects($this->once())->method('GetReferenceNumber')->will($this->returnValue($referenceNumber));
     $this->reservationRepository->expects($this->once())->method('LoadReservationAttachment')->with($this->equalTo($fileId))->will($this->returnValue($reservationAttachment));
     $this->reservationRepository->expects($this->once())->method('LoadByReferenceNumber')->with($this->equalTo($referenceNumber))->will($this->returnValue($reservationSeries));
     $this->page->expects($this->once())->method('ShowError');
     $this->presenter->PageLoad($this->fakeUser);
 }
 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 testRemovesReminders()
 {
     $start = new ReservationReminder(1, ReservationReminderInterval::Minutes);
     $end = new ReservationReminder(1, ReservationReminderInterval::Days);
     $builder = new ExistingReservationSeriesBuilder();
     $series = $builder->Build();
     $series->WithStartReminder($start);
     $series->WithEndReminder($end);
     $series->RemoveStartReminder();
     $series->RemoveEndReminder();
     $events = $series->GetEvents();
     $this->assertTrue(in_array(new ReminderRemovedEvent($series, ReservationReminderType::Start), $events));
     $this->assertTrue(in_array(new ReminderRemovedEvent($series, ReservationReminderType::End), $events));
 }