This commit is contained in:
2025-10-02 00:54:34 +02:00
commit 84b34c9615
200 changed files with 42048 additions and 0 deletions

66
backend/product/tests.py Normal file
View File

@@ -0,0 +1,66 @@
from django.test import TestCase
from django.utils import timezone
from datetime import timedelta
from django.core.exceptions import ValidationError
from booking.models import Square, Event
from .models import Product, EventProduct
class EventProductDateComparisonTests(TestCase):
def setUp(self):
self.square = Square.objects.create(
name="Test Square",
street="Test Street",
city="Test City",
psc=12345,
width=10,
height=10,
grid_rows=10,
grid_cols=10,
cellsize=10,
)
today = timezone.now().date()
self.event = Event.objects.create(
name="Test Event",
square=self.square,
start=today,
end=today + timedelta(days=2),
price_per_m2=10,
)
self.product = Product.objects.create(name="Prod 1")
def test_event_product_inside_event_range_passes(self):
now = timezone.now()
ep = EventProduct(
product=self.product,
event=self.event,
start_selling_date=now,
end_selling_date=now + timedelta(hours=2),
)
# Should not raise (specifically regression for datetime.date vs datetime comparison)
ep.full_clean() # Will call clean()
ep.save()
self.assertIsNotNone(ep.id)
def test_event_product_outside_event_range_fails(self):
now = timezone.now()
ep = EventProduct(
product=self.product,
event=self.event,
start_selling_date=now - timedelta(days=1), # before event start
end_selling_date=now,
)
with self.assertRaises(ValidationError):
ep.full_clean()
def test_event_product_end_after_event_range_fails(self):
now = timezone.now()
ep = EventProduct(
product=self.product,
event=self.event,
start_selling_date=now,
end_selling_date=now + timedelta(days=5), # after event end
)
with self.assertRaises(ValidationError):
ep.full_clean()