You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

tests.py 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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. from oscar.test.decorators import dataProvider
  9. class FreeShippingTest(unittest.TestCase):
  10. def test_shipping_is_free(self):
  11. method = FreeShipping()
  12. basket = Basket()
  13. method.set_basket(basket)
  14. self.assertEquals(D('0.00'), method.basket_charge_incl_tax())
  15. self.assertEquals(D('0.00'), method.basket_charge_excl_tax())
  16. class FixedPriceShippingTest(unittest.TestCase):
  17. def test_fixed_price_shipping_charges_for_empty_basket(self):
  18. method = FixedPriceShipping(D('10.00'), D('10.00'))
  19. basket = Basket()
  20. method.set_basket(basket)
  21. self.assertEquals(D('10.00'), method.basket_charge_incl_tax())
  22. self.assertEquals(D('10.00'), method.basket_charge_excl_tax())
  23. def test_fixed_price_shipping_assumes_no_tax(self):
  24. method = FixedPriceShipping(D('10.00'))
  25. basket = Basket()
  26. method.set_basket(basket)
  27. self.assertEquals(D('10.00'), method.basket_charge_excl_tax())
  28. shipping_values = lambda: [('1.00',),
  29. ('5.00',),
  30. ('10.00',),
  31. ('12.00',)]
  32. @dataProvider(shipping_values)
  33. def test_different_values(self, value):
  34. method = FixedPriceShipping(D(value))
  35. basket = Basket()
  36. method.set_basket(basket)
  37. self.assertEquals(D(value), method.basket_charge_excl_tax())
  38. class OrderAndItemLevelChargeMethodTest(unittest.TestCase):
  39. def setUp(self):
  40. self.method = OrderAndItemLevelChargeMethod(price_per_order=D('5.00'), price_per_item=D('1.00'))
  41. self.basket = Basket.objects.create()
  42. self.method.set_basket(self.basket)
  43. def test_order_level_charge_for_empty_basket(self):
  44. self.assertEquals(D('5.00'), self.method.basket_charge_incl_tax())
  45. def test_single_item_basket(self):
  46. p = create_product()
  47. self.basket.add_product(p)
  48. self.assertEquals(D('5.00') + D('1.00'), self.method.basket_charge_incl_tax())
  49. def test_multi_item_basket(self):
  50. p = create_product()
  51. self.basket.add_product(p, 7)
  52. self.assertEquals(D('5.00') + 7*D('1.00'), self.method.basket_charge_incl_tax())
  53. class ZeroFreeShippingThresholdTest(unittest.TestCase):
  54. def setUp(self):
  55. self.method = OrderAndItemLevelChargeMethod(price_per_order=D('10.00'), free_shipping_threshold=D('0.00'))
  56. self.basket = Basket.objects.create()
  57. self.method.set_basket(self.basket)
  58. def test_free_shipping_with_empty_basket(self):
  59. self.assertEquals(D('0.00'), self.method.basket_charge_incl_tax())
  60. def test_free_shipping_with_nonempty_basket(self):
  61. p = create_product(D('5.00'))
  62. self.basket.add_product(p)
  63. self.assertEquals(D('0.00'), self.method.basket_charge_incl_tax())
  64. class NonZeroFreeShippingThresholdTest(unittest.TestCase):
  65. def setUp(self):
  66. self.method = OrderAndItemLevelChargeMethod(price_per_order=D('10.00'), free_shipping_threshold=D('20.00'))
  67. self.basket = Basket.objects.create()
  68. self.method.set_basket(self.basket)
  69. def test_basket_below_threshold(self):
  70. p = create_product(D('5.00'))
  71. self.basket.add_product(p)
  72. self.assertEquals(D('10.00'), self.method.basket_charge_incl_tax())
  73. def test_basket_on_threshold(self):
  74. p = create_product(D('5.00'))
  75. self.basket.add_product(p, 4)
  76. self.assertEquals(D('0.00'), self.method.basket_charge_incl_tax())
  77. def test_basket_above_threshold(self):
  78. p = create_product(D('5.00'))
  79. self.basket.add_product(p, 8)
  80. self.assertEquals(D('0.00'), self.method.basket_charge_incl_tax())