def test_protected_fields(): activate("en") shop = Shop.objects.create( name="testshop", identifier="testshop", status=ShopStatus.ENABLED, public_name="test shop", domain="derp", currency="EUR" ) assert shop.name == "testshop" assert shop.currency == "EUR" shop_form = ShopBaseForm(instance=shop, languages=settings.LANGUAGES) assert not shop_form._get_protected_fields() # No protected fields just yet, right? data = get_form_data(shop_form, prepared=True) shop_form = ShopBaseForm(data=data, instance=shop, languages=settings.LANGUAGES) _test_cleanliness(shop_form) shop_form.save() # Now let's make it protected! create_product(printable_gibberish(), shop=shop, supplier=get_default_supplier()) order = create_random_order(customer=create_random_person(), shop=shop) assert order.shop == shop # And try again... data["currency"] = "XBT" # Bitcoins! shop_form = ShopBaseForm(data=data, instance=shop, languages=settings.LANGUAGES) assert shop_form._get_protected_fields() # So protected! _test_cleanliness(shop_form) shop = shop_form.save() assert shop.currency == "EUR" # But the shop form ignored the change . . .
def test_coupon_amount_limit(): coupon = Coupon.objects.create(code="TEST", active=True) get_default_campaign(coupon) contact = create_random_person() shop = get_default_shop() product = create_product("test", shop=shop, supplier=get_default_supplier(), default_price="12") order = create_random_order(customer=contact) for x in range(50): coupon.use(order) assert coupon.usages.count() == 50 coupon.increase_usage_limit_by(5) coupon.save() assert coupon.usage_limit == 55 assert coupon.can_use_code(contact) for x in range(5): coupon.use(order) assert coupon.usages.count() == 55 assert not Coupon.is_usable(coupon.code, order.customer) assert coupon.usages.count() == 55 # no change, limit met
def get_initialized_test_event(): get_default_product() customer = create_random_person() order = create_random_order(customer) return ATestEvent(order_language=order.language, order=order, just_some_text=random_title())
def get_initialized_test_event(): get_default_product() customer = create_random_person() order = create_random_order(customer) return ATestEvent( order_language=order.language, order=order, just_some_text=random_title() )
def test_add_order_log_entry(admin_user, rf): order = create_random_order(customer=create_random_person(), products=(get_default_product(),)) assert not OrderLogEntry.objects.filter(target=order).exists() view = NewLogEntryView.as_view() test_message = "test_order" request = apply_request_middleware(rf.post("/", {"message": test_message}), user=admin_user) response = view(request, pk=order.pk) assert response.status_code < 400 assert OrderLogEntry.objects.filter(target=order).exists() assert OrderLogEntry.objects.filter(target=order).first().message == test_message
def test_order_set_status_works(admin_user, rf): order = create_random_order(customer=create_random_person(), products=(get_default_product(),)) order.create_shipment_of_all_products() # Need to be shipped to set complete assert order.status.role == OrderStatusRole.INITIAL complete_status = OrderStatus.objects.get_default_complete() view = OrderSetStatusView.as_view() request = apply_request_middleware(rf.post("/", {"status": complete_status.pk}), user=admin_user) response = view(request, pk=order.pk) assert response.status_code < 400 order = Order.objects.get(pk=order.pk) assert order.status_id == complete_status.id assert order.log_entries.filter(identifier="status_change").exists()
def test_order_set_status_completed_works(admin_user, rf): order = create_random_order(customer=create_random_person(), products=(get_default_product(),)) order.create_shipment_of_all_products() # Need to be shipped to set complete assert order.status.role == OrderStatusRole.INITIAL complete_status = OrderStatus.objects.get_default_complete() view = OrderSetStatusView.as_view() request = apply_request_middleware(rf.post("/", {"status": complete_status.pk}), user=admin_user) response = view(request, pk=order.pk) assert response.status_code < 400 order = Order.objects.get(pk=order.pk) assert order.status_id == complete_status.id assert order.log_entries.filter(identifier="status_change").exists()
def test_order_set_status_canceled_works(admin_user, rf): order = create_random_order(customer=create_random_person(), products=(get_default_product(),)) assert order.shipping_status == ShippingStatus.NOT_SHIPPED assert order.status.role == OrderStatusRole.INITIAL canceled_status = OrderStatus.objects.get_default_canceled() view = OrderSetStatusView.as_view() request = apply_request_middleware(rf.post("/", {"status": canceled_status.pk}), user=admin_user) response = view(request, pk=order.pk) assert response.status_code < 400 order = Order.objects.get(pk=order.pk) assert order.status_id == canceled_status.id assert order.log_entries.filter(identifier="status_change").exists()
def test_add_order_log_entry(admin_user, rf): order = create_random_order(customer=create_random_person(), products=(get_default_product(), )) assert not OrderLogEntry.objects.filter(target=order).exists() view = NewLogEntryView.as_view() test_message = "test_order" request = apply_request_middleware(rf.post("/", {"message": test_message}), user=admin_user) response = view(request, pk=order.pk) assert response.status_code < 400 assert OrderLogEntry.objects.filter(target=order).exists() assert OrderLogEntry.objects.filter( target=order).first().message == test_message
def test_order_set_status_canceled_works(admin_user, rf): order = create_random_order(customer=create_random_person(), products=(get_default_product(), )) assert order.shipping_status == ShippingStatus.NOT_SHIPPED assert order.status.role == OrderStatusRole.INITIAL canceled_status = OrderStatus.objects.get_default_canceled() view = OrderSetStatusView.as_view() request = apply_request_middleware(rf.post("/", {"status": canceled_status.pk}), user=admin_user) response = view(request, pk=order.pk) assert response.status_code < 400 order = Order.objects.get(pk=order.pk) assert order.status_id == canceled_status.id assert order.log_entries.filter(identifier="status_change").exists()
def test_protected_fields(): activate("en") shop = Shop.objects.create(name="testshop", identifier="testshop", status=ShopStatus.ENABLED, public_name="test shop", domain="derp", currency="EUR") assert shop.name == "testshop" assert shop.currency == "EUR" shop_form = ShopForm(instance=shop, languages=settings.LANGUAGES) assert not shop_form._get_protected_fields( ) # No protected fields just yet, right? data = get_form_data(shop_form, prepared=True) shop_form = ShopForm(data=data, instance=shop, languages=settings.LANGUAGES) _test_cleanliness(shop_form) shop_form.save() # Now let's make it protected! create_product(printable_gibberish(), shop=shop, supplier=get_default_supplier()) order = create_random_order(customer=create_random_person(), shop=shop) assert order.shop == shop # And try again... data["currency"] = "XBT" # Bitcoins! shop_form = ShopForm(data=data, instance=shop, languages=settings.LANGUAGES) assert shop_form._get_protected_fields() # So protected! _test_cleanliness(shop_form) shop = shop_form.save() assert shop.currency == "EUR" # But the shop form ignored the change . . .
def mock_order(self): """ Create a random order """ return create_random_order(completion_probability=0.8)
def test_order_chart_works(): order = create_random_order(customer=create_random_person(), products=(get_default_product(),)) chart = OrderValueChartDashboardBlock("test", order.currency).get_chart() assert len(chart.series[0]) > 0
def random_order(): # These are prerequisites for random orders contact = create_random_person() product = get_default_product() return create_random_order(contact, [product])