From c54be016de6d5fc5ea26b04d91db0c9076ccfa06 Mon Sep 17 00:00:00 2001 From: Mira Weller Date: Thu, 15 May 2025 14:11:50 +0200 Subject: [PATCH] add max_extend to remaining tests --- src/tests/presale/test_cart.py | 292 +++++++++++++++++++++------------ 1 file changed, 186 insertions(+), 106 deletions(-) diff --git a/src/tests/presale/test_cart.py b/src/tests/presale/test_cart.py index 108c4af803..b8f5b1a375 100644 --- a/src/tests/presale/test_cart.py +++ b/src/tests/presale/test_cart.py @@ -992,7 +992,7 @@ class CartTest(CartTestMixin, TestCase): with scopes_disabled(): CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=23, expires=now() + timedelta(minutes=10) + price=23, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) self.event.settings.max_items_per_order = 5 response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), { @@ -1009,7 +1009,7 @@ class CartTest(CartTestMixin, TestCase): with scopes_disabled(): CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=23, expires=now() + timedelta(minutes=10) + price=23, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) self.event.settings.max_items_per_order = settings.PRETIX_MAX_ORDER_SIZE + 100 response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), { @@ -1026,7 +1026,7 @@ class CartTest(CartTestMixin, TestCase): with scopes_disabled(): CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=23, expires=now() + timedelta(minutes=10) + price=23, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) self.event.settings.max_items_per_order = 5 response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), { @@ -1087,7 +1087,7 @@ class CartTest(CartTestMixin, TestCase): with scopes_disabled(): CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=23, expires=now() + timedelta(minutes=10) + price=23, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), { 'item_%d' % self.ticket.id: '2', @@ -1105,7 +1105,7 @@ class CartTest(CartTestMixin, TestCase): with scopes_disabled(): CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=23, expires=now() + timedelta(minutes=10) + price=23, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), { 'item_%d' % self.ticket.id: '2', @@ -1332,7 +1332,7 @@ class CartTest(CartTestMixin, TestCase): with scopes_disabled(): cr1 = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=23, expires=now() - timedelta(minutes=10) + price=23, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) q1 = Question.objects.create( event=self.event, question='Age', type=Question.TYPE_NUMBER, @@ -1419,7 +1419,7 @@ class CartTest(CartTestMixin, TestCase): with scopes_disabled(): cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=23, expires=now() + timedelta(minutes=10) + price=23, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) response = self.client.post('/%s/%s/cart/remove' % (self.orga.slug, self.event.slug), { 'id': cp.pk @@ -2192,7 +2192,8 @@ class CartTest(CartTestMixin, TestCase): v = Voucher.objects.create(item=self.ticket, value=Decimal('12.00'), event=self.event, max_usages=2, redeemed=1) CartPosition.objects.create( - expires=now() - timedelta(minutes=10), item=self.ticket, voucher=v, price=Decimal('12.00'), + expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, voucher=v, price=Decimal('12.00'), event=self.event, cart_id=self.session_key ) response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), { @@ -2210,7 +2211,8 @@ class CartTest(CartTestMixin, TestCase): v = Voucher.objects.create(item=self.ticket, value=Decimal('12.00'), event=self.event, max_usages=2, redeemed=1) CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, voucher=v, price=Decimal('12.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, voucher=v, price=Decimal('12.00'), event=self.event, cart_id='other' ) response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), { @@ -2228,7 +2230,8 @@ class CartTest(CartTestMixin, TestCase): v = Voucher.objects.create(item=self.ticket, value=Decimal('12.00'), event=self.event, max_usages=2, redeemed=1) CartPosition.objects.create( - expires=now() - timedelta(minutes=10), item=self.ticket, voucher=v, price=Decimal('12.00'), + expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, voucher=v, price=Decimal('12.00'), event=self.event, cart_id='other' ) self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), { @@ -2243,11 +2246,13 @@ class CartTest(CartTestMixin, TestCase): with scopes_disabled(): cp1 = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=23, listed_price=23, price_after_voucher=23, expires=now() + timedelta(minutes=10) + price=23, listed_price=23, price_after_voucher=23, + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) cp2 = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.shirt, variation=self.shirt_blue, - price=15, listed_price=15, price_after_voucher=15, expires=now() + timedelta(minutes=10) + price=15, listed_price=15, price_after_voucher=15, + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) v = Voucher.objects.create( event=self.event, item=self.ticket, price_mode='set', value=Decimal('4.00') @@ -2267,11 +2272,13 @@ class CartTest(CartTestMixin, TestCase): with scopes_disabled(): cp1 = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=23, listed_price=23, price_after_voucher=23, expires=now() + timedelta(minutes=10) + price=23, listed_price=23, price_after_voucher=23, + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) cp2 = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.shirt, variation=self.shirt_blue, - price=150, listed_price=150, price_after_voucher=150, expires=now() + timedelta(minutes=10) + price=150, listed_price=150, price_after_voucher=150, + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) v = Voucher.objects.create( event=self.event, price_mode='set', value=Decimal('4.00'), max_usages=100, redeemed=99 @@ -2292,11 +2299,13 @@ class CartTest(CartTestMixin, TestCase): with scopes_disabled(): cp1 = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=23, listed_price=23, price_after_voucher=23, expires=now() + timedelta(minutes=10) + price=23, listed_price=23, price_after_voucher=23, + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) cp2 = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.shirt, variation=self.shirt_blue, - price=150, listed_price=150, price_after_voucher=150, expires=now() + timedelta(minutes=10) + price=150, listed_price=150, price_after_voucher=150, + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) v = Voucher.objects.create( event=self.event, price_mode='set', quota=self.quota_all, value=Decimal('4.00'), max_usages=100 @@ -2317,11 +2326,13 @@ class CartTest(CartTestMixin, TestCase): with scopes_disabled(): cp1 = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=23, listed_price=23, price_after_voucher=23, expires=now() + timedelta(minutes=10) + price=23, listed_price=23, price_after_voucher=23, + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) cp2 = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.shirt, variation=self.shirt_blue, - price=150, listed_price=150, price_after_voucher=150, expires=now() + timedelta(minutes=10) + price=150, listed_price=150, price_after_voucher=150, + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) v = Voucher.objects.create( event=self.event, price_mode='set', quota=self.quota_all, value=Decimal('4.00'), max_usages=100, @@ -2356,14 +2367,17 @@ class CartTest(CartTestMixin, TestCase): with scopes_disabled(): cp1 = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=23, listed_price=23, price_after_voucher=23, expires=now() + timedelta(minutes=10) + price=23, listed_price=23, price_after_voucher=23, + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) v2 = Voucher.objects.create( event=self.event, price_mode='set', quota=self.quota_all, value=Decimal('8.00'), max_usages=100 ) cp2 = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.shirt, variation=self.shirt_blue, - price=8, expires=now() + timedelta(minutes=10), voucher=v2 + price=8, + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + voucher=v2 ) v = Voucher.objects.create( event=self.event, price_mode='set', quota=self.quota_all, value=Decimal('4.00'), max_usages=100 @@ -2409,11 +2423,13 @@ class CartTest(CartTestMixin, TestCase): with scopes_disabled(): cp1 = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=23, listed_price=23, price_after_voucher=23, expires=now() + timedelta(minutes=10) + price=23, listed_price=23, price_after_voucher=23, + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) cp2 = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.shirt, variation=self.shirt_blue, - price=15, listed_price=15, price_after_voucher=15, expires=now() + timedelta(minutes=10) + price=15, listed_price=15, price_after_voucher=15, + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) v = Voucher.objects.create( event=self.event, price_mode='set', value=Decimal('40.00'), max_usages=100, @@ -2433,11 +2449,13 @@ class CartTest(CartTestMixin, TestCase): with scopes_disabled(): cp1 = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=23, listed_price=23, price_after_voucher=23, expires=now() + timedelta(minutes=10) + price=23, listed_price=23, price_after_voucher=23, + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) cp2 = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.shirt, variation=self.shirt_blue, - price=15, listed_price=15, price_after_voucher=15, expires=now() + timedelta(minutes=10) + price=15, listed_price=15, price_after_voucher=15, + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) v = Voucher.objects.create( event=self.event, price_mode='set', value=Decimal('40.00'), max_usages=100, redeemed=100 @@ -2456,11 +2474,12 @@ class CartTest(CartTestMixin, TestCase): with scopes_disabled(): CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=23, listed_price=23, price_after_voucher=23, expires=now() + timedelta(minutes=10) + price=23, listed_price=23, price_after_voucher=23, + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.shirt, variation=self.shirt_blue, - price=8, expires=now() + timedelta(minutes=10), + price=8, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, ) gc = self.orga.issued_gift_cards.create(secret="GIFTCARD", currency=self.event.currency) gc.transactions.create(value=Decimal("12.24"), acceptor=self.orga) @@ -2573,7 +2592,8 @@ class CartAddonTest(CartTestMixin, TestCase): self.addon1.price_included = True self.addon1.save() cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) @@ -2594,11 +2614,13 @@ class CartAddonTest(CartTestMixin, TestCase): self.addon1.price_included = True self.addon1.save() cp1 = CartPosition.objects.create( - expires=now() - timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) cp2 = CartPosition.objects.create( - expires=now() - timedelta(minutes=10), item=self.workshop1, price=Decimal('0.00'), + expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.workshop1, price=Decimal('0.00'), event=self.event, cart_id=self.session_key, addon_to=cp1 ) self.cm.extend_expired_positions() @@ -2615,11 +2637,13 @@ class CartAddonTest(CartTestMixin, TestCase): self.quota_tickets.size = 0 self.quota_tickets.save() cp1 = CartPosition.objects.create( - expires=now() - timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) CartPosition.objects.create( - expires=now() - timedelta(minutes=10), item=self.workshop1, price=Decimal('0.00'), + expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.workshop1, price=Decimal('0.00'), event=self.event, cart_id=self.session_key, addon_to=cp1 ) self.cm.extend_expired_positions() @@ -2632,7 +2656,8 @@ class CartAddonTest(CartTestMixin, TestCase): self.addon1.price_included = True self.addon1.save() cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) @@ -2657,7 +2682,8 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_cart_set_simple_addon(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) @@ -2681,7 +2707,8 @@ class CartAddonTest(CartTestMixin, TestCase): self.workshopquota.subevent = se self.workshopquota.save() cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key, subevent=se ) @@ -2707,7 +2734,8 @@ class CartAddonTest(CartTestMixin, TestCase): self.workshopquota.subevent = se2 self.workshopquota.save() cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key, subevent=se ) @@ -2723,7 +2751,8 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_wrong_category(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) self.workshop1.category = self.category @@ -2740,7 +2769,8 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_invalid_parent(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id='other' ) with self.assertRaises(CartError): @@ -2756,7 +2786,8 @@ class CartAddonTest(CartTestMixin, TestCase): def test_no_quota_for_addon(self): self.workshopquota.delete() cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) with self.assertRaises(CartError): @@ -2771,7 +2802,8 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_unknown_addon_item(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) with self.assertRaises(CartError): @@ -2786,11 +2818,13 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_duplicate_items_for_other_cp(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) cp2 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) self.cm.set_addons([ @@ -2812,7 +2846,8 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_multi_allowed(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) self.addon1.max_count = 2 @@ -2836,7 +2871,8 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_number_exceeds_max(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) self.addon1.max_count = 2 @@ -2859,7 +2895,8 @@ class CartAddonTest(CartTestMixin, TestCase): self.workshopquota.size = 1 self.workshopquota.save() cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) self.addon1.max_count = 2 @@ -2882,7 +2919,8 @@ class CartAddonTest(CartTestMixin, TestCase): self.workshop3.free_price = True self.workshop3.save() cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) self.addon1.max_count = 5 @@ -2920,7 +2958,8 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_change_number(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) self.addon1.max_count = 5 @@ -2964,7 +3003,8 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_no_duplicate_items_for_same_cp(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) self.addon1.max_count = 2 @@ -2999,7 +3039,8 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_addon_max_count(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) with self.assertRaises(CartError): @@ -3034,7 +3075,8 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_addon_min_count(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) self.addon1.min_count = 2 @@ -3065,11 +3107,13 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_remove_with_addons(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) cp2 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.workshop1, price=Decimal('12.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.workshop1, price=Decimal('12.00'), event=self.event, cart_id=self.session_key, addon_to=cp1 ) self.cm.remove_item(cp1.pk) @@ -3080,11 +3124,13 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_remove_addons(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) cp2 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.workshop1, price=Decimal('12.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.workshop1, price=Decimal('12.00'), event=self.event, cart_id=self.session_key, addon_to=cp1 ) self.cm.set_addons([]) @@ -3094,11 +3140,13 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_remove_addons_below_min(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) cp2 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.workshop1, price=Decimal('12.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.workshop1, price=Decimal('12.00'), event=self.event, cart_id=self.session_key, addon_to=cp1 ) self.addon1.min_count = 1 @@ -3111,11 +3159,13 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_change_product(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.workshop1, price=Decimal('12.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.workshop1, price=Decimal('12.00'), event=self.event, cart_id=self.session_key, addon_to=cp1 ) self.cm.set_addons([ @@ -3133,11 +3183,13 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_unchanged(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.workshop1, price=Decimal('12.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.workshop1, price=Decimal('12.00'), event=self.event, cart_id=self.session_key, addon_to=cp1 ) self.cm.set_addons([ @@ -3153,7 +3205,8 @@ class CartAddonTest(CartTestMixin, TestCase): def test_exceed_max(self): self.event.settings.max_items_per_order = 1 cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) self.cm.set_addons([ @@ -3168,7 +3221,8 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_sold_out(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) self.workshopquota.size = 0 @@ -3186,11 +3240,13 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_sold_out_unchanged(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.workshop1, price=Decimal('12.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.workshop1, price=Decimal('12.00'), event=self.event, cart_id=self.session_key, addon_to=cp1 ) self.workshopquota.size = 0 @@ -3207,19 +3263,23 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_sold_out_swap_addons(self): cp1 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.workshop1, price=Decimal('12.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.workshop1, price=Decimal('12.00'), event=self.event, cart_id=self.session_key, addon_to=cp1 ) cp2 = CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) CartPosition.objects.create( - expires=now() + timedelta(minutes=10), item=self.workshop2, price=Decimal('12.00'), + expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.workshop2, price=Decimal('12.00'), event=self.event, cart_id=self.session_key, addon_to=cp2 ) self.workshopquota.size = 0 @@ -3245,11 +3305,13 @@ class CartAddonTest(CartTestMixin, TestCase): @classscope(attr='orga') def test_expand_expired(self): cp1 = CartPosition.objects.create( - expires=now() - timedelta(minutes=10), item=self.ticket, price=Decimal('23.00'), + expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('23.00'), event=self.event, cart_id=self.session_key ) cp2 = CartPosition.objects.create( - expires=now() - timedelta(minutes=10), item=self.workshop1, price=Decimal('12.00'), + expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.workshop1, price=Decimal('12.00'), event=self.event, cart_id=self.session_key, addon_to=cp1 ) self.cm.extend_expired_positions() @@ -3265,7 +3327,8 @@ class CartAddonTest(CartTestMixin, TestCase): v = Voucher.objects.create(item=self.ticket, value=Decimal('20.00'), event=self.event, price_mode='set', valid_until=now() + timedelta(days=2), max_usages=999, redeemed=0) cp1 = CartPosition.objects.create( - expires=now() - timedelta(minutes=10), item=self.ticket, price=Decimal('21.50'), + expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + item=self.ticket, price=Decimal('21.50'), event=self.event, cart_id=self.session_key, voucher=v ) self.cm.extend_expired_positions() @@ -3729,11 +3792,12 @@ class CartBundleTest(CartTestMixin, TestCase): def test_extend_keep_price(self): cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=21.5, expires=now() - timedelta(minutes=10) + price=21.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) b = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.5, expires=now() - timedelta(minutes=10), is_bundled=True + price=1.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=True ) self.cm.commit() cp.refresh_from_db() @@ -3745,11 +3809,12 @@ class CartBundleTest(CartTestMixin, TestCase): def test_extend_designated_price_changed(self): cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=21.5, expires=now() - timedelta(minutes=10) + price=21.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) b = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.5, expires=now() - timedelta(minutes=10), is_bundled=True + price=1.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=True ) self.bundle1.designated_price = Decimal('2.00') self.bundle1.save() @@ -3763,11 +3828,12 @@ class CartBundleTest(CartTestMixin, TestCase): def test_extend_designated_price_changed_beyond_base_price(self): cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=21.5, expires=now() - timedelta(minutes=10) + price=21.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) b = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.5, expires=now() - timedelta(minutes=10), is_bundled=True + price=1.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=True ) self.bundle1.designated_price = Decimal('40.00') self.bundle1.save() @@ -3781,11 +3847,12 @@ class CartBundleTest(CartTestMixin, TestCase): def test_voucher_apply_multiple(self): cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=21.5, expires=now() + timedelta(minutes=10) + price=21.5, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) b = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.5, expires=now() + timedelta(minutes=10), is_bundled=True + price=1.5, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=True ) v = Voucher.objects.create( event=self.event, price_mode='set', value=Decimal('4.00'), max_usages=100 @@ -3802,11 +3869,12 @@ class CartBundleTest(CartTestMixin, TestCase): def test_voucher_apply_multiple_reduce_beyond_designated_price(self): cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=21.5, expires=now() + timedelta(minutes=10) + price=21.5, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) b = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.5, expires=now() + timedelta(minutes=10), is_bundled=True + price=1.5, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=True ) v = Voucher.objects.create( event=self.event, price_mode='set', value=Decimal('0.00'), max_usages=100 @@ -3827,11 +3895,12 @@ class CartBundleTest(CartTestMixin, TestCase): self.trans.save() cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=21.5, expires=now() + timedelta(minutes=10) + price=21.5, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) b = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.5, expires=now() + timedelta(minutes=10), is_bundled=True + price=1.5, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=True ) v = Voucher.objects.create( event=self.event, price_mode='set', value=Decimal('0.00'), max_usages=100 @@ -3848,15 +3917,17 @@ class CartBundleTest(CartTestMixin, TestCase): def test_voucher_apply_affect_bundled(self): cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=21.5, expires=now() + timedelta(minutes=10) + price=21.5, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) a = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=2.5, expires=now() + timedelta(minutes=10), is_bundled=False + price=2.5, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=False ) b = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.5, expires=now() + timedelta(minutes=10), is_bundled=True + price=1.5, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=True ) v = Voucher.objects.create( event=self.event, price_mode='set', value=Decimal('0.00'), max_usages=100, @@ -3876,15 +3947,17 @@ class CartBundleTest(CartTestMixin, TestCase): def test_voucher_apply_affect_addons(self): cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=21.5, expires=now() + timedelta(minutes=10) + price=21.5, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) a = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.5, expires=now() + timedelta(minutes=10), is_bundled=False + price=1.5, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=False ) b = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.5, expires=now() + timedelta(minutes=10), is_bundled=True + price=1.5, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=True ) v = Voucher.objects.create( event=self.event, price_mode='set', value=Decimal('0.00'), max_usages=100, @@ -3904,11 +3977,12 @@ class CartBundleTest(CartTestMixin, TestCase): def test_extend_base_price_changed(self): cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=21.5, expires=now() - timedelta(minutes=10) + price=21.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) b = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.5, expires=now() - timedelta(minutes=10), is_bundled=True + price=1.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=True ) self.ticket.default_price = Decimal('25.00') self.ticket.save() @@ -3922,15 +3996,17 @@ class CartBundleTest(CartTestMixin, TestCase): def test_extend_bundled_and_addon(self): cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=21.5, expires=now() - timedelta(minutes=10) + price=21.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) a = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.5, expires=now() - timedelta(minutes=10), is_bundled=False + price=1.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=False ) b = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.5, expires=now() - timedelta(minutes=10), is_bundled=True + price=1.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=True ) self.cm.commit() cp.refresh_from_db() @@ -3955,11 +4031,12 @@ class CartBundleTest(CartTestMixin, TestCase): cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=21.5, expires=now() - timedelta(minutes=10) + price=21.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) a = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.5, expires=now() - timedelta(minutes=10), is_bundled=True + price=1.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=True ) self.cm.invoice_address = ia self.cm.recompute_final_prices_and_taxes() @@ -3995,11 +4072,12 @@ class CartBundleTest(CartTestMixin, TestCase): cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=21.5, expires=now() - timedelta(minutes=10) + price=21.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) a = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.5, expires=now() - timedelta(minutes=10), is_bundled=True + price=1.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=True ) self.cm.invoice_address = ia self.cm.recompute_final_prices_and_taxes() @@ -4130,11 +4208,12 @@ class CartBundleTest(CartTestMixin, TestCase): cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=21.5, expires=now() - timedelta(minutes=10), + price=21.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, ) a = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.47, expires=now() - timedelta(minutes=10), is_bundled=True, tax_rate=Decimal('5.00') + price=1.47, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=True, tax_rate=Decimal('5.00') ) self.cm.invoice_address = ia self.cm.recompute_final_prices_and_taxes() @@ -4179,11 +4258,12 @@ class CartBundleTest(CartTestMixin, TestCase): cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, - price=21.68, expires=now() - timedelta(minutes=10), tax_rate=Decimal('20.00') + price=21.68, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, tax_rate=Decimal('20.00') ) a = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.trans, addon_to=cp, - price=1.47, expires=now() - timedelta(minutes=10), is_bundled=True, tax_rate=Decimal('5.00') + price=1.47, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time, + is_bundled=True, tax_rate=Decimal('5.00') ) self.cm.invoice_address = ia self.cm.recompute_final_prices_and_taxes() @@ -4424,7 +4504,7 @@ class CartSeatingTest(CartTestMixin, TestCase): def test_add_with_seat_to_cart_twice(self): CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, seat=self.seat_a1, - price=23, expires=now() + timedelta(minutes=10) + price=23, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) with scopes_disabled(): objs = list(CartPosition.objects.filter(cart_id=self.session_key, event=self.event)) @@ -4440,7 +4520,7 @@ class CartSeatingTest(CartTestMixin, TestCase): def test_add_used_seat_to_cart(self): CartPosition.objects.create( event=self.event, cart_id='aaa', item=self.ticket, seat=self.seat_a1, - price=23, expires=now() + timedelta(minutes=10) + price=23, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), { 'seat_%d' % self.ticket.id: self.seat_a1.seat_guid, @@ -4454,7 +4534,7 @@ class CartSeatingTest(CartTestMixin, TestCase): with scopes_disabled(): cp = CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, seat=self.seat_a1, - price=21.5, expires=now() - timedelta(minutes=10) + price=21.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) self.cm.commit() cp.refresh_from_db() @@ -4465,11 +4545,11 @@ class CartSeatingTest(CartTestMixin, TestCase): with scopes_disabled(): CartPosition.objects.create( event=self.event, cart_id=self.session_key, item=self.ticket, seat=self.seat_a1, - price=21.5, expires=now() - timedelta(minutes=10) + price=21.5, expires=now() - timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) CartPosition.objects.create( event=self.event, cart_id='secondcart', item=self.ticket, seat=self.seat_a1, - price=21.5, expires=now() + timedelta(minutes=10) + price=21.5, expires=now() + timedelta(minutes=10), max_extend=now() + 10 * self.cart_reservation_time ) with self.assertRaises(CartError): self.cm.commit()