summaryrefslogtreecommitdiff
path: root/tests/model_fields/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/model_fields/tests.py')
-rw-r--r--tests/model_fields/tests.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/model_fields/tests.py b/tests/model_fields/tests.py
index 650e6dc0f9..db04b7fcad 100644
--- a/tests/model_fields/tests.py
+++ b/tests/model_fields/tests.py
@@ -8,6 +8,7 @@ import warnings
from django import test
from django import forms
from django.core import validators
+from django.core import checks
from django.core.exceptions import ValidationError
from django.db import connection, transaction, models, IntegrityError
from django.db.models.fields import (
@@ -20,6 +21,7 @@ from django.db.models.fields import (
from django.db.models.fields.files import FileField, ImageField
from django.utils import six
from django.utils.functional import lazy
+from django.test.utils import override_settings
from .models import (
Foo, Bar, Whiz, BigD, BigS, BigIntegerModel, Post, NullBooleanModel,
@@ -181,6 +183,22 @@ class ForeignKeyTests(test.TestCase):
fk_model_empty = FkToChar.objects.select_related('out').get(id=fk_model_empty.pk)
self.assertEqual(fk_model_empty.out, char_model_empty)
+ @override_settings(INSTALLED_APPS=['django.contrib.auth', 'django.contrib.contenttypes', 'model_fields'])
+ def test_warning_when_unique_true_on_fk(self):
+ class FKUniqueTrue(models.Model):
+ fk_field = models.ForeignKey(Foo, unique=True)
+
+ expected_warnings = [
+ checks.Warning(
+ 'Setting unique=True on a ForeignKey has the same effect as using a OneToOneField.',
+ hint='ForeignKey(unique=True) is usually better served by a OneToOneField.',
+ obj=FKUniqueTrue.fk_field.field,
+ id='fields.W342',
+ )
+ ]
+ warnings = checks.run_checks()
+ self.assertEqual(warnings, expected_warnings)
+
class DateTimeFieldTests(unittest.TestCase):
def test_datetimefield_to_python_usecs(self):