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

customer_tests.py 2.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from django.test import TestCase
  2. from django.core import mail
  3. from oscar.core.compat import get_user_model
  4. from oscar.apps.customer.utils import Dispatcher
  5. from oscar.test.factories import create_order
  6. from oscar.apps.customer.models import CommunicationEventType
  7. User = get_user_model()
  8. class CommunicationTypeTest(TestCase):
  9. keys = ('body', 'html', 'sms', 'subject')
  10. def test_no_templates_returns_empty_string(self):
  11. et = CommunicationEventType()
  12. messages = et.get_messages()
  13. for key in self.keys:
  14. self.assertEqual('', messages[key])
  15. def test_field_template_render(self):
  16. et = CommunicationEventType(email_subject_template='Hello {{ name }}')
  17. ctx = {'name': 'world'}
  18. messages = et.get_messages(ctx)
  19. self.assertEqual('Hello world', messages['subject'])
  20. def test_new_line_in_subject_is_removed(self):
  21. subjects = [
  22. ('Subject with a newline\r\n', 'Subject with a newline'),
  23. ('New line is in \n the middle', 'New line is in the middle'),
  24. ('\rStart with the new line', 'Start with the new line'),
  25. ]
  26. for original, modified in subjects:
  27. et = CommunicationEventType(email_subject_template=original)
  28. messages = et.get_messages()
  29. self.assertEqual(modified, messages['subject'])
  30. class TestDispatcher(TestCase):
  31. def test_sending_a_order_related_messages(self):
  32. email = 'testuser@example.com'
  33. user = User.objects.create_user('testuser', email,
  34. 'somesimplepassword')
  35. order_number = '12345'
  36. order = create_order(number=order_number, user=user)
  37. et = CommunicationEventType.objects.create(code="ORDER_PLACED",
  38. name="Order Placed",
  39. category="Order related")
  40. messages = et.get_messages({
  41. 'order': order,
  42. 'lines': order.lines.all()
  43. })
  44. self.assertIn(order_number, messages['body'])
  45. self.assertIn(order_number, messages['html'])
  46. dispatcher = Dispatcher()
  47. dispatcher.dispatch_order_messages(order, messages, et)
  48. self.assertEquals(len(mail.outbox), 1)
  49. message = mail.outbox[0]
  50. self.assertIn(order_number, message.body)