Slide 17
Slide 17 text
turns into 36 lines of tests
import mock
from mock_django.http import WsgiHttpRequest
from django.http import HttpResponse
from disqus.middleware.autocommit import AutocommitMiddleware
from disqus.tests import DisqusTest
class AutocommitMiddlewareTest(DisqusTest):
@mock.patch('disqus.middleware.autocommit.transaction.enter_transaction_management')
def test_changes_to_transactional_on_post(self, enter_transaction_management):
request = WsgiHttpRequest()
request.method = 'POST'
middleware = AutocommitMiddleware()
middleware.process_view(request, lambda: "", [], {})
enter_transaction_management.assert_called_once_with(True, using='default')
@mock.patch('disqus.middleware.autocommit.transaction.enter_transaction_management')
def test_leaves_autocommit_on_get(self, enter_transaction_management):
request = WsgiHttpRequest()
request.method = 'GET'
middleware = AutocommitMiddleware()
middleware.process_view(request, lambda: "", [], {})
self.assertFalse(enter_transaction_management.called)
@mock.patch('disqus.middleware.autocommit.transaction.leave_transaction_management')
def test_changes_to_autocommit_on_response(self, leave_transaction_management):
request = WsgiHttpRequest()
request.method = 'GET'
response = HttpResponse()
middleware = AutocommitMiddleware()
middleware.process_response(request, response)
leave_transaction_management.assert_called_once_with(using='default')
@mock.patch('disqus.middleware.autocommit.transaction.leave_transaction_management')
def test_changes_to_autocommit_on_exception(self, leave_transaction_management):
request = WsgiHttpRequest()
request.method = 'GET'
exception = Exception()
middleware = AutocommitMiddleware()
middleware.process_exception(request, exception)
leave_transaction_management.assert_called_once_with(using='default')
Wednesday, July 4, 12