summaryrefslogtreecommitdiff
path: root/tests/regressiontests/model_fields
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2010-10-01 02:02:58 +0000
committerJannis Leidel <jannis@leidel.info>2010-10-01 02:02:58 +0000
commit392d992f8295f96632179e01e790465cc9c8d3ec (patch)
treebc1d6e3b0819f1b2a58a91d146fa6eb112d8396d /tests/regressiontests/model_fields
parenta64e96c227b36c701a86ded75d839b1cd2442713 (diff)
Fixed #7048 -- Added ClearableFileInput widget to clear file fields. Thanks for report and patch, jarrow and Carl Meyer.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13968 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/model_fields')
-rw-r--r--tests/regressiontests/model_fields/models.py6
-rw-r--r--tests/regressiontests/model_fields/tests.py39
2 files changed, 44 insertions, 1 deletions
diff --git a/tests/regressiontests/model_fields/models.py b/tests/regressiontests/model_fields/models.py
index 45cd223142..1dc1649f13 100644
--- a/tests/regressiontests/model_fields/models.py
+++ b/tests/regressiontests/model_fields/models.py
@@ -67,6 +67,12 @@ class BooleanModel(models.Model):
string = models.CharField(max_length=10, default='abc')
###############################################################################
+# FileField
+
+class Document(models.Model):
+ myfile = models.FileField(upload_to='unused')
+
+###############################################################################
# ImageField
# If PIL available, do these tests.
diff --git a/tests/regressiontests/model_fields/tests.py b/tests/regressiontests/model_fields/tests.py
index 72a7d4d657..58c32b5c0a 100644
--- a/tests/regressiontests/model_fields/tests.py
+++ b/tests/regressiontests/model_fields/tests.py
@@ -6,8 +6,9 @@ import django.test
from django import forms
from django.db import models
from django.core.exceptions import ValidationError
+from django.db.models.fields.files import FieldFile
-from models import Foo, Bar, Whiz, BigD, BigS, Image, BigInt, Post, NullBooleanModel, BooleanModel
+from models import Foo, Bar, Whiz, BigD, BigS, Image, BigInt, Post, NullBooleanModel, BooleanModel, Document
# If PIL available, do these tests.
if Image:
@@ -311,3 +312,39 @@ class TypeCoercionTests(django.test.TestCase):
def test_lookup_integer_in_textfield(self):
self.assertEquals(Post.objects.filter(body=24).count(), 0)
+class FileFieldTests(unittest.TestCase):
+ def test_clearable(self):
+ """
+ Test that FileField.save_form_data will clear its instance attribute
+ value if passed False.
+
+ """
+ d = Document(myfile='something.txt')
+ self.assertEqual(d.myfile, 'something.txt')
+ field = d._meta.get_field('myfile')
+ field.save_form_data(d, False)
+ self.assertEqual(d.myfile, '')
+
+ def test_unchanged(self):
+ """
+ Test that FileField.save_form_data considers None to mean "no change"
+ rather than "clear".
+
+ """
+ d = Document(myfile='something.txt')
+ self.assertEqual(d.myfile, 'something.txt')
+ field = d._meta.get_field('myfile')
+ field.save_form_data(d, None)
+ self.assertEqual(d.myfile, 'something.txt')
+
+ def test_changed(self):
+ """
+ Test that FileField.save_form_data, if passed a truthy value, updates
+ its instance attribute.
+
+ """
+ d = Document(myfile='something.txt')
+ self.assertEqual(d.myfile, 'something.txt')
+ field = d._meta.get_field('myfile')
+ field.save_form_data(d, 'else.txt')
+ self.assertEqual(d.myfile, 'else.txt')