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

68 lines
2.6 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import datetime
from psycopg2 import IntegrityError
from odoo.addons.room.tests.common import RoomCommon
from odoo.exceptions import ValidationError
from odoo.tests.common import tagged
from odoo.tools import mute_logger
@tagged("post_install", "-at_install")
class TestRoomConstraints(RoomCommon):
def test_booking_constraints(self):
room_booking = self.env["room.booking"]
# Create a booking overlapping an existing booking
with self.assertRaises(ValidationError, msg="Bookings may not overlap"):
room_booking.create({
"name": "Meeting",
"room_id": self.rooms[0].id,
"start_datetime": datetime(2023, 5, 15, 10, 30),
"stop_datetime": datetime(2023, 5, 15, 11, 30),
})
# Create two bookings that overlap
with self.assertRaises(ValidationError, msg="Bookings may not overlap"):
room_booking.create([
{
"name": "Meeting 1",
"room_id": self.rooms[0].id,
"start_datetime": datetime(2023, 5, 15, 13, 0),
"stop_datetime": datetime(2023, 5, 15, 14, 0),
}, {
"name": "Meeting 2",
"room_id": self.rooms[0].id,
"start_datetime": datetime(2023, 5, 15, 13, 30),
"stop_datetime": datetime(2023, 5, 15, 14, 30),
}
])
with self.assertRaises(ValidationError, msg="Stop date of a booking must be after start date"):
room_booking.create({
"name": "Meeting",
"room_id": self.rooms[0].id,
"start_datetime": datetime(2023, 5, 15, 10, 0),
"stop_datetime": datetime(2023, 5, 15, 9, 0),
})
@mute_logger('odoo.sql_db')
def test_room_constraints(self):
room_room = self.env["room.room"]
# Create a room with an existing short code
with self.assertRaises(IntegrityError, msg="Short code must be unique"):
room_room.create({
"name": "Room 3",
"office_id": self.office.id,
"short_code": self.rooms[0].short_code,
})
# Create a room with an existing access token
with self.assertRaises(IntegrityError, msg="Access token must be unique"):
room_room.create({
"name": "Room 3",
"office_id": self.office.id,
"access_token": self.rooms[0].access_token,
})