forked from Mapan/odoo17e
70 lines
3.3 KiB
Python
70 lines
3.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from datetime import datetime
|
|
from freezegun import freeze_time
|
|
|
|
from odoo.addons.room.tests.common import RoomCommon
|
|
from odoo.tests.common import HttpCase, JsonRpcException, tagged
|
|
|
|
@tagged("post_install", "-at_install")
|
|
class TestRoomFrontend(RoomCommon, HttpCase):
|
|
|
|
@freeze_time("2023-05-15 11:15:00")
|
|
def test_room_frontend(self):
|
|
self.authenticate(None, None)
|
|
res = self.url_open(f"/room/{self.rooms[0].short_code}/book")
|
|
self.assertEqual(res.status_code, 200)
|
|
|
|
access_token = self.rooms[0].access_token
|
|
# Create a booking
|
|
res = self.make_jsonrpc_request(f"/room/{access_token}/booking/create", {
|
|
"name": "public booking",
|
|
"start_datetime": "2023-05-15 14:00:00",
|
|
"stop_datetime": "2023-05-15 15:00:00",
|
|
})
|
|
self.assertTrue(self.env["room.booking"].search([
|
|
("name", "=", "public booking"),
|
|
("room_id", "=", self.rooms[0].id)
|
|
]))
|
|
# Create with invalid access token
|
|
with self.assertRaises(JsonRpcException, msg="werkzeug.exceptions.NotFound"):
|
|
self.make_jsonrpc_request(f"/room/{access_token[1:]}/booking/create", {
|
|
"name": "public booking",
|
|
"start_datetime": "2023-05-15 15:00:00",
|
|
"stop_datetime": "2023-05-15 16:00:00",
|
|
})
|
|
|
|
# Get existing bookings (should not fetch ended booking)
|
|
bookings = self.make_jsonrpc_request(f"/room/{access_token}/get_existing_bookings", {})
|
|
self.assertEqual(len(bookings), 2)
|
|
self.assertEqual(bookings[0]["start_datetime"], "2023-05-15 11:00:00")
|
|
|
|
# Reschedule the current booking
|
|
self.make_jsonrpc_request(f"/room/{access_token}/booking/{self.bookings[1].id}/update", {
|
|
"name": "rescheduled booking",
|
|
"start_datetime": "2023-05-15 12:00:00",
|
|
"stop_datetime": "2023-05-15 13:00:00",
|
|
})
|
|
self.assertEqual(self.bookings[1].name, "rescheduled booking")
|
|
self.assertEqual(self.bookings[1].start_datetime, datetime(2023, 5, 15, 12, 0))
|
|
self.assertEqual(self.bookings[1].stop_datetime, datetime(2023, 5, 15, 13, 0))
|
|
|
|
# Update a booking with the access token of another room
|
|
with self.assertRaises(JsonRpcException, msg="werkzeug.exceptions.NotFound"):
|
|
self.make_jsonrpc_request(f"/room/{self.rooms[1].access_token}/booking/{self.bookings[1].id}/update", {
|
|
"name": "failed reschedule",
|
|
"start_datetime": "2023-05-15 13:00:00",
|
|
"stop_datetime": "2023-05-15 14:00:00",
|
|
})
|
|
self.assertEqual(self.bookings[1].name, "rescheduled booking")
|
|
|
|
# Delete a booking
|
|
self.make_jsonrpc_request(f"/room/{access_token}/booking/{self.bookings[1].id}/delete", {})
|
|
self.assertEqual(self.env["room.booking"].search_count([("room_id", "=", self.rooms[0].id)]), 2)
|
|
|
|
# Delete a booking with the access token of another room
|
|
with self.assertRaises(JsonRpcException, msg="werkzeug.exceptions.NotFound"):
|
|
self.make_jsonrpc_request(f"/room/{self.rooms[1].access_token}/booking/{self.bookings[0].id}/delete", {})
|
|
self.assertEqual(self.env["room.booking"].search_count([("room_id", "=", self.rooms[0].id)]), 2)
|