Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

test_weight_based_shipping_benefit.py 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from decimal import Decimal as D
  2. from django.test import TestCase
  3. from oscar.apps.offer import models, utils
  4. from oscar.apps.shipping.repository import Repository
  5. from oscar.apps.shipping.models import WeightBased
  6. from oscar.test.basket import add_product
  7. from oscar.test import factories
  8. def create_offer():
  9. range = models.Range.objects.create(
  10. name="All products", includes_all_products=True)
  11. condition = models.CountCondition.objects.create(
  12. range=range,
  13. type=models.Condition.COUNT,
  14. value=1)
  15. benefit = models.ShippingFixedPriceBenefit.objects.create(
  16. type=models.Benefit.SHIPPING_FIXED_PRICE,
  17. value=D('1.00'))
  18. return models.ConditionalOffer.objects.create(
  19. condition=condition,
  20. benefit=benefit,
  21. offer_type=models.ConditionalOffer.SITE)
  22. class TestWeightBasedShippingBenefit(TestCase):
  23. def setUp(self):
  24. product = factories.create_product(attributes={'weight': 5}, num_in_stock=10)
  25. factories.create_shipping_weight_band(10, 10)
  26. self.basket = factories.create_basket(empty=True)
  27. self.basket.add_product(product)
  28. self.offer = create_offer()
  29. def test_has_discount_recorded_correctly_when_order_is_placed(self):
  30. add_product(self.basket, D('12.00'), 1)
  31. utils.Applicator().apply(self.basket)
  32. self.assertEqual(1, len(self.basket.offer_applications))
  33. shipping_method = WeightBased.objects.first()
  34. shipping_method = Repository().apply_shipping_offer(
  35. self.basket, shipping_method, self.offer)
  36. order = factories.create_order(basket=self.basket,
  37. shipping_method=shipping_method)
  38. discounts = order.discounts.all()
  39. self.assertEqual(1, len(discounts))
  40. discount = discounts[0]
  41. self.assertTrue(discount.is_shipping_discount)
  42. self.assertEqual(D('9.00'), discount.amount)