Add approval requirement option to product variations (#2381)

This commit is contained in:
ser8phin
2022-01-05 18:04:12 +01:00
committed by GitHub
parent 223b160c0c
commit 7a4db8ea23
11 changed files with 103 additions and 9 deletions

View File

@@ -376,6 +376,7 @@ def test_item_detail_variations(token_client, organizer, event, team, item):
"active": True,
"description": None,
"position": 0,
"require_approval": False,
"require_membership": False,
"require_membership_hidden": False,
"require_membership_types": [],
@@ -508,6 +509,7 @@ def test_item_create_with_variation(token_client, organizer, event, item, catego
"en": "Comment"
},
"active": True,
"require_approval": True,
"require_membership": False,
"require_membership_hidden": False,
"require_membership_types": [],
@@ -525,6 +527,7 @@ def test_item_create_with_variation(token_client, organizer, event, item, catego
new_item = Item.objects.get(pk=resp.data['id'])
assert new_item.variations.first().value.localize('de') == "Kommentar"
assert new_item.variations.first().value.localize('en') == "Comment"
assert new_item.variations.first().require_approval is True
assert set(new_item.variations.first().sales_channels) == set(get_all_sales_channels().keys())
@@ -1212,6 +1215,7 @@ TEST_VARIATIONS_RES = {
"position": 0,
"default_price": None,
"price": "23.00",
"require_approval": False,
"require_membership": False,
"require_membership_hidden": False,
"require_membership_types": [],
@@ -1230,6 +1234,7 @@ TEST_VARIATIONS_UPDATE = {
"description": None,
"position": 1,
"default_price": "20.0",
"require_approval": False,
"require_membership": False,
"require_membership_hidden": False,
"require_membership_types": [],

View File

@@ -2797,6 +2797,46 @@ class CheckoutTestCase(BaseCheckoutTestCase, TestCase):
with scopes_disabled():
self.assertEqual(Order.objects.first().locale, 'de')
def test_variation_require_approval(self):
self.workshop2a.require_approval = True
self.workshop2a.save()
with scopes_disabled():
cr1 = CartPosition.objects.create(
event=self.event, cart_id=self.session_key, item=self.workshop2, variation=self.workshop2a,
price=0, expires=now() + timedelta(minutes=10)
)
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
doc = BeautifulSoup(response.content.decode(), "lxml")
self.assertEqual(len(doc.select(".thank-you")), 1)
with scopes_disabled():
self.assertFalse(CartPosition.objects.filter(id=cr1.id).exists())
self.assertEqual(Order.objects.count(), 1)
self.assertEqual(Order.objects.first().status, Order.STATUS_PENDING)
self.assertTrue(Order.objects.first().require_approval)
self.assertEqual(OrderPosition.objects.count(), 1)
self.assertEqual(Invoice.objects.count(), 0)
def test_item_with_variations_require_approval(self):
self.workshop2.require_approval = True
self.workshop2.save()
with scopes_disabled():
cr1 = CartPosition.objects.create(
event=self.event, cart_id=self.session_key, item=self.workshop2, variation=self.workshop2a,
price=0, expires=now() + timedelta(minutes=10)
)
response = self.client.post('/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug), follow=True)
doc = BeautifulSoup(response.content.decode(), "lxml")
self.assertEqual(len(doc.select(".thank-you")), 1)
with scopes_disabled():
self.assertFalse(CartPosition.objects.filter(id=cr1.id).exists())
self.assertEqual(Order.objects.count(), 1)
self.assertEqual(Order.objects.first().status, Order.STATUS_PENDING)
self.assertTrue(Order.objects.first().require_approval)
self.assertEqual(OrderPosition.objects.count(), 1)
self.assertEqual(Invoice.objects.count(), 0)
class QuestionsTestCase(BaseCheckoutTestCase, TestCase):