diff --git a/src/pretix/base/models.py b/src/pretix/base/models.py index 28e41eb3e8..20544ea0ba 100644 --- a/src/pretix/base/models.py +++ b/src/pretix/base/models.py @@ -44,7 +44,7 @@ class Versionable(BaseVersionable): if self.version_end_date: # NOQA raise ValueError('This is a historical item and can not be cloned.') - if forced_version_date: + if forced_version_date: # NOQA if not self.version_start_date <= forced_version_date <= get_utc_now(): raise ValueError('The clone date must be between the version start date and now.') else: diff --git a/src/tests/base/test_models.py b/src/tests/base/test_models.py index 7f7b1a3fac..8a5e474731 100644 --- a/src/tests/base/test_models.py +++ b/src/tests/base/test_models.py @@ -4,8 +4,8 @@ from django.test import TestCase from django.utils.timezone import now from pretix.base.models import ( - CartPosition, Event, Item, ItemVariation, Order, OrderPosition, Organizer, - Property, PropertyValue, Question, Quota, User, + CartPosition, Event, Item, ItemCategory, ItemVariation, Order, + OrderPosition, Organizer, Property, PropertyValue, Question, Quota, User, ) from pretix.base.services.orders import mark_order_paid from pretix.base.types import VariationDict @@ -405,3 +405,30 @@ class OrderTestCase(BaseQuotaTestCase): assert self.order.can_modify_answers self.event.settings.set('last_order_modification_date', now() - timedelta(days=1)) assert not self.order.can_modify_answers + + +class ItemCategoryTest(TestCase): + """ + This test case tests various methods around the category model. + """ + @classmethod + def setUpTestData(cls): + o = Organizer.objects.create(name='Dummy', slug='dummy') + cls.event = Event.objects.create( + organizer=o, name='Dummy', slug='dummy', + date_from=now(), + ) + + def test_sorting(self): + c1 = ItemCategory.objects.create(event=self.event) + c2 = ItemCategory.objects.create(event=self.event) + assert c1 < c2 + c1.position = 2 + c2.position = 1 + assert c2 < c1 + assert not c1 < c2 + assert c1 > c2 + c1.position = 1 + c2.position = 2 + assert c1 < c2 + assert c2 > c1 diff --git a/src/tests/control/test_orders.py b/src/tests/control/test_orders.py index 74c7007fa3..41c25b3172 100644 --- a/src/tests/control/test_orders.py +++ b/src/tests/control/test_orders.py @@ -85,3 +85,16 @@ def test_order_transition_to_paid_success(client, env): }) o = Order.objects.current.get(identity=env[2].identity) assert o.status == Order.STATUS_PAID + + +@pytest.mark.django_db +def test_order_transition_to_unpaid_success(client, env): + o = Order.objects.current.get(identity=env[2].identity) + o.status = Order.STATUS_PAID + o.save() + client.login(identifier='dummy@dummy.dummy', password='dummy') + client.post('/control/event/dummy/dummy/orders/FOO/transition', { + 'status': 'n' + }) + o = Order.objects.current.get(identity=env[2].identity) + assert o.status == Order.STATUS_PENDING diff --git a/src/tests/presale/test_event.py b/src/tests/presale/test_event.py index a3db225562..15da917573 100644 --- a/src/tests/presale/test_event.py +++ b/src/tests/presale/test_event.py @@ -237,6 +237,21 @@ class DeadlineTest(EventTestMixin, TestCase): self.assertIn('alert-danger', response.rendered_content) self.assertIn('is over', response.rendered_content) + def test_not_set(self): + self.event.presale_start = None + self.event.presale_end = None + self.event.save() + response = self.client.get( + '/%s/%s/' % (self.orga.slug, self.event.slug) + ) + self.assertEqual(response.status_code, 200) + self.assertNotIn('alert-info', response.rendered_content) + self.assertIn('checkout-button-row', response.rendered_content) + response = self.client.post( + '/%s/%s/cart/add' % (self.orga.slug, self.event.slug) + ) + self.assertNotEqual(response.status_code, 403) + def test_in_time(self): self.event.presale_start = now() - datetime.timedelta(days=1) self.event.presale_end = now() + datetime.timedelta(days=1)