Files
pms/pms/tests/test_pms_room.py

221 lines
7.8 KiB
Python

from psycopg2 import IntegrityError
from odoo.tools import mute_logger
from .common import TestPms
class TestPmsRoom(TestPms):
def setUp(self):
super().setUp()
self.pms_property2 = self.env["pms.property"].create(
{
"name": "Property_2",
"company_id": self.company1.id,
"default_pricelist_id": self.pricelist1.id,
}
)
self.room_type1 = self.env["pms.room.type"].create(
{
"pms_property_ids": [self.pms_property1.id, self.pms_property2.id],
"name": "Single",
"default_code": "SIN",
"class_id": self.room_type_class1.id,
"list_price": 30,
}
)
@mute_logger("odoo.sql_db")
def test_room_name_uniqueness_by_property(self):
"""
Check that there are no two rooms with the same name in the same property
PRE: - room1 'Room 101' exists
- room1 has pms_property1
ACT: - create a new room2
- room2 has name 'Room 101'
- room2 has pms_property1
POST: - Integrity error: already exists another room
with the same name on the same property
- room2 not created
"""
# ARRANGE
self.env["pms.room"].create(
{
"name": "Room 101",
"pms_property_id": self.pms_property1.id,
"room_type_id": self.room_type1.id,
}
)
# ACT & ASSERT
with self.assertRaises(
IntegrityError,
msg="The room should not be created if its name is equal "
"to another room that belongs to the same property.",
):
self.env["pms.room"].create(
{
"name": "Room 101",
"pms_property_id": self.pms_property1.id,
"room_type_id": self.room_type1.id,
}
)
def test_room_name_duplicated_different_property(self):
"""
Check that two rooms with the same name can exist in multiple properties
PRE: - room1 'Room 101' exists
- room1 has pms_property1
ACT: - create a new room2
- room2 has name 'Room 101'
- room2 has pms_property2
POST: - room2 created
"""
# ARRANGE
self.env["pms.room"].create(
{
"name": "Room 101",
"pms_property_id": self.pms_property1.id,
"room_type_id": self.room_type1.id,
}
)
# ACT & ASSERT
try:
self.env["pms.room"].create(
{
"name": "Room 101",
"pms_property_id": self.pms_property2.id,
"room_type_id": self.room_type1.id,
}
)
except IntegrityError:
self.fail(
"The room should be created even if its name is equal "
"to another room, but that room not belongs to the same property."
)
def test_display_name_room(self):
"""
Check that the display_name field of a room is as expected.
------------
A room is created and then it is checked that the display name
field of this is composed of:
room.name [room_type.default_code]
"""
self.room1 = self.env["pms.room"].create(
{
"name": "Room 101",
"pms_property_id": self.pms_property1.id,
"room_type_id": self.room_type1.id,
}
)
expected_display_name = "%s [%s]" % (
self.room1.name,
self.room_type1.default_code,
)
self.assertEqual(
self.room1.display_name,
expected_display_name,
"The display name of the room is not as expected",
)
def test_display_name_room_with_amenity(self):
"""
Check that the display_name field of a room with one amenity
is as expected.
------------
A amenity is created with default code and with is_add_code_room_name
field as True. A room is created in which the amenity created before
is added in the room_amenity_ids field and then it is verified that
the display name field of this is composed of:
room.name [room_type.default_code] amenity.default_code
"""
self.amenity_type1 = self.env["pms.amenity.type"].create(
{
"name": "Amenity Type 1",
"pms_property_ids": [(6, 0, [self.pms_property1.id])],
}
)
self.amenity1 = self.env["pms.amenity"].create(
{
"name": "Amenity 1",
"pms_amenity_type_id": self.amenity_type1.id,
"default_code": "A1",
"pms_property_ids": [(6, 0, [self.pms_property1.id])],
"is_add_code_room_name": True,
}
)
self.room1 = self.env["pms.room"].create(
{
"name": "Room 101",
"pms_property_id": self.pms_property1.id,
"room_type_id": self.room_type1.id,
"room_amenity_ids": [(6, 0, [self.amenity1.id])],
}
)
expected_display_name = "%s [%s] %s" % (
self.room1.name,
self.room_type1.default_code,
self.amenity1.default_code,
)
self.assertEqual(
self.room1.display_name,
expected_display_name,
"The display name of the room is not as expected",
)
def test_display_name_room_with_several_amenities(self):
"""
Check that the display_name field of a room with several amenities
is as expected.
------------
Two amenities are created with diferent default code and with is_add_code_room_name
field as True. A room is created in which the amenities created before are added in
the room_amenity_ids field and then it is verified that the display name field of this
is composed of:
room.name [room_type.default_code] amenity1.default_code amenity2.default_code
"""
self.amenity_type1 = self.env["pms.amenity.type"].create(
{
"name": "Amenity Type 1",
"pms_property_ids": [(6, 0, [self.pms_property1.id])],
}
)
self.amenity1 = self.env["pms.amenity"].create(
{
"name": "Amenity 1",
"pms_amenity_type_id": self.amenity_type1.id,
"default_code": "A1",
"pms_property_ids": [(6, 0, [self.pms_property1.id])],
"is_add_code_room_name": True,
}
)
self.amenity2 = self.env["pms.amenity"].create(
{
"name": "Amenity 2",
"pms_amenity_type_id": self.amenity_type1.id,
"default_code": "B1",
"pms_property_ids": [(6, 0, [self.pms_property1.id])],
"is_add_code_room_name": True,
}
)
self.room1 = self.env["pms.room"].create(
{
"name": "Room 101",
"pms_property_id": self.pms_property1.id,
"room_type_id": self.room_type1.id,
"room_amenity_ids": [(6, 0, [self.amenity1.id, self.amenity2.id])],
}
)
expected_display_name = "%s [%s] %s %s" % (
self.room1.name,
self.room_type1.default_code,
self.amenity1.default_code,
self.amenity2.default_code,
)
self.assertEqual(
self.room1.display_name,
expected_display_name,
"The display name of the room is not as expected",
)