1
0
mirror of https://github.com/django/django.git synced 2025-06-05 03:29:12 +00:00

[1.4.x] Fixed #19645 -- Added tests for TransactionMiddleware

Backpatch of f556df90be995a83b979cf875705d98521ab4dc7. Backpatching
these tests so that it will be easier to backpatch the fix for #19707.
This commit is contained in:
Anssi Kääriäinen 2013-02-10 17:06:52 +02:00
parent 056b2b5f65
commit 498a5de07b
2 changed files with 59 additions and 2 deletions

View File

@ -1 +1,11 @@
# models.py file for tests to run. from django.db import models
class Band(models.Model):
name = models.CharField(max_length=100)
class Meta:
ordering = ('name',)
def __unicode__(self):
return self.name

View File

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import absolute_import, with_statement
import gzip import gzip
import re import re
@ -7,15 +8,19 @@ import StringIO
from django.conf import settings from django.conf import settings
from django.core import mail from django.core import mail
from django.db import transaction
from django.http import HttpRequest from django.http import HttpRequest
from django.http import HttpResponse from django.http import HttpResponse
from django.middleware.clickjacking import XFrameOptionsMiddleware from django.middleware.clickjacking import XFrameOptionsMiddleware
from django.middleware.common import CommonMiddleware from django.middleware.common import CommonMiddleware
from django.middleware.http import ConditionalGetMiddleware from django.middleware.http import ConditionalGetMiddleware
from django.middleware.gzip import GZipMiddleware from django.middleware.gzip import GZipMiddleware
from django.test import TestCase, RequestFactory from django.middleware.transaction import TransactionMiddleware
from django.test import TransactionTestCase, TestCase, RequestFactory
from django.test.utils import override_settings from django.test.utils import override_settings
from .models import Band
class CommonMiddlewareTest(TestCase): class CommonMiddlewareTest(TestCase):
def setUp(self): def setUp(self):
self.append_slash = settings.APPEND_SLASH self.append_slash = settings.APPEND_SLASH
@ -613,3 +618,45 @@ class ETagGZipMiddlewareTest(TestCase):
ETagGZipMiddlewareTest = override_settings( ETagGZipMiddlewareTest = override_settings(
USE_ETAGS=True, USE_ETAGS=True,
)(ETagGZipMiddlewareTest) )(ETagGZipMiddlewareTest)
class TransactionMiddlewareTest(TransactionTestCase):
"""
Test the transaction middleware.
"""
def setUp(self):
self.request = HttpRequest()
self.request.META = {
'SERVER_NAME': 'testserver',
'SERVER_PORT': 80,
}
self.request.path = self.request.path_info = "/"
self.response = HttpResponse()
self.response.status_code = 200
def test_request(self):
TransactionMiddleware().process_request(self.request)
self.assertTrue(transaction.is_managed())
def test_managed_response(self):
transaction.enter_transaction_management()
transaction.managed(True)
Band.objects.create(name='The Beatles')
self.assertTrue(transaction.is_dirty())
TransactionMiddleware().process_response(self.request, self.response)
self.assertFalse(transaction.is_dirty())
self.assertEqual(Band.objects.count(), 1)
def test_unmanaged_response(self):
transaction.managed(False)
TransactionMiddleware().process_response(self.request, self.response)
self.assertFalse(transaction.is_managed())
self.assertFalse(transaction.is_dirty())
def test_exception(self):
transaction.enter_transaction_management()
transaction.managed(True)
Band.objects.create(name='The Beatles')
self.assertTrue(transaction.is_dirty())
TransactionMiddleware().process_exception(self.request, None)
self.assertEqual(Band.objects.count(), 0)
self.assertFalse(transaction.is_dirty())