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

test_processing.py 1.8KB

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