Skip to content

Commit 290447b

Browse files
Matti Lamppumatti-lamppu
authored andcommitted
Ignore cancelled & denied reservations in first reservable time deduction
1 parent 9c09065 commit 290447b

3 files changed

Lines changed: 54 additions & 0 deletions

File tree

reservations/querysets.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ def get_affecting_reservations_as_closed_time_spans(
8383
# Reservations that are on the given period and contain any of the given spaces or resources.
8484
reservation_queryset = (
8585
self.filter_buffered_reservations_period(start_date=start_date, end_date=end_date)
86+
.going_to_occur()
8687
.filter(
8788
Q(reservation_unit__id__in=[info.pk for info in reservation_unit_infos])
8889
| Q(reservation_unit__spaces__in=space_ids)

tests/test_graphql_api/test_reservation_unit/test_query_reservable_fields.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
from applications.choices import ApplicationRoundStatusChoice
1111
from reservation_units.models import ReservationUnit
12+
from reservations.choices import ReservationStateChoice
1213
from tests.factories import (
1314
ApplicationRoundFactory,
1415
OriginHaukiResourceFactory,
@@ -937,6 +938,7 @@ def test__query_reservation_unit_reservable__reservations__own_reservation(graph
937938
begin=_datetime(day=20, hour=10),
938939
end=_datetime(day=20, hour=12),
939940
reservation_unit=[reservation_unit],
941+
state=ReservationStateChoice.CREATED,
940942
)
941943

942944
# 2023-05-20 10:00 - 12:00 (2h)
@@ -964,6 +966,7 @@ def test__query_reservation_unit_reservable__reservations__not_in_common_hierarc
964966
begin=_datetime(day=20, hour=10),
965967
end=_datetime(day=20, hour=12),
966968
reservation_unit=[reservation_unit_2],
969+
state=ReservationStateChoice.CREATED,
967970
)
968971

969972
# 2023-05-20 10:00 - 12:00 (2h)
@@ -994,6 +997,7 @@ def test__query_reservation_unit_reservable__reservations__in_common_hierarchy__
994997
begin=_datetime(day=20, hour=10),
995998
end=_datetime(day=20, hour=12),
996999
reservation_unit=[reservation_unit_2],
1000+
state=ReservationStateChoice.CREATED,
9971001
)
9981002

9991003
# 2023-05-20 10:00 - 12:00 (2h)
@@ -1024,6 +1028,7 @@ def test__query_reservation_unit_reservable__reservations__in_common_hierarchy__
10241028
begin=_datetime(day=20, hour=10),
10251029
end=_datetime(day=20, hour=12),
10261030
reservation_unit=[reservation_unit_2],
1031+
state=ReservationStateChoice.CREATED,
10271032
)
10281033

10291034
# 2023-05-20 10:00 - 12:00 (2h)
@@ -1125,12 +1130,14 @@ def test__query_reservation_unit_reservable__reservations__start_and_end_same_da
11251130
begin=_datetime(year=2024, month=1, day=8, hour=8),
11261131
end=_datetime(year=2024, month=1, day=8, hour=11),
11271132
reservation_unit=[reservation_unit],
1133+
state=ReservationStateChoice.CREATED,
11281134
)
11291135
# Monday | 2024-01-08 | 12:00 - 17:00 (5h)
11301136
ReservationFactory.create(
11311137
begin=_datetime(year=2024, month=1, day=8, hour=12),
11321138
end=_datetime(year=2024, month=1, day=8, hour=17),
11331139
reservation_unit=[reservation_unit],
1140+
state=ReservationStateChoice.CREATED,
11341141
)
11351142

11361143
# Monday | 2024-01-08 | 08:00 - 20:30 (12.5h)
@@ -1174,6 +1181,7 @@ def test__query_reservation_unit_reservable__reservations__filter_start_time_at_
11741181
begin=_datetime(year=2024, month=1, day=9, hour=14),
11751182
end=_datetime(year=2024, month=1, day=9, hour=15, minute=30),
11761183
reservation_unit=[reservation_unit],
1184+
state=ReservationStateChoice.CREATED,
11771185
)
11781186

11791187
# Monday | 2024-01-09 | 08:00 - 20:30 (12.5h)
@@ -1199,3 +1207,46 @@ def test__query_reservation_unit_reservable__reservations__filter_start_time_at_
11991207
"isClosed": False,
12001208
"firstReservableDatetime": _datetime(year=2024, month=1, day=9, hour=15, minute=30).isoformat(),
12011209
}
1210+
1211+
1212+
@pytest.mark.parametrize(
1213+
"state",
1214+
[ReservationStateChoice.CANCELLED, ReservationStateChoice.DENIED],
1215+
)
1216+
@freezegun.freeze_time(datetime(2024, 1, 4, tzinfo=DEFAULT_TIMEZONE))
1217+
def test__query_reservation_unit_reservable__reservations__dont_include_cancelled_or_denied_reservations(
1218+
graphql,
1219+
reservation_unit,
1220+
state,
1221+
):
1222+
reservation_unit.reservation_start_interval = ReservationUnit.RESERVATION_START_INTERVAL_30_MINUTES
1223+
reservation_unit.save()
1224+
1225+
# Monday | 2024-01-09 | 10:00 - 12:00 (2h)
1226+
ReservationFactory.create(
1227+
begin=_datetime(year=2024, month=1, day=9, hour=10),
1228+
end=_datetime(year=2024, month=1, day=9, hour=12),
1229+
reservation_unit=[reservation_unit],
1230+
state=state,
1231+
)
1232+
1233+
# Monday | 2024-01-09 | 10:00 - 20:30 (12.5h)
1234+
ReservableTimeSpanFactory.create(
1235+
resource=reservation_unit.origin_hauki_resource,
1236+
start_datetime=_datetime(year=2024, month=1, day=9, hour=10),
1237+
end_datetime=_datetime(year=2024, month=1, day=9, hour=20),
1238+
)
1239+
1240+
query = reservation_units_reservable_query(
1241+
reservable_date_start="2024-01-09",
1242+
reservable_date_end="2024-01-09",
1243+
)
1244+
1245+
response = graphql(query)
1246+
1247+
assert response.has_errors is False, response
1248+
assert len(response.edges) == 1, response
1249+
assert response.node(0) == {
1250+
"isClosed": False,
1251+
"firstReservableDatetime": _datetime(year=2024, month=1, day=9, hour=10).isoformat(),
1252+
}

tests/test_querysets/test_reservation_querysets.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
from opening_hours.utils.reservable_time_span_client import TimeSpanElement
77
from reservation_units.models import ReservationUnit
8+
from reservations.choices import ReservationStateChoice
89
from reservations.models import Reservation
910
from tests.factories import (
1011
ReservationFactory,
@@ -43,6 +44,7 @@ def _create_test_reservations_for_all_reservation_units() -> None:
4344
end=_datetime(minute=0),
4445
reservation_unit=[reservation_unit],
4546
user=None,
47+
state=ReservationStateChoice.CREATED,
4648
)
4749

4850

0 commit comments

Comments
 (0)