def test_staff_only_behavior(admin_user, regular_user): payment_method = get_default_payment_method() component = StaffOnlyBehaviorComponent.objects.create() payment_method.behavior_components.add(component) source = BasketishOrderSource(get_default_shop()) # anonymous user unavailability_reasons = list( payment_method.get_unavailability_reasons(source)) assert len(unavailability_reasons) == 1 # regular user source.creator = regular_user unavailability_reasons = list( payment_method.get_unavailability_reasons(source)) assert len(unavailability_reasons) == 1 # admin source.creator = admin_user unavailability_reasons = list( payment_method.get_unavailability_reasons(source)) assert len(unavailability_reasons) == 0
def get_order_and_source(admin_user, product, language, language_fallback): # create original source to tamper with contact = get_person_contact(admin_user) contact.language = language contact.save() assert contact.language == language # contact language is naive source = BasketishOrderSource(get_default_shop()) source.status = get_initial_order_status() source.billing_address = MutableAddress.objects.create( name="Original Billing") source.shipping_address = MutableAddress.objects.create( name="Original Shipping") source.customer = contact source.payment_method = get_default_payment_method() source.shipping_method = get_default_shipping_method() source.add_line( type=OrderLineType.PRODUCT, product=product, supplier=get_default_supplier(), quantity=1, base_unit_price=source.create_price(10), ) source.add_line( type=OrderLineType.OTHER, quantity=1, base_unit_price=source.create_price(10), require_verification=True, ) assert len(source.get_lines()) == 2 source.creator = admin_user assert not source._language # is None because it was not directly assigned assert source.language == language_fallback creator = OrderCreator() order = creator.create_order(source) assert order.language == source.language return order, source