Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import datetime
  2. from decimal import Decimal as D
  3. from django.test import TestCase
  4. from django.test.client import RequestFactory
  5. from oscar.apps.basket.models import Basket
  6. from oscar.apps.basket.middleware import BasketMiddleware
  7. from oscar.test.helpers import create_product
  8. from oscar.apps.basket.reports import (
  9. OpenBasketReportGenerator, SubmittedBasketReportGenerator)
  10. class TestBasketModel(TestCase):
  11. def setUp(self):
  12. self.basket = Basket()
  13. self.product = create_product()
  14. def test_an_empty_basket_has_zero_lines(self):
  15. self.assertEqual(0, self.basket.num_lines)
  16. def test_new_baskets_are_empty(self):
  17. self.assertTrue(self.basket.is_empty)
  18. def test_adding_product_creates_line(self):
  19. self.basket.add_product(self.product)
  20. self.assertEqual(1, self.basket.num_lines)
  21. def test_adding_multiproduct_line_returns_correct_number_of_items(self):
  22. self.basket.add_product(self.product, 10)
  23. self.assertEqual(self.basket.num_items, 10)
  24. self.assertEqual(self.basket.num_lines, 1)
  25. def test_add_product_creates_line(self):
  26. self.basket.add_product(self.product)
  27. self.assertTrue(self.basket.num_lines == 1)
  28. def test_add_product_sets_line_prices(self):
  29. self.basket.add_product(self.product)
  30. basket_line = self.basket.lines.all()[0]
  31. self.assertEqual(basket_line.price_incl_tax, D('10.00'))
  32. self.assertEqual(basket_line.price_excl_tax, D('10.00'))
  33. def test_flushing_basket_removes_all_lines(self):
  34. self.basket.add_product(self.product, 10)
  35. self.assertEqual(self.basket.num_items, 10)
  36. self.basket.flush()
  37. self.assertEqual(self.basket.num_items, 0)
  38. class TestBasketMiddleware(TestCase):
  39. def setUp(self):
  40. self.middleware = BasketMiddleware()
  41. def test_basket_is_attached_to_request(self):
  42. req = RequestFactory().get('/')
  43. self.middleware.process_request(req)
  44. self.assertTrue(hasattr(req, 'basket'))
  45. class TestBasketReports(TestCase):
  46. def test_open_report_doesnt_error(self):
  47. data = {
  48. 'start_date': datetime.date(2012, 5, 1),
  49. 'end_date': datetime.date(2012, 5, 17),
  50. 'formatter': 'CSV'
  51. }
  52. generator = OpenBasketReportGenerator(**data)
  53. generator.generate()
  54. def test_submitted_report_doesnt_error(self):
  55. data = {
  56. 'start_date': datetime.date(2012, 5, 1),
  57. 'end_date': datetime.date(2012, 5, 17),
  58. 'formatter': 'CSV'
  59. }
  60. generator = SubmittedBasketReportGenerator(**data)
  61. generator.generate()