public function testCreatingReservation() { $this->generateReservables(); $reservable = $this->generatedReservables[0]; $reservationData = ['post_type' => 'reservation', 'post_title' => 'Test reservation', 'post_status' => 'reservation_pending']; $reservationMeta = ['start_date' => '2016-01-07', 'end_date' => '2016-01-08', 'reserver_email' => '*****@*****.**']; $reservation = Reservation::create($reservationData, $reservationMeta, $reservable); $this->assertInstanceOf(Reservation::class, $reservation); $reservation->accept(); $this->assertTrue($reservation->isAccepted()); }
protected function generateReservations() { if (empty($this->generatedReservables)) { $this->generateReservables(); } $resData = [['post' => ['post_title' => 'Test reservation'], 'meta' => ['start_date' => '2016-01-07', 'end_date' => '2016-01-10', 'reserver_email' => '*****@*****.**', 'user_id' => 1], 'reservable' => $this->generatedReservables[0]], ['post' => ['post_title' => 'Test reservation 2'], 'meta' => ['start_date' => '2016-02-10', 'end_date' => '2016-02-15', 'reserver_email' => '*****@*****.**', 'user_id' => 1], 'reservable' => $this->generatedReservables[array_rand($this->generatedReservables)]]]; foreach ($resData as $reservationData) { $reservation = Reservation::create($reservationData['post'], $reservationData['meta'], $reservationData['reservable']); $this->generatedReservations[] = $reservation; } }
/** * Create a new reservation from the form. * * @access protected * @since 0.1.0 * @todo Pickle this up to smaller methods and pass some control over to the * reservation object class. * * @param mixed[] $data Data for reservation. * * @return void */ protected function createReservation($data) { $reservable = $this->reservable; $reservation_meta_data = ['reservable_id' => $reservable->ID, 'reserver_email' => $data['wprsrv-reserver-email'], 'reserver_name' => $data['wprsrv-reserver-name']]; if ($reservable->isSingleDay()) { $reservation_meta_data['start_date'] = $data['wprsrv-reservation-date']; $reservation_meta_data['end_date'] = $data['wprsrv-reservation-date']; $reservation_meta_data['reservation_date'] = $data['wprsrv-reservation-date']; } else { $reservation_meta_data['start_date'] = $data['wprsrv-reservation-date-start']; $reservation_meta_data['end_date'] = $data['wprsrv-reservation-date-end']; } if ($reservable->isSingleDay()) { $reservationTitle = [$reservable->post_title, ': ', $reservation_meta_data['start_date'], ', by ', $reservation_meta_data['reserver_email']]; } else { $reservationTitle = [$reservable->post_title, ': ', $reservation_meta_data['start_date'], ' to ', $reservation_meta_data['end_date'], ', by ', $reservation_meta_data['reserver_email']]; } $reservationTitle = implode('', $reservationTitle); $reservation_post_data = ['post_type' => 'reservation', 'post_title' => $reservationTitle, 'post_status' => 'reservation_pending', 'post_content' => $data['wprsrv-reservation-description']]; try { $reservation = Reservation::create($reservation_post_data, $reservation_meta_data, $reservable); } catch (\InvalidArgumentException $iae) { $_POST['reservation_notice'] = _x('The data you gave looked invalid, please check your fields and try again.', 'reservation form error', 'wprsrv'); return; } catch (\Exception $e) { \Wprsrv\wprsrv()->logger->critical('Could not create new reservation: {msg}', ['msg' => print_r($e, true)]); $_POST['reservation_notice'] = _x('Sorry, something went wrong in the reservation system, please try again.', 'reservation form error', 'wprsrv'); return; } if ($reservation instanceof Reservation) { $this->reservation = $reservation; } else { return; } $_POST['reservation_success'] = _x('Thank you for your reservation. You will get a confirmation email in a few moments.', 'reservation form success', 'wprsrv'); }