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.

test_repository.py 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from unittest import mock
  2. from django.test import TestCase
  3. from oscar.apps.shipping import repository, methods
  4. class TestDefaultShippingRepository(TestCase):
  5. def setUp(self):
  6. self.repo = repository.Repository()
  7. def test_returns_free_when_basket_is_non_empty(self):
  8. basket = mock.Mock()
  9. basket.is_shipping_required = mock.Mock(return_value=True)
  10. basket.has_shipping_discounts = False
  11. available_methods = self.repo.get_shipping_methods(
  12. basket=basket)
  13. self.assertEqual(1, len(available_methods))
  14. method = available_methods[0]
  15. self.assertTrue(isinstance(method, methods.Free))
  16. def test_returns_no_shipping_required_when_basket_does_not_require_shipping(self):
  17. basket = mock.Mock()
  18. basket.is_shipping_required = mock.Mock(return_value=False)
  19. basket.has_shipping_discounts = False
  20. available_methods = self.repo.get_shipping_methods(
  21. basket=basket)
  22. self.assertEqual(1, len(available_methods))
  23. method = available_methods[0]
  24. self.assertTrue(isinstance(method, methods.NoShippingRequired))
  25. def test_returns_free_shipping_as_default(self):
  26. basket = mock.Mock()
  27. basket.is_shipping_required = mock.Mock(return_value=True)
  28. basket.has_shipping_discounts = False
  29. method = self.repo.get_default_shipping_method(
  30. basket=basket)
  31. self.assertTrue(isinstance(method, methods.Free))