def test_reservation_duration(): start_time = datetime.utcnow() end_time = datetime.utcnow() customer_id = 5 num_of_persons = 4 comment = "This is a reservation for duration test" status = ReservationStatus.confirmed new_reservation = Reservation(start_time=start_time, end_time=end_time, customer_id=customer_id, num_of_persons=num_of_persons, comment=comment, status=status) assert new_reservation.duration() == end_time - start_time
def post(self): """ Create new reservation """ """ @todo #434:30min Continue the implementation of CreateReservation. Add authentication and refactor using CrudAPIView also edit and delete methods for Reservations. Tests for these are skipped. Created reservation should be returned as a JSON object """ form = ReservationForm(request.form) try: if form.validate(): reservation = Reservation( start_time=request.form["start_time"], end_time=request.form["end_time"], num_of_persons=request.form["num_of_persons"], comment=request.form["comment"], status=request.form["status"] ) DB.session.add(reservation) DB.session.commit() return jsonify(status="success"), HTTPStatus.CREATED return jsonify( status="error", errors=form.errors ), HTTPStatus.BAD_REQUEST except Exception as error: return jsonify( status="error", errors=error ), HTTPStatus.BAD_REQUEST
def create(): """ Create new reservation """ """ @todo #380:30min Continue. When we use the form.validate() function the status (enum: timeless/restaurants/models.py) is displaying the following error: 'status': ['Invalid Choice: could not coerce', 'Not a valid choice']. Removes the commented if to see the error. Also refactor the function using genericViews, as explained in puzzles #134 and #137. """ form = ReservationForm(request.form) try: """if request.method == "POST" and form.validate():""" if request.method == "POST": reservation = Reservation( start_time=request.form["start_time"], end_time=request.form["end_time"], num_of_persons=request.form["num_of_persons"], comment=request.form["comment"], status=request.form["status"] ) DB.session.add(reservation) DB.session.commit() return redirect(url_for("reservations.list")) else: flash("Error: ", form.errors) except Exception as error: flash("Error: ", error) return render_template("reservations/create_edit.html", error=form.errors, action="create", form=form)
def test_delete_reservation(client, db_session): id = 1 reservation = Reservation(id=id, start_time=datetime.utcnow(), end_time=datetime.utcnow(), num_of_persons=2, status=ReservationStatus.confirmed, comment="test comment") db_session.add(reservation) db_session.commit() response = client.post(url_for('reservations.delete', id=id)) assert response.location.endswith( url_for("reservations.list_reservations")) assert Reservation.query.filter_by(id=id).count() == 0
def test_edit(): start_time = datetime.datetime end_time = datetime.datetime customer = Customer(id=1, first_name="First", last_name="Last", phone_number="555") num_of_persons = 4 comment = "My comment" status = 2 new_reservation = Reservation(id=1, start_time=start_time, end_time=end_time, customer_id=customer.id, num_of_persons=num_of_persons, comment=comment, status=status) view = views.edit(id=new_reservation.id) assert "<h1>Reservation management - Edit</h1>" in view
def test_new_reservation(): start_time = datetime.utcnow() end_time = datetime.utcnow() customer_id = 1 num_of_persons = 4 comment = "My comment" status = ReservationStatus.confirmed new_reservation = Reservation(start_time=start_time, end_time=end_time, customer_id=customer_id, num_of_persons=num_of_persons, comment=comment, status=status) assert (new_reservation.start_time == start_time and new_reservation.end_time == end_time and new_reservation.customer_id == customer_id and new_reservation.num_of_persons == num_of_persons and new_reservation.comment == comment and new_reservation.status == status)