summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMichael Scott <michael.scott250@gmail.com>2016-09-20 22:31:23 +0100
committerTim Graham <timograham@gmail.com>2016-10-28 20:11:03 -0400
commitec9ed07488aa46fa9d9fd70ed99e82fdf184632a (patch)
treec080eab116a5788deb0cdb93b82739f7ddf92d0c /tests
parent625cd5bcb315154ed28061fefaf639aff54da7c2 (diff)
Fixed #27188 -- Allowed using unique=True with FileField.
Thanks Tim Graham for the initial patch.
Diffstat (limited to 'tests')
-rw-r--r--tests/invalid_models_tests/test_ordinary_fields.py15
-rw-r--r--tests/model_fields/models.py2
-rw-r--r--tests/model_fields/test_filefield.py10
3 files changed, 11 insertions, 16 deletions
diff --git a/tests/invalid_models_tests/test_ordinary_fields.py b/tests/invalid_models_tests/test_ordinary_fields.py
index 2f16e83d18..aff6a74659 100644
--- a/tests/invalid_models_tests/test_ordinary_fields.py
+++ b/tests/invalid_models_tests/test_ordinary_fields.py
@@ -440,21 +440,6 @@ class FileFieldTests(SimpleTestCase):
expected = []
self.assertEqual(errors, expected)
- def test_unique(self):
- class Model(models.Model):
- field = models.FileField(unique=False, upload_to='somewhere')
-
- field = Model._meta.get_field('field')
- errors = field.check()
- expected = [
- Error(
- "'unique' is not a valid argument for a FileField.",
- obj=field,
- id='fields.E200',
- )
- ]
- self.assertEqual(errors, expected)
-
def test_primary_key(self):
class Model(models.Model):
field = models.FileField(primary_key=False, upload_to='somewhere')
diff --git a/tests/model_fields/models.py b/tests/model_fields/models.py
index aeeb6e88da..faa7d08189 100644
--- a/tests/model_fields/models.py
+++ b/tests/model_fields/models.py
@@ -216,7 +216,7 @@ class DataModel(models.Model):
class Document(models.Model):
- myfile = models.FileField(upload_to='unused')
+ myfile = models.FileField(upload_to='unused', unique=True)
###############################################################################
# ImageField
diff --git a/tests/model_fields/test_filefield.py b/tests/model_fields/test_filefield.py
index e67b6dd515..3fefcd1fb6 100644
--- a/tests/model_fields/test_filefield.py
+++ b/tests/model_fields/test_filefield.py
@@ -4,6 +4,7 @@ import unittest
from django.core.files import temp
from django.core.files.uploadedfile import TemporaryUploadedFile
+from django.db.utils import IntegrityError
from django.test import TestCase, override_settings
from .models import Document
@@ -61,6 +62,15 @@ class FileFieldTests(TestCase):
Document.objects.create(myfile='something.txt')
self.assertEqual(Document.objects.defer('myfile')[0].myfile, 'something.txt')
+ def test_unique_when_same_filename(self):
+ """
+ A FileField with unique=True shouldn't allow two instances with the
+ same name to be saved.
+ """
+ Document.objects.create(myfile='something.txt')
+ with self.assertRaises(IntegrityError):
+ Document.objects.create(myfile='something.txt')
+
@unittest.skipIf(sys.platform.startswith('win'), "Windows doesn't support moving open files.")
# The file's source and destination must be on the same filesystem.
@override_settings(MEDIA_ROOT=temp.gettempdir())