選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

test_selector_mixin.py 1.2KB

1234567891011121314151617181920212223242526272829
  1. from django.test import TestCase
  2. from oscar.apps.catalogue.models import Product
  3. from oscar.apps.partner import strategy
  4. from oscar.test import factories
  5. class TestUseFirstStockRecordMixin(TestCase):
  6. def setUp(self):
  7. self.product = factories.create_product()
  8. self.mixin = strategy.UseFirstStockRecord()
  9. def test_selects_first_stockrecord_for_product(self):
  10. stockrecord = factories.create_stockrecord(self.product)
  11. selected = self.mixin.select_stockrecord(self.product)
  12. self.assertEqual(selected.id, stockrecord.id)
  13. def test_returns_none_when_no_stock_records(self):
  14. self.assertIsNone(self.mixin.select_stockrecord(self.product))
  15. def test_does_not_generate_additional_query_when_passed_product_from_base_queryset(self):
  16. product = Product.objects.base_queryset().first()
  17. # Regression test for https://github.com/django-oscar/django-oscar/issues/3875
  18. # If passed a product from a queryset annotated by base_queryset, then
  19. # the selector should not trigger any additional database queries because
  20. # it should rely on the prefetched stock records.
  21. with self.assertNumQueries(0):
  22. self.mixin.select_stockrecord(product)