Skip to content

Commit

Permalink
Add TestBackend for testing
Browse files Browse the repository at this point in the history
Fixes #67.
  • Loading branch information
inglesp authored and lamby committed Jul 5, 2017
1 parent 37a39c2 commit b55f962
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
17 changes: 17 additions & 0 deletions django_slack/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,23 @@
This allows you to, for example, use the Requests library to whilst sending
your message asynchronously via Celery.
Testing
-------
You can set ``SLACK_BACKEND = django_slack.backends.TestBackend`` when testing
to store messages to inspect them later::
from django_slack.utils import get_backend
backend = get_backend()
backend.reset_messages()
# Do something that triggers the sending of a message
messages = backend.retrieve_messages()
assert len(messages) == 1
assert messages[0]['text'] == expected_text
"""

from .api import slack_message
23 changes: 23 additions & 0 deletions django_slack/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,5 +71,28 @@ def send(self, *args, **kwargs):
self._send.delay(*args, **kwargs)


class TestBackend(Backend):
'''This backend is for testing
Before a test, call `reset_messages`, and after a test, call
`retrieve_messages` for a list of all messages that have been sent during
the test.
'''
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.reset_messages()

def send(self, url, data, **kwargs):
self.messages.append(data)

def reset_messages(self):
self.messages = []

def retrieve_messages(self):
messages = self.messages
self.reset_messages()
return messages


# For backwards-compatibility
Urllib2Backend = UrllibBackend

0 comments on commit b55f962

Please sign in to comment.