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_availability_mixin.py 1.3KB

12345678910111213141516171819202122232425262728293031323334
  1. from decimal import Decimal as D
  2. from unittest import mock
  3. from django.test import TestCase
  4. from oscar.apps.partner import availability, strategy
  5. class TestStockRequiredMixin(TestCase):
  6. def setUp(self):
  7. self.mixin = strategy.StockRequired()
  8. self.product = mock.Mock()
  9. self.stockrecord = mock.Mock()
  10. self.stockrecord.price = D('12.00')
  11. def test_returns_unavailable_without_stockrecord(self):
  12. policy = self.mixin.availability_policy(
  13. self.product, None)
  14. self.assertIsInstance(policy, availability.Unavailable)
  15. def test_returns_available_when_product_class_doesnt_track_stock(self):
  16. product_class = mock.Mock(track_stock=False)
  17. self.product.get_product_class = mock.Mock(return_value=product_class)
  18. policy = self.mixin.availability_policy(
  19. self.product, self.stockrecord)
  20. self.assertIsInstance(policy, availability.Available)
  21. def test_returns_stockrequired_when_product_class_does_track_stock(self):
  22. product_class = mock.Mock(track_stock=True)
  23. self.product.get_product_class = mock.Mock(return_value=product_class)
  24. policy = self.mixin.availability_policy(
  25. self.product, self.stockrecord)
  26. self.assertIsInstance(policy, availability.StockRequired)