| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import datetime
-
- from django.test import TestCase
- from mock import patch
-
- from oscar.apps.partner.wrappers import DefaultWrapper
- from oscar.apps.partner.models import StockRecord
- from oscar.test.helpers import create_product
-
-
- class DefaultWrapperTests(TestCase):
-
- def setUp(self):
- self.wrapper = DefaultWrapper()
- self.product = create_product()
-
- def test_num_in_stock_is_none_is_available_to_buy(self):
- record = StockRecord(num_in_stock=None)
- self.assertTrue(self.wrapper.is_available_to_buy(record))
-
- def test_zero_stock_is_not_available_to_buy(self):
- record = StockRecord(num_in_stock=0)
- self.assertFalse(self.wrapper.is_available_to_buy(record))
-
- def test_nonzero_stock_is_available_to_buy(self):
- record = StockRecord(num_in_stock=10)
- self.assertTrue(self.wrapper.is_available_to_buy(record))
-
- def test_matching_purchase_is_permitted(self):
- record = StockRecord(num_in_stock=4, product=self.product)
- result, reason = self.wrapper.is_purchase_permitted(record, quantity=4)
- self.assertTrue(result)
-
- def test_smaller_purchase_is_permitted(self):
- record = StockRecord(num_in_stock=4, product=self.product)
- result, reason = self.wrapper.is_purchase_permitted(record, quantity=3)
- self.assertTrue(result)
-
- def test_too_large_purchase_is_not_permitted(self):
- record = StockRecord(num_in_stock=4, product=self.product)
- result, reason = self.wrapper.is_purchase_permitted(record, quantity=5)
- self.assertFalse(result)
-
- def test_max_purchase_quantity(self):
- record = StockRecord(num_in_stock=4, product=self.product)
- self.assertEqual(record.num_in_stock, self.wrapper.max_purchase_quantity(record))
-
- def test_availability_code_for_in_stock(self):
- record = StockRecord(num_in_stock=4, product=self.product)
- self.assertEqual('instock', self.wrapper.availability_code(record))
-
- def test_availability_code_for_zero_stock(self):
- record = StockRecord(num_in_stock=0, product=self.product)
- self.assertEqual('outofstock', self.wrapper.availability_code(record))
-
- def test_availability_code_for_null_stock_but_available(self):
- record = StockRecord(num_in_stock=None, product=self.product)
- self.assertEqual('available', self.wrapper.availability_code(record))
-
- def test_availability_message_for_in_stock(self):
- record = StockRecord(num_in_stock=4, product=self.product)
- self.assertEqual(u'In stock (4 available)', unicode(self.wrapper.availability(record)))
-
- def test_availability_message_for_available(self):
- record = StockRecord(num_in_stock=None, product=self.product)
- self.assertEqual(u'Available', unicode(self.wrapper.availability(record)))
-
- def test_availability_message_for_out_of_stock(self):
- record = StockRecord(num_in_stock=0, product=self.product)
- self.assertEqual(u'Not available', unicode(self.wrapper.availability(record)))
-
- def test_backorder_purchase_is_permitted(self):
- record = StockRecord(num_in_stock=None, product=self.product)
- with patch.object(self.wrapper, 'max_purchase_quantity') as m:
- m.return_value = None
- result, reason = self.wrapper.is_purchase_permitted(record)
- self.assertTrue(result)
|