mirror of
https://github.com/pretix/pretix.git
synced 2026-05-06 15:24:02 +00:00
AddOnsStep: Use post data as initial data if exists (Z#23232311)
This commit is contained in:
@@ -99,6 +99,15 @@ class BaseCheckoutTestCase:
|
||||
self.workshopquota.variations.add(self.workshop2a)
|
||||
self.workshopquota.variations.add(self.workshop2b)
|
||||
|
||||
self.parkingcat = ItemCategory.objects.create(name="Parking", is_addon=True, event=self.event)
|
||||
self.parkingquota = Quota.objects.create(event=self.event, name='Parking', size=5)
|
||||
self.parking1 = Item.objects.create(event=self.event, name='Premium Parking',
|
||||
category=self.parkingcat, default_price=Decimal('15.00'))
|
||||
self.parking2 = Item.objects.create(event=self.event, name='Standard Parking',
|
||||
category=self.parkingcat, default_price=Decimal('5.00'))
|
||||
self.parkingquota.items.add(self.parking1)
|
||||
self.parkingquota.items.add(self.parking2)
|
||||
|
||||
def _set_session(self, key, value):
|
||||
session = self.client.session
|
||||
session['carts'][get_cart_session_key(self.client, self.event)][key] = value
|
||||
@@ -4202,6 +4211,58 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
assert '35.29' in response.content.decode()
|
||||
assert '10.08' in response.content.decode()
|
||||
|
||||
def test_set_addons_invalid_initial(self):
|
||||
self.event.settings.locales = ['de', 'en']
|
||||
self.event.settings.locale = 'de'
|
||||
with scopes_disabled():
|
||||
ItemAddOn.objects.create(base_item=self.ticket, addon_category=self.workshopcat, min_count=1)
|
||||
ItemAddOn.objects.create(base_item=self.ticket, addon_category=self.parkingcat, min_count=1)
|
||||
cp1 = CartPosition.objects.create(
|
||||
event=self.event, cart_id=self.session_key, item=self.ticket,
|
||||
price=23, expires=now() - timedelta(minutes=10)
|
||||
)
|
||||
self.workshop1.free_price = True
|
||||
self.workshop1.save()
|
||||
self.workshop2.free_price = True
|
||||
self.workshop2.save()
|
||||
|
||||
ws1_val = 'cp_{}_item_{}'.format(cp1.pk, self.workshop1.pk)
|
||||
ws1_price = 'cp_{}_item_{}_price'.format(cp1.pk, self.workshop1.pk)
|
||||
ws2a_val = 'cp_{}_variation_{}_{}'.format(cp1.pk, self.workshop2.pk, self.workshop2a.pk)
|
||||
ws2a_price = 'cp_{}_variation_{}_{}_price'.format(cp1.pk, self.workshop2.pk, self.workshop2a.pk)
|
||||
p1_val = 'cp_{}_item_{}'.format(cp1.pk, self.parking1.pk)
|
||||
p2_val = 'cp_{}_item_{}'.format(cp1.pk, self.parking2.pk)
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/addons/' % (self.orga.slug, self.event.slug), {
|
||||
ws1_val: '1',
|
||||
ws2a_val: '1',
|
||||
})
|
||||
assert response.status_code == 200
|
||||
with scopes_disabled():
|
||||
assert cp1.addons.count() == 0
|
||||
doc = BeautifulSoup(response.text, 'lxml')
|
||||
assert doc.find('input', {'name': ws1_val}).attrs.get('checked')
|
||||
assert doc.find('input', {'name': ws2a_val}).attrs.get('checked')
|
||||
assert not doc.find('input', {'name': p1_val}).attrs.get('checked')
|
||||
assert not doc.find('input', {'name': p2_val}).attrs.get('checked')
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/addons/' % (self.orga.slug, self.event.slug), {
|
||||
ws1_val: '1',
|
||||
ws1_price: '222,22',
|
||||
ws2a_val: '1',
|
||||
ws2a_price: '333.33',
|
||||
})
|
||||
assert response.status_code == 200
|
||||
with scopes_disabled():
|
||||
assert cp1.addons.count() == 0
|
||||
doc = BeautifulSoup(response.text, 'lxml')
|
||||
assert doc.find('input', {'name': ws1_val}).attrs.get('checked')
|
||||
assert doc.find('input', {'name': ws1_price}).attrs.get('value') in ['222.22', '222,22']
|
||||
assert doc.find('input', {'name': ws2a_val}).attrs.get('checked')
|
||||
assert doc.find('input', {'name': ws2a_price}).attrs.get('value') in ['333.33', '333,33']
|
||||
assert not doc.find('input', {'name': p1_val}).attrs.get('checked')
|
||||
assert not doc.find('input', {'name': p2_val}).attrs.get('checked')
|
||||
|
||||
def test_confirm_subevent_presale_not_yet(self):
|
||||
with scopes_disabled():
|
||||
self.event.has_subevents = True
|
||||
|
||||
Reference in New Issue
Block a user