mirror of
https://github.com/django/django.git
synced 2025-08-31 07:47:37 +00:00
Fixed #11964 -- Added support for database check constraints.
This commit is contained in:
parent
6fbfb5cb96
commit
952f05a6db
29 changed files with 799 additions and 39 deletions
30
tests/constraints/tests.py
Normal file
30
tests/constraints/tests.py
Normal file
|
@ -0,0 +1,30 @@
|
|||
from django.db import IntegrityError, models
|
||||
from django.test import TestCase, skipUnlessDBFeature
|
||||
|
||||
from .models import Product
|
||||
|
||||
|
||||
class CheckConstraintTests(TestCase):
|
||||
def test_repr(self):
|
||||
constraint = models.Q(price__gt=models.F('discounted_price'))
|
||||
name = 'price_gt_discounted_price'
|
||||
check = models.CheckConstraint(constraint, name)
|
||||
self.assertEqual(
|
||||
repr(check),
|
||||
"<CheckConstraint: constraint='{}' name='{}'>".format(constraint, name),
|
||||
)
|
||||
|
||||
def test_deconstruction(self):
|
||||
constraint = models.Q(price__gt=models.F('discounted_price'))
|
||||
name = 'price_gt_discounted_price'
|
||||
check = models.CheckConstraint(constraint, name)
|
||||
path, args, kwargs = check.deconstruct()
|
||||
self.assertEqual(path, 'django.db.models.CheckConstraint')
|
||||
self.assertEqual(args, ())
|
||||
self.assertEqual(kwargs, {'constraint': constraint, 'name': name})
|
||||
|
||||
@skipUnlessDBFeature('supports_table_check_constraints')
|
||||
def test_model_constraint(self):
|
||||
Product.objects.create(name='Valid', price=10, discounted_price=5)
|
||||
with self.assertRaises(IntegrityError):
|
||||
Product.objects.create(name='Invalid', price=10, discounted_price=20)
|
Loading…
Add table
Add a link
Reference in a new issue