mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[WIP][MIG][11.0] hotel_calendar
This commit is contained in:
@@ -37,7 +37,7 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
now_utc_dt = date_utils.now()
|
||||
adv_utc_dt = now_utc_dt + timedelta(days=15)
|
||||
|
||||
vrooms = (self.hotel_vroom_budget, self.hotel_vroom_special)
|
||||
room_types = (self.hotel_room_type_budget, self.hotel_room_type_special)
|
||||
|
||||
hotel_cal_mngt_obj = self.env['hotel.calendar.management'].sudo(
|
||||
self.user_hotel_manager)
|
||||
@@ -48,14 +48,14 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
self.parity_pricelist_id,
|
||||
self.parity_restrictions_id,
|
||||
True)
|
||||
for vroom in vrooms:
|
||||
for room_type in room_types:
|
||||
for k_pr, v_pr in hcal_data['prices'].iteritems():
|
||||
if k_pr == vroom.id: # Only Check Test Cases
|
||||
if k_pr == room_type.id: # Only Check Test Cases
|
||||
for k_info, v_info in enumerate(v_pr):
|
||||
if k_info >= len(self.prices_tmp[vroom.id]):
|
||||
if k_info >= len(self.prices_tmp[room_type.id]):
|
||||
break
|
||||
self.assertEqual(v_info['price'],
|
||||
self.prices_tmp[vroom.id][k_info],
|
||||
self.prices_tmp[room_type.id][k_info],
|
||||
"Hotel Calendar Management Prices \
|
||||
doesn't match!")
|
||||
|
||||
@@ -63,8 +63,8 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
prices_obj = self.env['product.pricelist.item'].sudo(
|
||||
self.user_hotel_manager)
|
||||
prod_tmpl_ids = (
|
||||
self.hotel_vroom_budget.product_id.product_tmpl_id.id,
|
||||
self.hotel_vroom_special.product_id.product_tmpl_id.id
|
||||
self.hotel_room_type_budget.product_id.product_tmpl_id.id,
|
||||
self.hotel_room_type_special.product_id.product_tmpl_id.id
|
||||
)
|
||||
pr_ids = prices_obj.search([
|
||||
('pricelist_id', '=', self.parity_pricelist_id),
|
||||
@@ -84,7 +84,7 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
def test_calendar_restrictions(self):
|
||||
now_utc_dt = date_utils.now()
|
||||
adv_utc_dt = now_utc_dt + timedelta(days=15)
|
||||
vrooms = (self.hotel_vroom_budget, self.hotel_vroom_special)
|
||||
room_types = (self.hotel_room_type_budget, self.hotel_room_type_special)
|
||||
|
||||
hotel_cal_mngt_obj = self.env['hotel.calendar.management'].sudo(
|
||||
self.user_hotel_manager)
|
||||
@@ -95,16 +95,16 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
self.parity_pricelist_id,
|
||||
self.parity_restrictions_id,
|
||||
True)
|
||||
for vroom in vrooms:
|
||||
for room_type in room_types:
|
||||
for k_pr, v_pr in hcal_data['restrictions'].iteritems():
|
||||
if k_pr == vroom.id: # Only Check Test Cases
|
||||
if k_pr == room_type.id: # Only Check Test Cases
|
||||
for k_info, v_info in enumerate(v_pr):
|
||||
rest_items = self.restrictions_min_stay_tmp[vroom.id]
|
||||
rest_items = self.restrictions_min_stay_tmp[room_type.id]
|
||||
if k_info >= len(rest_items):
|
||||
break
|
||||
self.assertEqual(
|
||||
v_info['min_stay'],
|
||||
self.restrictions_min_stay_tmp[vroom.id][k_info],
|
||||
self.restrictions_min_stay_tmp[room_type.id][k_info],
|
||||
"Hotel Calendar Management Restrictions \
|
||||
doesn't match!")
|
||||
|
||||
@@ -114,8 +114,8 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
rest_ids = rest_it_obj.search([
|
||||
('applied_on', '=', '0_room_type'),
|
||||
('restriction_id', '=', self.parity_restrictions_id),
|
||||
('room_type_id', 'in', (self.hotel_vroom_budget.id,
|
||||
self.hotel_vroom_special.id)),
|
||||
('room_type_id', 'in', (self.hotel_room_type_budget.id,
|
||||
self.hotel_room_type_special.id)),
|
||||
])
|
||||
rest_ids.sudo(self.user_hotel_manager).unlink()
|
||||
|
||||
@@ -133,11 +133,11 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
def test_calendar_availability(self):
|
||||
now_utc_dt = date_utils.now()
|
||||
adv_utc_dt = now_utc_dt + timedelta(days=6)
|
||||
vrooms = (self.hotel_vroom_budget, self.hotel_vroom_special)
|
||||
room_types = (self.hotel_room_type_budget, self.hotel_room_type_special)
|
||||
|
||||
hotel_cal_mngt_obj = self.env['hotel.calendar.management'].sudo(
|
||||
self.user_hotel_manager)
|
||||
vroom_avail_obj = self.env['hotel.room.type.availability'].sudo(
|
||||
room_type_avail_obj = self.env['hotel.room.type.availability'].sudo(
|
||||
self.user_hotel_manager)
|
||||
|
||||
hcal_data = hotel_cal_mngt_obj.get_hcalendar_all_data(
|
||||
@@ -146,22 +146,22 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
self.parity_pricelist_id,
|
||||
self.parity_restrictions_id,
|
||||
True)
|
||||
for vroom in vrooms:
|
||||
for room_type in room_types:
|
||||
for k_pr, v_pr in hcal_data['availability'].iteritems():
|
||||
if k_pr == vroom.id: # Only Check Test Cases
|
||||
if k_pr == room_type.id: # Only Check Test Cases
|
||||
for k_info, v_info in enumerate(v_pr):
|
||||
if k_info >= len(self.avails_tmp[vroom.id]):
|
||||
if k_info >= len(self.avails_tmp[room_type.id]):
|
||||
break
|
||||
self.assertEqual(
|
||||
v_info['avail'],
|
||||
self.avails_tmp[vroom.id][k_info],
|
||||
self.avails_tmp[room_type.id][k_info],
|
||||
"Hotel Calendar Management Availability \
|
||||
doesn't match!")
|
||||
|
||||
# CHANGE AVAIL
|
||||
avail_ids = vroom_avail_obj.search([
|
||||
('room_type_id', 'in', (self.hotel_vroom_budget.id,
|
||||
self.hotel_vroom_special.id)),
|
||||
avail_ids = room_type_avail_obj.search([
|
||||
('room_type_id', 'in', (self.hotel_room_type_budget.id,
|
||||
self.hotel_room_type_special.id)),
|
||||
])
|
||||
for avail_id in avail_ids:
|
||||
avail_id.sudo(self.user_hotel_manager).write({'avail': 1})
|
||||
@@ -171,9 +171,9 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
self.parity_pricelist_id,
|
||||
self.parity_restrictions_id,
|
||||
True)
|
||||
for vroom in vrooms:
|
||||
for room_type in room_types:
|
||||
for k_pr, v_pr in hcal_data['availability'].iteritems():
|
||||
if k_pr == vroom.id: # Only Check Test Cases
|
||||
if k_pr == room_type.id: # Only Check Test Cases
|
||||
for k_info, v_info in enumerate(v_pr):
|
||||
self.assertEqual(
|
||||
v_info['avail'],
|
||||
@@ -182,9 +182,9 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
doesn't match!")
|
||||
|
||||
# REMOVE AVAIL
|
||||
avail_ids = vroom_avail_obj.search([
|
||||
('room_type_id', 'in', (self.hotel_vroom_budget.id,
|
||||
self.hotel_vroom_special.id)),
|
||||
avail_ids = room_type_avail_obj.search([
|
||||
('room_type_id', 'in', (self.hotel_room_type_budget.id,
|
||||
self.hotel_room_type_special.id)),
|
||||
])
|
||||
avail_ids.sudo(self.user_hotel_manager).unlink()
|
||||
|
||||
@@ -194,20 +194,20 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
self.parity_pricelist_id,
|
||||
self.parity_restrictions_id,
|
||||
True)
|
||||
for vroom in vrooms:
|
||||
for room_type in room_types:
|
||||
for k_pr, v_pr in hcal_data['availability'].iteritems():
|
||||
if k_pr == vroom.id: # Only Check Test Cases
|
||||
if k_pr == room_type.id: # Only Check Test Cases
|
||||
for k_info, v_info in enumerate(v_pr):
|
||||
self.assertEqual(
|
||||
v_info['avail'],
|
||||
vroom.max_real_rooms,
|
||||
room_type.max_real_rooms,
|
||||
"Hotel Calendar Management Availability \
|
||||
doesn't match!")
|
||||
|
||||
def test_save_changes(self):
|
||||
now_utc_dt = date_utils.now()
|
||||
adv_utc_dt = now_utc_dt + timedelta(days=3)
|
||||
vrooms = (self.hotel_vroom_budget,)
|
||||
room_types = (self.hotel_room_type_budget,)
|
||||
|
||||
hotel_cal_mngt_obj = self.env['hotel.calendar.management'].sudo(
|
||||
self.user_hotel_manager)
|
||||
@@ -217,7 +217,7 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
cprices = {}
|
||||
for k_item, v_item in enumerate(prices):
|
||||
ndate_utc_dt = now_utc_dt + timedelta(days=k_item)
|
||||
cprices.setdefault(self.hotel_vroom_budget.id, []).append({
|
||||
cprices.setdefault(self.hotel_room_type_budget.id, []).append({
|
||||
'date': ndate_utc_dt.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
|
||||
'price': v_item
|
||||
})
|
||||
@@ -235,7 +235,7 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
crestrictions = {}
|
||||
for i in range(0, 4):
|
||||
ndate_utc_dt = now_utc_dt + timedelta(days=i)
|
||||
crestrictions.setdefault(self.hotel_vroom_budget.id, []).append({
|
||||
crestrictions.setdefault(self.hotel_room_type_budget.id, []).append({
|
||||
'date': ndate_utc_dt.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
|
||||
'closed_arrival': restrictions['closed_arrival'][i],
|
||||
'max_stay': restrictions['max_stay'][i],
|
||||
@@ -252,7 +252,7 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
for k_item, v_item in enumerate(avails):
|
||||
ndate_utc_dt = now_utc_dt + timedelta(days=k_item)
|
||||
ndate_dt = date_utils.dt_as_timezone(ndate_utc_dt, self.tz_hotel)
|
||||
cavails.setdefault(self.hotel_vroom_budget.id, []).append({
|
||||
cavails.setdefault(self.hotel_room_type_budget.id, []).append({
|
||||
'date': ndate_dt.strftime(DEFAULT_SERVER_DATE_FORMAT),
|
||||
'avail': v_item,
|
||||
'no_ota': False,
|
||||
@@ -274,16 +274,16 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
self.parity_restrictions_id,
|
||||
True)
|
||||
|
||||
for vroom in vrooms:
|
||||
for room_type in room_types:
|
||||
for k_pr, v_pr in hcal_data['availability'].iteritems():
|
||||
if k_pr == vroom.id: # Only Check Test Cases
|
||||
if k_pr == room_type.id: # Only Check Test Cases
|
||||
for k_info, v_info in enumerate(v_pr):
|
||||
self.assertEqual(v_info['avail'],
|
||||
avails[k_info],
|
||||
"Hotel Calendar Management \
|
||||
Availability doesn't match!")
|
||||
for k_pr, v_pr in hcal_data['restrictions'].iteritems():
|
||||
if k_pr == vroom.id: # Only Check Test Cases
|
||||
if k_pr == room_type.id: # Only Check Test Cases
|
||||
for k_info, v_info in enumerate(v_pr):
|
||||
self.assertEqual(v_info['min_stay'],
|
||||
restrictions['min_stay'][k_info],
|
||||
@@ -319,7 +319,7 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
"Hotel Calendar Management Restrictions \
|
||||
doesn't match!")
|
||||
for k_pr, v_pr in hcal_data['prices'].iteritems():
|
||||
if k_pr == vroom.id: # Only Check Test Cases
|
||||
if k_pr == room_type.id: # Only Check Test Cases
|
||||
for k_info, v_info in enumerate(v_pr):
|
||||
self.assertEqual(v_info['price'],
|
||||
prices[k_info], "Hotel Calendar \
|
||||
@@ -328,7 +328,7 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
def test_calendar_reservations(self):
|
||||
now_utc_dt = date_utils.now()
|
||||
adv_utc_dt = now_utc_dt + timedelta(days=15)
|
||||
vrooms = (self.hotel_vroom_budget,)
|
||||
room_types = (self.hotel_room_type_budget,)
|
||||
|
||||
hotel_cal_mngt_obj = self.env['hotel.calendar.management'].sudo(
|
||||
self.user_hotel_manager)
|
||||
@@ -352,9 +352,9 @@ class TestManagementCalendar(TestHotelCalendar):
|
||||
True)
|
||||
|
||||
avail_end_utc_dt = reserv_end_utc_dt - timedelta(days=1)
|
||||
for vroom in vrooms:
|
||||
for room_type in room_types:
|
||||
for k_pr, v_pr in hcal_data['count_reservations'].iteritems():
|
||||
if k_pr == vroom.id: # Only Check Test Cases
|
||||
if k_pr == room_type.id: # Only Check Test Cases
|
||||
for k_info, v_info in enumerate(v_pr):
|
||||
ndate = date_utils.get_datetime(v_info['date'])
|
||||
if date_utils.date_in(ndate,
|
||||
|
||||
@@ -30,12 +30,12 @@ class TestProductPricelist(TestHotelCalendar):
|
||||
now_utc_dt = date_utils.now()
|
||||
now_utc_str = now_utc_dt.strftime(DEFAULT_SERVER_DATE_FORMAT)
|
||||
|
||||
vroom_tmpl_id = self.hotel_vroom_special.product_id.product_tmpl_id
|
||||
room_type_tmpl_id = self.hotel_room_type_special.product_id.product_tmpl_id
|
||||
|
||||
pritem_obj = self.env['product.pricelist.item']
|
||||
plitem = pritem_obj.search([
|
||||
('pricelist_id', '=', self.parity_pricelist_id),
|
||||
('product_tmpl_id', '=', vroom_tmpl_id.id),
|
||||
('product_tmpl_id', '=', room_type_tmpl_id.id),
|
||||
('date_start', '=', now_utc_str),
|
||||
('date_end', '=', now_utc_str),
|
||||
('applied_on', '=', '1_product'),
|
||||
@@ -44,13 +44,13 @@ class TestProductPricelist(TestHotelCalendar):
|
||||
old_price = plitem.fixed_price
|
||||
|
||||
self.pricelist_1.update_price(
|
||||
self.hotel_vroom_special.id,
|
||||
self.hotel_room_type_special.id,
|
||||
now_utc_str,
|
||||
999.9)
|
||||
|
||||
plitem = pritem_obj.search([
|
||||
('pricelist_id', '=', self.parity_pricelist_id),
|
||||
('product_tmpl_id', '=', vroom_tmpl_id.id),
|
||||
('product_tmpl_id', '=', room_type_tmpl_id.id),
|
||||
('date_start', '=', now_utc_str),
|
||||
('date_end', '=', now_utc_str),
|
||||
('applied_on', '=', '1_product'),
|
||||
|
||||
@@ -46,11 +46,11 @@ class TestReservationsCalendar(TestHotelCalendar):
|
||||
|
||||
# Check Pricelist Integrity
|
||||
for k_pr, v_pr in hcal_data['pricelist'].iteritems():
|
||||
for vroom_pr in v_pr:
|
||||
for room_type_pr in v_pr:
|
||||
# Only Check Test Cases
|
||||
if vroom_pr['room'] in self.prices_tmp.keys():
|
||||
if room_type_pr['room'] in self.prices_tmp.keys():
|
||||
sorted_dates = sorted(
|
||||
vroom_pr['days'].keys(),
|
||||
room_type_pr['days'].keys(),
|
||||
key=lambda x: datetime.datetime.strptime(x, '%d/%m/%Y')
|
||||
)
|
||||
init_date_dt = datetime.datetime.strptime(
|
||||
@@ -67,11 +67,11 @@ class TestReservationsCalendar(TestHotelCalendar):
|
||||
"Hotel Calendar don't end in \
|
||||
the correct date!")
|
||||
|
||||
vroom_prices = self.prices_tmp[vroom_pr['room']]
|
||||
for k_price, v_price in enumerate(vroom_prices):
|
||||
room_type_prices = self.prices_tmp[room_type_pr['room']]
|
||||
for k_price, v_price in enumerate(room_type_prices):
|
||||
self.assertEqual(
|
||||
v_price,
|
||||
vroom_pr['days'][sorted_dates[k_price+1]],
|
||||
room_type_pr['days'][sorted_dates[k_price+1]],
|
||||
"Hotel Calendar Pricelist doesn't match!")
|
||||
|
||||
# Check Pricelist Integrity after unlink
|
||||
@@ -80,8 +80,8 @@ class TestReservationsCalendar(TestHotelCalendar):
|
||||
pr_ids = pricelist_item_obj.search([
|
||||
('pricelist_id', '=', self.parity_pricelist_id),
|
||||
('product_tmpl_id', 'in', (
|
||||
self.hotel_vroom_budget.product_id.product_tmpl_id.id,
|
||||
self.hotel_vroom_special.product_id.product_tmpl_id.id)),
|
||||
self.hotel_room_type_budget.product_id.product_tmpl_id.id,
|
||||
self.hotel_room_type_special.product_id.product_tmpl_id.id)),
|
||||
])
|
||||
pr_ids.sudo(self.user_hotel_manager).unlink()
|
||||
reserv_obj = self.env['hotel.reservation'].sudo(
|
||||
@@ -89,14 +89,14 @@ class TestReservationsCalendar(TestHotelCalendar):
|
||||
hcal_data = reserv_obj.get_hcalendar_all_data(
|
||||
now_utc_dt.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
|
||||
adv_utc_dt.strftime(DEFAULT_SERVER_DATETIME_FORMAT))
|
||||
vrooms = (self.hotel_vroom_budget, self.hotel_vroom_special)
|
||||
for vroom in vrooms:
|
||||
room_types = (self.hotel_room_type_budget, self.hotel_room_type_special)
|
||||
for room_type in room_types:
|
||||
for k_pr, v_pr in hcal_data['pricelist'].iteritems():
|
||||
for vroom_pr in v_pr:
|
||||
if vroom_pr['room'] == vroom.id: # Only Check Test Cases
|
||||
for room_type_pr in v_pr:
|
||||
if room_type_pr['room'] == room_type.id: # Only Check Test Cases
|
||||
self.assertEqual(
|
||||
vroom.list_price,
|
||||
vroom_pr['days'][sorted_dates[k_price+1]],
|
||||
room_type.list_price,
|
||||
room_type_pr['days'][sorted_dates[k_price+1]],
|
||||
"Hotel Calendar Pricelist doesn't \
|
||||
match after remove!")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user