summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorHonza Král <honza.kral@gmail.com>2009-06-02 00:37:23 +0000
committerHonza Král <honza.kral@gmail.com>2009-06-02 00:37:23 +0000
commitea52757c1032da39fab6c11cd2b4481f37e9eeff (patch)
treee31ebcc4fe8b2151639b96418f2cee19002162be /tests
parentd484d021f20ebb079b20e85b6e249317452263fb (diff)
[soc2009/model-validation] Tests for Model._get_unique_checks
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/model-validation@10883 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/modeltests/validation/models.py22
-rw-r--r--tests/modeltests/validation/tests.py25
2 files changed, 46 insertions, 1 deletions
diff --git a/tests/modeltests/validation/models.py b/tests/modeltests/validation/models.py
index 61095fc52c..e1bbaa6a39 100644
--- a/tests/modeltests/validation/models.py
+++ b/tests/modeltests/validation/models.py
@@ -15,3 +15,25 @@ class ModelToValidate(models.Model):
if self.number == 11:
raise ValidationError('Invalid number supplied!')
+class UniqueFieldsModel(models.Model):
+ unique_charfield = models.CharField(max_length=100, unique=True)
+ unique_integerfield = models.IntegerField(unique=True)
+ non_unique_field = models.IntegerField()
+
+class CustomPKModel(models.Model):
+ my_pk_field = models.CharField(max_length=100, primary_key=True)
+
+class UniqueTogetherModel(models.Model):
+ cfield = models.CharField(max_length=100)
+ ifield = models.IntegerField()
+ efield = models.EmailField()
+
+ class Meta:
+ unique_together = (('ifield', 'cfield',),('ifield', 'efield'), )
+
+class UniqueForDateModel(models.Model):
+ start_date = models.DateField()
+ end_date = models.DateTimeField()
+ count = models.IntegerField(unique_for_date="start_date", unique_for_year="end_date")
+ order = models.IntegerField(unique_for_month="end_date")
+ name = models.CharField(max_length=100)
diff --git a/tests/modeltests/validation/tests.py b/tests/modeltests/validation/tests.py
index 4bd7e8abf1..fd30628c19 100644
--- a/tests/modeltests/validation/tests.py
+++ b/tests/modeltests/validation/tests.py
@@ -1,7 +1,8 @@
from django.core.exceptions import ValidationError, NON_FIELD_ERRORS
from django.test import TestCase
+from django.db import models
-from models import ModelToValidate
+from models import *
class BaseModelValidationTests(TestCase):
def test_missing_required_field_raises_error(self):
@@ -37,3 +38,25 @@ class BaseModelValidationTests(TestCase):
mtv=ModelToValidate(number=10, name='Some Name', parent_id=parent.pk)
self.assertEqual(None, mtv.clean())
+class GetUniqueCheckTests(TestCase):
+ def test_unique_fields_get_collected(self):
+ m = UniqueFieldsModel()
+ self.assertEqual(([('id',), ('unique_charfield',), ('unique_integerfield',)], []), m._get_unique_checks())
+
+ def test_unique_together_gets_picked_up(self):
+ m = UniqueTogetherModel()
+ self.assertEqual(([('ifield', 'cfield',),('ifield', 'efield'), ('id',), ], []), m._get_unique_checks())
+
+ def test_primary_key_is_considered_unique(self):
+ m = CustomPKModel()
+ self.assertEqual(([('my_pk_field',)], []), m._get_unique_checks())
+
+ def test_unique_for_date_gets_picked_up(self):
+ m = UniqueForDateModel()
+ self.assertEqual((
+ [('id',)],
+ [('date', 'count', 'start_date'), ('year', 'count', 'end_date'), ('month', 'order', 'end_date')]
+ ), m._get_unique_checks()
+ )
+
+