diff options
| author | Christopher Long <indirecthit@gmail.com> | 2007-06-17 22:18:54 +0000 |
|---|---|---|
| committer | Christopher Long <indirecthit@gmail.com> | 2007-06-17 22:18:54 +0000 |
| commit | ae22b6d403dcf25098c77f0dfcf59ae58b186461 (patch) | |
| tree | c37fc631e99a7e4d909d6b6d236f495003731ea7 /tests/regressiontests/bug639 | |
| parent | 0cf7bc439129c66df8d64601e885f83b256b4f25 (diff) | |
per-object-permissions: Merged to trunk [5486] NOTE: Not fully tested, will be working on this over the next few weeks.
git-svn-id: http://code.djangoproject.com/svn/django/branches/per-object-permissions@5488 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/bug639')
| -rw-r--r-- | tests/regressiontests/bug639/__init__.py | 0 | ||||
| -rw-r--r-- | tests/regressiontests/bug639/models.py | 16 | ||||
| -rw-r--r-- | tests/regressiontests/bug639/test.jpg | bin | 0 -> 1780 bytes | |||
| -rw-r--r-- | tests/regressiontests/bug639/tests.py | 42 |
4 files changed, 58 insertions, 0 deletions
diff --git a/tests/regressiontests/bug639/__init__.py b/tests/regressiontests/bug639/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/regressiontests/bug639/__init__.py diff --git a/tests/regressiontests/bug639/models.py b/tests/regressiontests/bug639/models.py new file mode 100644 index 0000000000..7cfdfc82ef --- /dev/null +++ b/tests/regressiontests/bug639/models.py @@ -0,0 +1,16 @@ +import tempfile +from django.db import models + +class Photo(models.Model): + title = models.CharField(maxlength=30) + image = models.FileField(upload_to=tempfile.gettempdir()) + + # 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
\ No newline at end of file diff --git a/tests/regressiontests/bug639/test.jpg b/tests/regressiontests/bug639/test.jpg Binary files differnew file mode 100644 index 0000000000..391b57a0f3 --- /dev/null +++ b/tests/regressiontests/bug639/test.jpg diff --git a/tests/regressiontests/bug639/tests.py b/tests/regressiontests/bug639/tests.py new file mode 100644 index 0000000000..f9596d06cb --- /dev/null +++ b/tests/regressiontests/bug639/tests.py @@ -0,0 +1,42 @@ +""" +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. +""" + +import os +import unittest +from regressiontests.bug639.models import Photo +from django.http import QueryDict +from django.utils.datastructures import MultiValueDict + +class Bug639Test(unittest.TestCase): + + def testBug639(self): + """ + 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"] = { + "filename" : "test.jpg", + "content-type" : "image/jpeg", + "content" : img + } + + manip = Photo.AddManipulator() + manip.do_html2python(qd) + p = manip.save(qd) + + # 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. + """ + p = Photo.objects.get() + os.unlink(p.get_image_filename())
\ No newline at end of file |
