Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. from decimal import Decimal as D
  2. from django.utils import unittest
  3. from django.test.client import Client
  4. from oscar.apps.shipping.methods import FreeShipping, FixedPriceShipping
  5. from oscar.apps.shipping.models import OrderAndItemLevelChargeMethod
  6. from oscar.apps.basket.models import Basket
  7. from oscar.test.helpers import create_product
  8. class FreeShippingTest(unittest.TestCase):
  9. def test_shipping_is_free(self):
  10. method = FreeShipping()
  11. basket = Basket()
  12. method.set_basket(basket)
  13. self.assertEquals(D('0.00'), method.basket_charge_incl_tax())
  14. self.assertEquals(D('0.00'), method.basket_charge_excl_tax())
  15. class FixedPriceShippingTest(unittest.TestCase):
  16. def test_fixed_price_shipping_charges_for_empty_basket(self):
  17. method = FixedPriceShipping(D('10.00'), D('10.00'))
  18. basket = Basket()
  19. method.set_basket(basket)
  20. self.assertEquals(D('10.00'), method.basket_charge_incl_tax())
  21. self.assertEquals(D('10.00'), method.basket_charge_excl_tax())
  22. def test_fixed_price_shipping_assumes_no_tax(self):
  23. method = FixedPriceShipping(D('10.00'))
  24. basket = Basket()
  25. method.set_basket(basket)
  26. self.assertEquals(D('10.00'), method.basket_charge_excl_tax())
  27. class OrderAndItemLevelChargeMethodTest(unittest.TestCase):
  28. def setUp(self):
  29. self.method = OrderAndItemLevelChargeMethod(price_per_order=D('5.00'), price_per_item=D('1.00'))
  30. self.basket = Basket.objects.create()
  31. self.method.set_basket(self.basket)
  32. def test_order_level_charge_for_empty_basket(self):
  33. self.assertEquals(D('5.00'), self.method.basket_charge_incl_tax())
  34. def test_single_item_basket(self):
  35. p = create_product()
  36. self.basket.add_product(p)
  37. self.assertEquals(D('5.00') + D('1.00'), self.method.basket_charge_incl_tax())
  38. def test_multi_item_basket(self):
  39. p = create_product()
  40. self.basket.add_product(p, 7)
  41. self.assertEquals(D('5.00') + 7*D('1.00'), self.method.basket_charge_incl_tax())
  42. class ZeroFreeShippingThresholdTest(unittest.TestCase):
  43. def setUp(self):
  44. self.method = OrderAndItemLevelChargeMethod(price_per_order=D('10.00'), free_shipping_threshold=D('0.00'))
  45. self.basket = Basket.objects.create()
  46. self.method.set_basket(self.basket)
  47. def test_free_shipping_with_empty_basket(self):
  48. self.assertEquals(D('0.00'), self.method.basket_charge_incl_tax())
  49. def test_free_shipping_with_nonempty_basket(self):
  50. p = create_product(D('5.00'))
  51. self.basket.add_product(p)
  52. self.assertEquals(D('0.00'), self.method.basket_charge_incl_tax())
  53. class NonZeroFreeShippingThresholdTest(unittest.TestCase):
  54. def setUp(self):
  55. self.method = OrderAndItemLevelChargeMethod(price_per_order=D('10.00'), free_shipping_threshold=D('20.00'))
  56. self.basket = Basket.objects.create()
  57. self.method.set_basket(self.basket)
  58. def test_basket_below_threshold(self):
  59. p = create_product(D('5.00'))
  60. self.basket.add_product(p)
  61. self.assertEquals(D('10.00'), self.method.basket_charge_incl_tax())
  62. def test_basket_on_threshold(self):
  63. p = create_product(D('5.00'))
  64. self.basket.add_product(p, 4)
  65. self.assertEquals(D('0.00'), self.method.basket_charge_incl_tax())
  66. def test_basket_above_threshold(self):
  67. p = create_product(D('5.00'))
  68. self.basket.add_product(p, 8)
  69. self.assertEquals(D('0.00'), self.method.basket_charge_incl_tax())