Refs #7742 -- Got bug639 regression tests using newforms instead of oldforms.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8304 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
5d837afe23
commit
c17c8ddecc
|
@ -2,19 +2,24 @@ import tempfile
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.core.files.storage import FileSystemStorage
|
from django.core.files.storage import FileSystemStorage
|
||||||
|
from django.forms import ModelForm
|
||||||
|
|
||||||
temp_storage = FileSystemStorage(tempfile.gettempdir())
|
temp_storage = FileSystemStorage(tempfile.gettempdir())
|
||||||
|
|
||||||
class Photo(models.Model):
|
class Photo(models.Model):
|
||||||
title = models.CharField(max_length=30)
|
title = models.CharField(max_length=30)
|
||||||
image = models.FileField(storage=temp_storage, upload_to='tests')
|
image = models.FileField(storage=temp_storage, upload_to='tests')
|
||||||
|
|
||||||
# Support code for the tests; this keeps track of how many times save() gets
|
# Support code for the tests; this keeps track of how many times save()
|
||||||
# called on each instance.
|
# gets called on each instance.
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(Photo, self).__init__(*args, **kwargs)
|
super(Photo, self).__init__(*args, **kwargs)
|
||||||
self._savecount = 0
|
self._savecount = 0
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
super(Photo, self).save()
|
super(Photo, self).save()
|
||||||
self._savecount += 1
|
self._savecount += 1
|
||||||
|
|
||||||
|
class PhotoForm(ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model = Photo
|
||||||
|
|
|
@ -1,36 +1,36 @@
|
||||||
"""
|
"""
|
||||||
Tests for file field behavior, and specifically #639, in which Model.save() gets
|
Tests for file field behavior, and specifically #639, in which Model.save()
|
||||||
called *again* for each FileField. This test will fail if calling an
|
gets called *again* for each FileField. This test will fail if calling a
|
||||||
auto-manipulator's save() method causes Model.save() to be called more than once.
|
ModelForm's save() method causes Model.save() to be called more than once.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import unittest
|
import unittest
|
||||||
from regressiontests.bug639.models import Photo
|
|
||||||
from django.http import QueryDict
|
|
||||||
from django.utils.datastructures import MultiValueDict
|
|
||||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||||
|
from regressiontests.bug639.models import Photo, PhotoForm
|
||||||
|
|
||||||
class Bug639Test(unittest.TestCase):
|
class Bug639Test(unittest.TestCase):
|
||||||
|
|
||||||
def testBug639(self):
|
def testBug639(self):
|
||||||
"""
|
"""
|
||||||
Simulate a file upload and check how many times Model.save() gets called.
|
Simulate a file upload and check how many times Model.save() gets
|
||||||
|
called.
|
||||||
"""
|
"""
|
||||||
# Grab an image for testing
|
# Grab an image for testing.
|
||||||
img = open(os.path.join(os.path.dirname(__file__), "test.jpg"), "rb").read()
|
filename = os.path.join(os.path.dirname(__file__), "test.jpg")
|
||||||
|
img = open(filename, "rb").read()
|
||||||
# Fake a request query dict with the file
|
|
||||||
qd = QueryDict("title=Testing&image=", mutable=True)
|
|
||||||
qd["image_file"] = SimpleUploadedFile('test.jpg', img, 'image/jpeg')
|
|
||||||
|
|
||||||
manip = Photo.AddManipulator()
|
# Fake a POST QueryDict and FILES MultiValueDict.
|
||||||
manip.do_html2python(qd)
|
data = {'title': 'Testing'}
|
||||||
p = manip.save(qd)
|
files = {"image": SimpleUploadedFile('test.jpg', img, 'image/jpeg')}
|
||||||
|
|
||||||
# Check the savecount stored on the object (see the model)
|
form = PhotoForm(data=data, files=files)
|
||||||
|
p = form.save()
|
||||||
|
|
||||||
|
# Check the savecount stored on the object (see the model).
|
||||||
self.assertEqual(p._savecount, 1)
|
self.assertEqual(p._savecount, 1)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
"""
|
"""
|
||||||
Make sure to delete the "uploaded" file to avoid clogging /tmp.
|
Make sure to delete the "uploaded" file to avoid clogging /tmp.
|
||||||
|
|
Loading…
Reference in New Issue