1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/room/tests/test_room_frontend.py
2024-12-10 09:04:09 +07:00

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)