diff options
Diffstat (limited to 'webapp/django/test/utils.py')
-rw-r--r-- | webapp/django/test/utils.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/webapp/django/test/utils.py b/webapp/django/test/utils.py new file mode 100644 index 0000000000..69bd25bc12 --- /dev/null +++ b/webapp/django/test/utils.py @@ -0,0 +1,67 @@ +import sys, time, os +from django.conf import settings +from django.db import connection +from django.core import mail +from django.test import signals +from django.template import Template +from django.utils.translation import deactivate + +def instrumented_test_render(self, context): + """ + An instrumented Template render method, providing a signal + that can be intercepted by the test system Client + """ + signals.template_rendered.send(sender=self, template=self, context=context) + return self.nodelist.render(context) + +class TestSMTPConnection(object): + """A substitute SMTP connection for use during test sessions. + The test connection stores email messages in a dummy outbox, + rather than sending them out on the wire. + + """ + def __init__(*args, **kwargs): + pass + def open(self): + "Mock the SMTPConnection open() interface" + pass + def close(self): + "Mock the SMTPConnection close() interface" + pass + def send_messages(self, messages): + "Redirect messages to the dummy outbox" + mail.outbox.extend(messages) + return len(messages) + +def setup_test_environment(): + """Perform any global pre-test setup. This involves: + + - Installing the instrumented test renderer + - Diverting the email sending functions to a test buffer + - Setting the active locale to match the LANGUAGE_CODE setting. + """ + Template.original_render = Template.render + Template.render = instrumented_test_render + + mail.original_SMTPConnection = mail.SMTPConnection + mail.SMTPConnection = TestSMTPConnection + + mail.outbox = [] + + deactivate() + +def teardown_test_environment(): + """Perform any global post-test teardown. This involves: + + - Restoring the original test renderer + - Restoring the email sending functions + + """ + Template.render = Template.original_render + del Template.original_render + + mail.SMTPConnection = mail.original_SMTPConnection + del mail.original_SMTPConnection + + del mail.outbox + |