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.core.files.storage import FileSystemStorage
|
||||
from django.forms import ModelForm
|
||||
|
||||
temp_storage = FileSystemStorage(tempfile.gettempdir())
|
||||
|
||||
class Photo(models.Model):
|
||||
title = models.CharField(max_length=30)
|
||||
image = models.FileField(storage=temp_storage, upload_to='tests')
|
||||
|
||||
# Support code for the tests; this keeps track of how many times save() gets
|
||||
# called on each instance.
|
||||
|
||||
# Support code for the tests; this keeps track of how many times save()
|
||||
# gets called on each instance.
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(Photo, self).__init__(*args, **kwargs)
|
||||
self._savecount = 0
|
||||
|
||||
|
||||
def save(self):
|
||||
super(Photo, self).save()
|
||||
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
|
||||
called *again* for each FileField. This test will fail if calling an
|
||||
auto-manipulator's save() method causes Model.save() to be called more than once.
|
||||
Tests for file field behavior, and specifically #639, in which Model.save()
|
||||
gets called *again* for each FileField. This test will fail if calling a
|
||||
ModelForm's save() method causes Model.save() to be called more than once.
|
||||
"""
|
||||
|
||||
import os
|
||||
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 regressiontests.bug639.models import Photo, PhotoForm
|
||||
|
||||
class Bug639Test(unittest.TestCase):
|
||||
|
||||
|
||||
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
|
||||
img = open(os.path.join(os.path.dirname(__file__), "test.jpg"), "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')
|
||||
# Grab an image for testing.
|
||||
filename = os.path.join(os.path.dirname(__file__), "test.jpg")
|
||||
img = open(filename, "rb").read()
|
||||
|
||||
manip = Photo.AddManipulator()
|
||||
manip.do_html2python(qd)
|
||||
p = manip.save(qd)
|
||||
|
||||
# Check the savecount stored on the object (see the model)
|
||||
# Fake a POST QueryDict and FILES MultiValueDict.
|
||||
data = {'title': 'Testing'}
|
||||
files = {"image": SimpleUploadedFile('test.jpg', img, 'image/jpeg')}
|
||||
|
||||
form = PhotoForm(data=data, files=files)
|
||||
p = form.save()
|
||||
|
||||
# Check the savecount stored on the object (see the model).
|
||||
self.assertEqual(p._savecount, 1)
|
||||
|
||||
|
||||
def tearDown(self):
|
||||
"""
|
||||
Make sure to delete the "uploaded" file to avoid clogging /tmp.
|
||||
|
|
Loading…
Reference in New Issue