mirror of
https://github.com/pretix/pretix.git
synced 2026-05-05 15:14:04 +00:00
New implementation of sales channels (#4111)
Co-authored-by: Martin Gross <gross@rami.io>
This commit is contained in:
@@ -49,6 +49,7 @@ def test_full_clone_same_organizer():
|
||||
organizer = Organizer.objects.create(name='Dummy', slug='dummy')
|
||||
membership_type = organizer.membership_types.create(name="Membership")
|
||||
plan = SeatingPlan.objects.create(name="Plan", organizer=organizer, layout="{}")
|
||||
sc = organizer.sales_channels.get(identifier="web")
|
||||
|
||||
event = Event.objects.create(
|
||||
organizer=organizer, name='Dummy', slug='dummy',
|
||||
@@ -57,7 +58,9 @@ def test_full_clone_same_organizer():
|
||||
date_to=now() + timedelta(hours=1),
|
||||
testmode=True,
|
||||
seating_plan=plan,
|
||||
all_sales_channels=False,
|
||||
)
|
||||
event.limit_sales_channels.add(sc)
|
||||
|
||||
item_meta = event.item_meta_properties.create(name="Bla")
|
||||
tax_rule = event.tax_rules.create(name="VAT", rate=19)
|
||||
@@ -67,13 +70,16 @@ def test_full_clone_same_organizer():
|
||||
q2 = event.quotas.create(name="Quota 2", size=0, closed=True)
|
||||
|
||||
item1 = event.items.create(category=category, tax_rule=tax_rule, name="Ticket", default_price=23,
|
||||
grant_membership_type=membership_type, hidden_if_available=q2)
|
||||
grant_membership_type=membership_type, hidden_if_available=q2,
|
||||
all_sales_channels=False)
|
||||
item1.limit_sales_channels.add(sc)
|
||||
# todo: test that item pictures are copied, not linked
|
||||
ItemMetaValue.objects.create(item=item1, property=item_meta, value="Foo")
|
||||
assert item1.meta_data
|
||||
item2 = event.items.create(category=category, tax_rule=tax_rule, name="T-shirt", default_price=15,
|
||||
hidden_if_item_available=item1)
|
||||
item2v = item2.variations.create(value="red", default_price=15)
|
||||
item2v = item2.variations.create(value="red", default_price=15, all_sales_channels=False)
|
||||
item2v.limit_sales_channels.add(sc)
|
||||
item2v.meta_values.create(property=item_meta, value="Bar")
|
||||
item2.require_membership_types.add(membership_type)
|
||||
ItemAddOn.objects.create(base_item=item1, addon_category=category)
|
||||
@@ -117,6 +123,7 @@ def test_full_clone_same_organizer():
|
||||
],
|
||||
})
|
||||
clist.limit_products.add(item1)
|
||||
clist.auto_checkin_sales_channels.add(sc)
|
||||
|
||||
copied_event = Event.objects.create(
|
||||
organizer=organizer, name='Dummy2', slug='dummy2',
|
||||
@@ -129,6 +136,7 @@ def test_full_clone_same_organizer():
|
||||
# Verify event properties
|
||||
assert abs(copied_event.date_admission - (copied_event.date_from - timedelta(hours=1))) < timedelta(minutes=1)
|
||||
assert copied_event.testmode
|
||||
assert copied_event.limit_sales_channels.get() == sc
|
||||
|
||||
# Verify that we actually *copied*, not just moved objects over
|
||||
assert event.tax_rules.count() == copied_event.tax_rules.count() == 1
|
||||
@@ -139,6 +147,7 @@ def test_full_clone_same_organizer():
|
||||
assert event.questions.count() == copied_event.questions.count() == 2
|
||||
assert event.seat_category_mappings.count() == copied_event.seat_category_mappings.count() == 1
|
||||
assert event.seats.count() == copied_event.seats.count() == 1
|
||||
assert event.limit_sales_channels.get() == sc
|
||||
|
||||
# Verify relationship integrity
|
||||
copied_q1 = copied_event.quotas.get(name=q1.name)
|
||||
@@ -148,11 +157,14 @@ def test_full_clone_same_organizer():
|
||||
copied_item2 = copied_event.items.get(name=item2.name)
|
||||
assert copied_item1.tax_rule == copied_event.tax_rules.get()
|
||||
assert copied_item1.category == copied_event.categories.get()
|
||||
assert copied_item1.limit_sales_channels.get() == sc
|
||||
assert copied_item1.meta_data == item1.meta_data
|
||||
assert copied_item2.variations.get().meta_data == item2v.meta_data
|
||||
assert copied_item1.hidden_if_available == copied_q2
|
||||
assert copied_item1.grant_membership_type == membership_type
|
||||
assert copied_item2.variations.count() == 1
|
||||
assert copied_item2.variations.get().limit_sales_channels.get() == sc
|
||||
assert copied_item2.require_membership_types.count() == 1
|
||||
assert copied_item2.require_membership_types.get() == membership_type
|
||||
assert copied_item1.addons.get().addon_category == copied_event.categories.get()
|
||||
assert copied_item1.bundles.get().bundled_item == copied_item2
|
||||
@@ -194,6 +206,7 @@ def test_full_clone_same_organizer():
|
||||
],
|
||||
}
|
||||
assert copied_clist.limit_products.get() == copied_item1
|
||||
assert copied_clist.auto_checkin_sales_channels.get() == sc
|
||||
|
||||
# todo: test that the plugin hook is called
|
||||
# todo: test custom style
|
||||
@@ -208,6 +221,8 @@ def test_full_clone_cross_organizer_differences():
|
||||
organizer2 = Organizer.objects.create(name='Dummy2', slug='dummy2')
|
||||
membership_type = organizer.membership_types.create(name="Membership")
|
||||
plan = SeatingPlan.objects.create(name="Plan", organizer=organizer, layout="{}")
|
||||
sc = organizer.sales_channels.get(identifier="web")
|
||||
sc2 = organizer2.sales_channels.get(identifier="web")
|
||||
|
||||
event = Event.objects.create(
|
||||
organizer=organizer, name='Dummy', slug='dummy',
|
||||
@@ -216,13 +231,20 @@ def test_full_clone_cross_organizer_differences():
|
||||
date_to=now() + timedelta(hours=1),
|
||||
testmode=True,
|
||||
seating_plan=plan,
|
||||
all_sales_channels=False,
|
||||
)
|
||||
event.limit_sales_channels.add(sc)
|
||||
|
||||
item1 = event.items.create(name="Ticket", default_price=23,
|
||||
grant_membership_type=membership_type)
|
||||
grant_membership_type=membership_type,
|
||||
all_sales_channels=False)
|
||||
item1.limit_sales_channels.add(sc)
|
||||
item2 = event.items.create(name="T-shirt", default_price=15)
|
||||
item2.require_membership_types.add(membership_type)
|
||||
|
||||
clist = event.checkin_lists.create(name="Default")
|
||||
clist.auto_checkin_sales_channels.add(sc)
|
||||
|
||||
copied_event = Event.objects.create(
|
||||
organizer=organizer2, name='Dummy2', slug='dummy2',
|
||||
date_from=datetime.datetime(2022, 4, 15, 9, 0, 0, tzinfo=datetime.timezone.utc),
|
||||
@@ -234,9 +256,14 @@ def test_full_clone_cross_organizer_differences():
|
||||
assert organizer2.seating_plans.count() == 1
|
||||
assert organizer2.seating_plans.get().layout == plan.layout
|
||||
assert copied_event.seating_plan.organizer == organizer2
|
||||
assert copied_event.limit_sales_channels.get() == sc2
|
||||
assert event.seating_plan.organizer == organizer
|
||||
|
||||
copied_item1 = copied_event.items.get(name=item1.name)
|
||||
copied_item2 = copied_event.items.get(name=item2.name)
|
||||
assert copied_item1.grant_membership_type is None
|
||||
assert copied_item2.require_membership_types.count() == 0
|
||||
assert copied_item1.limit_sales_channels.get() == sc2
|
||||
|
||||
copied_clist = copied_event.checkin_lists.get()
|
||||
assert copied_clist.auto_checkin_sales_channels.get() == sc2
|
||||
|
||||
Reference in New Issue
Block a user