Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

test_utils.py 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import pytest
  2. from oscar.test.factories import (
  3. BasketFactory, ConditionalOfferFactory, ProductFactory)
  4. @pytest.fixture
  5. def filled_basket():
  6. basket = BasketFactory()
  7. product1 = ProductFactory()
  8. product2 = ProductFactory()
  9. basket.add_product(product1, quantity=10)
  10. basket.add_product(product2, quantity=20)
  11. return basket
  12. @pytest.mark.django_db
  13. class TestLineOfferConsumer(object):
  14. def test_consumed_no_offer(self, filled_basket):
  15. for line in filled_basket.all_lines():
  16. assert line.consumer.consumed() == 0
  17. def test_consumed_with_offer(self, filled_basket):
  18. offer1 = ConditionalOfferFactory(name='offer1')
  19. offer2 = ConditionalOfferFactory(name='offer2')
  20. offer1.exclusive = False
  21. offer2.exclusive = False
  22. for line in filled_basket.all_lines():
  23. assert line.consumer.consumed(offer1) == 0
  24. assert line.consumer.consumed(offer2) == 0
  25. line1 = filled_basket.all_lines()[0]
  26. line2 = filled_basket.all_lines()[1]
  27. line1.consumer.consume(1, offer1)
  28. assert line1.consumer.consumed() == 1
  29. assert line1.consumer.consumed(offer1) == 1
  30. assert line1.consumer.consumed(offer2) == 0
  31. line1.consumer.consume(9, offer1)
  32. assert line1.consumer.consumed() == line1.quantity
  33. assert line1.consumer.consumed(offer1) == line1.quantity
  34. assert line1.consumer.consumed(offer2) == 0
  35. line1.consumer.consume(99, offer1)
  36. assert line1.consumer.consumed(offer1) == line1.quantity
  37. assert line1.consumer.consumed(offer2) == 0
  38. line1.consumer.consume(1, offer2)
  39. line2.consumer.consume(1, offer2)
  40. assert line1.consumer.consumed(offer2) == 1
  41. assert line2.consumer.consumed(offer2) == 1
  42. def test_consume(self, filled_basket):
  43. line = filled_basket.all_lines()[0]
  44. line.consume(1)
  45. assert line.quantity_with_discount == 1
  46. line.consume(99)
  47. assert line.quantity_with_discount == 10
  48. def test_consumed_with_exclusive_offer(self, filled_basket):
  49. offer1 = ConditionalOfferFactory(name='offer1')
  50. offer2 = ConditionalOfferFactory(name='offer2')
  51. offer3 = ConditionalOfferFactory(name='offer3')
  52. offer1.exclusive = True
  53. offer2.exclusive = False
  54. offer3.exclusive = False
  55. for line in filled_basket.all_lines():
  56. assert line.consumer.consumed(offer1) == 0
  57. assert line.consumer.consumed(offer2) == 0
  58. line1 = filled_basket.all_lines()[0]
  59. line2 = filled_basket.all_lines()[1]
  60. line1.consumer.consume(1, offer1)
  61. assert line1.is_available_for_offer_discount(offer2) is True
  62. line1.consumer.consume(99, offer1)
  63. assert line1.is_available_for_offer_discount(offer2) is False
  64. line2.consumer.consume(1, offer2)
  65. assert line2.is_available_for_offer_discount(offer1) is True
  66. line2.consumer.consume(99, offer2)
  67. assert line2.is_available_for_offer_discount(offer1) is False
  68. assert line2.is_available_for_offer_discount(offer3) is True