Skip to content

Commit cbfce93

Browse files
committed
Fitx TestCase due Django interals.
1 parent b015ae9 commit cbfce93

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

tests/test_atomic_requests.py

+18-13
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
from __future__ import unicode_literals
22

3+
from django.conf.urls import patterns, url
34
from django.db import connection, connections, transaction
4-
from django.test import TestCase
5+
from django.test import TestCase, TransactionTestCase
6+
from django.http import Http404
57
from django.utils.decorators import method_decorator
68
from django.utils.unittest import skipUnless
79
from rest_framework import status
8-
from rest_framework.exceptions import APIException, PermissionDenied
10+
from rest_framework.exceptions import APIException
911
from rest_framework.response import Response
1012
from rest_framework.test import APIRequestFactory
1113
from rest_framework.views import APIView
@@ -113,30 +115,33 @@ def test_api_exception_rollback_transaction(self):
113115

114116
@skipUnless(connection.features.uses_savepoints,
115117
"'atomic' requires transactions and savepoints.")
116-
class NonAtomicDBTransactionAPIExceptionTests(TestCase):
117-
def setUp(self):
118-
# only Django >= 1.6 provides @transaction.non_atomic_requests
118+
class NonAtomicDBTransactionAPIExceptionTests(TransactionTestCase):
119+
@property
120+
def urls(self):
119121
class NonAtomicAPIExceptionView(APIView):
120122
@method_decorator(transaction.non_atomic_requests)
121123
def dispatch(self, *args, **kwargs):
122124
return super(NonAtomicAPIExceptionView, self).dispatch(*args, **kwargs)
123125

124-
def post(self, request, *args, **kwargs):
125-
BasicModel.objects.create()
126-
raise PermissionDenied
126+
def get(self, request, *args, **kwargs):
127+
BasicModel.objects.all()
128+
raise Http404
129+
130+
return patterns(
131+
'',
132+
url(r'^$', NonAtomicAPIExceptionView.as_view())
133+
)
127134

128-
self.view = NonAtomicAPIExceptionView.as_view()
135+
def setUp(self):
129136
connections.databases['default']['ATOMIC_REQUESTS'] = True
130137

131138
def tearDown(self):
132139
connections.databases['default']['ATOMIC_REQUESTS'] = False
133140

134141
def test_api_exception_rollback_transaction_non_atomic_view(self):
135-
request = factory.post('/')
136-
137-
response = self.view(request)
142+
response = self.client.get('/')
138143

139144
# without checking connection.in_atomic_block view raises 500
140145
# due attempt to rollback without transaction
141146
self.assertEqual(response.status_code,
142-
status.HTTP_403_FORBIDDEN)
147+
status.HTTP_404_NOT_FOUND)

0 commit comments

Comments
 (0)