您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

processing_tests.py 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. class TestValidatePaymentEvent(TestCase):
  8. def setUp(self):
  9. self.event_handler = processing.EventHandler()
  10. def test_valid_lines(self):
  11. order = mock.Mock()
  12. lines = [mock.Mock() for r in range(3)]
  13. line_quantities = [line.quantity for line in lines]
  14. self.event_handler.validate_payment_event(order, 'pre-auth',
  15. D('10.00'), lines,
  16. line_quantities)
  17. # Has each line has been checked
  18. for line in lines:
  19. line.is_payment_event_permitted.assert_called_with('pre-auth',
  20. line.quantity)
  21. def test_invalid_lines(self):
  22. order = mock.Mock()
  23. invalid_line = mock.Mock()
  24. invalid_line.is_payment_event_permitted.return_value = False
  25. invalid_line.id = 6
  26. lines = [
  27. mock.Mock(),
  28. invalid_line,
  29. mock.Mock(),
  30. ]
  31. line_quantities = [line.quantity for line in lines]
  32. error = "The selected quantity for line #6 is too large"
  33. with six.assertRaisesRegex(self, exceptions.InvalidPaymentEvent, error):
  34. self.event_handler.validate_payment_event(order, 'payment',
  35. D('10.00'), lines,
  36. line_quantities)
  37. def test_no_lines(self):
  38. order = mock.Mock()
  39. lines = None
  40. line_quantities = None
  41. out = self.event_handler.validate_payment_event(
  42. order, 'payment', D('10.00'), lines, line_quantities)
  43. self.assertIsNone(out)