init
This commit is contained in:
66
backend/product/tests.py
Normal file
66
backend/product/tests.py
Normal 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()
|
||||
Reference in New Issue
Block a user