| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- from django.core import mail
- from django.test import TestCase
-
- from oscar.core.compat import get_user_model
- from oscar.core.loading import get_class, get_model
- from oscar.test.factories import create_order
-
- User = get_user_model()
-
- CommunicationEventType = get_model('communication', 'CommunicationEventType')
- CommunicationEvent = get_model('order', 'CommunicationEvent')
- Email = get_model('communication', 'Email')
- Dispatcher = get_class('communication.utils', 'Dispatcher')
- OrderDispatcher = get_class('order.utils', 'OrderDispatcher')
-
-
- class TestDispatcher(TestCase):
-
- def _dispatch_order_messages(self, order_number, order, email=None):
- event_code = OrderDispatcher.ORDER_PLACED_EVENT_CODE
- et = CommunicationEventType.objects.create(
- code=event_code,
- name="Order Placed",
- category=CommunicationEventType.ORDER_RELATED,
- )
-
- messages = et.get_messages({
- 'order': order,
- 'lines': order.lines.all()
- })
-
- assert order_number in messages['body']
- assert order_number in messages['html']
-
- order_dispatcher = OrderDispatcher()
- order_dispatcher.dispatch_order_messages(order, messages, event_code)
-
- assert CommunicationEvent.objects.filter(order=order, event_type=et).count() == 1
-
- assert len(mail.outbox) == 1
-
- message = mail.outbox[0]
- assert order_number in message.body
-
- # Test sending messages to emails without account and text body
- messages['body'] = ''
- dispatcher = Dispatcher()
- dispatcher.dispatch_direct_messages(email, messages)
- assert len(mail.outbox) == 2
-
- def test_dispatch_order_messages(self):
- email = 'testuser@example.com'
- user = User.objects.create_user('testuser', email, 'somesimplepassword')
- order = create_order(number='12345', user=user)
- assert not order.is_anonymous
- self._dispatch_order_messages(order_number='12345', order=order, email=email)
-
- def test_dispatch_anonymous_order_messages(self):
- order = create_order(number='12346', guest_email='testguest@example.com')
- assert order.is_anonymous
- self._dispatch_order_messages(order_number='12346', order=order, email='testguest@example.com', )
|