summaryrefslogtreecommitdiff
path: root/tests/postgres_tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests/postgres_tests')
-rw-r--r--tests/postgres_tests/test_constraints.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/postgres_tests/test_constraints.py b/tests/postgres_tests/test_constraints.py
index b3822e5805..a6f7b5be85 100644
--- a/tests/postgres_tests/test_constraints.py
+++ b/tests/postgres_tests/test_constraints.py
@@ -123,6 +123,41 @@ class SchemaTests(PostgreSQLTestCase):
timestamps_inner=(datetime_1, datetime_2),
)
+ def test_check_constraint_range_contains(self):
+ constraint = CheckConstraint(
+ check=Q(ints__contains=(1, 5)),
+ name="ints_contains",
+ )
+ msg = f"Constraint “{constraint.name}” is violated."
+ with self.assertRaisesMessage(ValidationError, msg):
+ constraint.validate(RangesModel, RangesModel(ints=(6, 10)))
+
+ def test_check_constraint_range_lower_upper(self):
+ constraint = CheckConstraint(
+ check=Q(ints__startswith__gte=0) & Q(ints__endswith__lte=99),
+ name="ints_range_lower_upper",
+ )
+ msg = f"Constraint “{constraint.name}” is violated."
+ with self.assertRaisesMessage(ValidationError, msg):
+ constraint.validate(RangesModel, RangesModel(ints=(-1, 20)))
+ with self.assertRaisesMessage(ValidationError, msg):
+ constraint.validate(RangesModel, RangesModel(ints=(0, 100)))
+ constraint.validate(RangesModel, RangesModel(ints=(0, 99)))
+
+ def test_check_constraint_range_lower_with_nulls(self):
+ constraint = CheckConstraint(
+ check=Q(ints__isnull=True) | Q(ints__startswith__gte=0),
+ name="ints_optional_positive_range",
+ )
+ constraint.validate(RangesModel, RangesModel())
+ constraint = CheckConstraint(
+ check=Q(ints__startswith__gte=0),
+ name="ints_positive_range",
+ )
+ msg = f"Constraint “{constraint.name}” is violated."
+ with self.assertRaisesMessage(ValidationError, msg):
+ constraint.validate(RangesModel, RangesModel())
+
def test_opclass(self):
constraint = UniqueConstraint(
name="test_opclass",