92 lines
2.8 KiB
Python
92 lines
2.8 KiB
Python
import datetime
|
|
|
|
import pytest
|
|
|
|
from openinghours.models import OpeningHoursItem, OpeningHoursSet
|
|
|
|
|
|
@pytest.fixture
|
|
def opening_hours_set(db):
|
|
return OpeningHoursSet.objects.create(
|
|
name="Vanlige åpningstider",
|
|
effective_from=datetime.date(2025, 1, 1),
|
|
)
|
|
|
|
|
|
def test_opening_hours_set_str_with_end_date():
|
|
ohs = OpeningHoursSet(
|
|
name="Sommer",
|
|
effective_from=datetime.date(2025, 6, 1),
|
|
effective_to=datetime.date(2025, 8, 31),
|
|
)
|
|
assert str(ohs) == "Sommer (2025-06-01 - 2025-08-31)"
|
|
|
|
|
|
def test_opening_hours_set_str_uses_infinity_when_open_ended():
|
|
ohs = OpeningHoursSet(
|
|
name="Forever",
|
|
effective_from=datetime.date(2025, 1, 1),
|
|
effective_to=None,
|
|
)
|
|
assert str(ohs) == "Forever (2025-01-01 - ∞)"
|
|
|
|
|
|
def test_opening_hours_streamfield_week_roundtrip(opening_hours_set):
|
|
OpeningHoursItem.objects.create(
|
|
opening_hours_set=opening_hours_set,
|
|
function="glassbaren",
|
|
week=[
|
|
(
|
|
"week",
|
|
{
|
|
"monday": {
|
|
"time_from": datetime.time(15, 0),
|
|
"time_to": datetime.time(23, 0),
|
|
"custom": "",
|
|
},
|
|
"tuesday": {"time_from": None, "time_to": None, "custom": "Stengt"},
|
|
"wednesday": {"time_from": None, "time_to": None, "custom": ""},
|
|
"thursday": {"time_from": None, "time_to": None, "custom": ""},
|
|
"friday": {"time_from": None, "time_to": None, "custom": ""},
|
|
"saturday": {"time_from": None, "time_to": None, "custom": ""},
|
|
"sunday": {"time_from": None, "time_to": None, "custom": ""},
|
|
},
|
|
),
|
|
],
|
|
)
|
|
|
|
reloaded = OpeningHoursSet.objects.get(pk=opening_hours_set.pk)
|
|
item = reloaded.items.get()
|
|
assert item.function == "glassbaren"
|
|
|
|
week_block = item.week[0]
|
|
assert week_block.block_type == "week"
|
|
assert week_block.value["monday"]["time_from"] == datetime.time(15, 0)
|
|
assert week_block.value["monday"]["time_to"] == datetime.time(23, 0)
|
|
assert week_block.value["tuesday"]["custom"] == "Stengt"
|
|
|
|
|
|
def test_graphql_opening_hours_sets_query(db, graphql_post):
|
|
OpeningHoursSet.objects.create(
|
|
name="Sommer 2025",
|
|
effective_from=datetime.date(2025, 6, 1),
|
|
effective_to=datetime.date(2025, 8, 31),
|
|
)
|
|
|
|
response, body = graphql_post(
|
|
"""
|
|
query {
|
|
openingHoursSets {
|
|
name
|
|
effectiveFrom
|
|
effectiveTo
|
|
}
|
|
}
|
|
"""
|
|
)
|
|
|
|
assert response.status_code == 200
|
|
assert "errors" not in body, body
|
|
names = [s["name"] for s in body["data"]["openingHoursSets"]]
|
|
assert "Sommer 2025" in names
|