diff --git a/opentech/apply/activity/messaging.py b/opentech/apply/activity/messaging.py index 580b98fa1305d3d115a95a491dd3c55c11c82281..1fda69d7f9132a5df95fba288304c1a178208a90 100644 --- a/opentech/apply/activity/messaging.py +++ b/opentech/apply/activity/messaging.py @@ -83,10 +83,8 @@ class ActivityAdapter(AdapterBase): class MessengerBackend: - adapters = [ - ActivityAdapter(), - MessageAdapter(), - ] + def __init__(self, *adpaters): + self.adapters = adpaters def __call__(self, message_type, request, user, submission, **kwargs): return self.send(message_type, request=request, user=user, submission=submission, **kwargs) @@ -96,4 +94,10 @@ class MessengerBackend: adapter.process(message_type, **kwargs) -messenger = MessengerBackend() +adapters = [ + ActivityAdapter(), + MessageAdapter(), +] + + +messenger = MessengerBackend(*adapters) diff --git a/opentech/apply/activity/tests/test_messaging.py b/opentech/apply/activity/tests/test_messaging.py index 92a5415e3100979974c9e9b887525ae1c5260491..2ac154d9ca98e0ff5dc8b6f89a6ee2c1a6f642c8 100644 --- a/opentech/apply/activity/tests/test_messaging.py +++ b/opentech/apply/activity/tests/test_messaging.py @@ -1,8 +1,8 @@ -from unittest.mock import patch +from unittest.mock import Mock, patch from django.test import TestCase -from ..messaging import AdapterBase, MESSAGES +from ..messaging import AdapterBase, MessengerBackend, MESSAGES class TestAdapter(AdapterBase): @@ -59,3 +59,28 @@ class TestBaseAdapter(TestCase): self.adapter.process(message_type, message=message) self.adapter.send_message.assert_called_once_with(message, message=message) + + +class TestMessageBackend(TestCase): + def setUp(self): + self.mocked_adapter = Mock(AdapterBase) + self.backend = MessengerBackend + + def test_message_sent_to_adapter(self): + adapter = self.mocked_adapter() + messenger = self.backend(adapter) + + kwargs = {'request': None, 'user': None, 'submission': None} + messenger(MESSAGES.UPDATE_LEAD, **kwargs) + + adapter.process.assert_called_once_with(MESSAGES.UPDATE_LEAD, **kwargs) + + def test_message_sent_to_all_adapter(self): + adapters = [self.mocked_adapter(), self.mocked_adapter()] + messenger = self.backend(*adapters) + + kwargs = {'request': None, 'user': None, 'submission': None} + messenger(MESSAGES.UPDATE_LEAD, **kwargs) + + adapter = adapters[0] + self.assertEqual(adapter.process.call_count, len(adapters))