Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

processing_tests.py 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from decimal import Decimal as D
  2. from django.test import TestCase
  3. import mock
  4. import six
  5. from oscar.apps.order import processing
  6. from oscar.apps.order import exceptions
  7. from oscar.apps.order.models import Line
  8. from oscar.test.factories import create_order
  9. class TestValidatePaymentEvent(TestCase):
  10. def setUp(self):
  11. self.event_handler = processing.EventHandler()
  12. def test_valid_lines(self):
  13. order = mock.Mock()
  14. lines = [mock.Mock() for r in range(3)]
  15. line_quantities = [line.quantity for line in lines]
  16. self.event_handler.validate_payment_event(order, 'pre-auth',
  17. D('10.00'), lines,
  18. line_quantities)
  19. # Has each line has been checked
  20. for line in lines:
  21. line.is_payment_event_permitted.assert_called_with('pre-auth',
  22. line.quantity)
  23. def test_invalid_lines(self):
  24. order = mock.Mock()
  25. invalid_line = mock.Mock()
  26. invalid_line.is_payment_event_permitted.return_value = False
  27. invalid_line.id = 6
  28. lines = [
  29. mock.Mock(),
  30. invalid_line,
  31. mock.Mock(),
  32. ]
  33. line_quantities = [line.quantity for line in lines]
  34. error = "The selected quantity for line #6 is too large"
  35. with six.assertRaisesRegex(self, exceptions.InvalidPaymentEvent, error):
  36. self.event_handler.validate_payment_event(order, 'payment',
  37. D('10.00'), lines,
  38. line_quantities)
  39. def test_no_lines(self):
  40. order = mock.Mock()
  41. lines = None
  42. line_quantities = None
  43. out = self.event_handler.validate_payment_event(order, 'payment',
  44. D('10.00'), lines,
  45. line_quantities)
  46. self.assertIsNone(out)