mirror of https://github.com/django/django.git
Refs #31197 -- Added tests for combined expressions in CheckConstraint.check.
Thanks Adam Johnson for the report.
Fixed in 306b687520
.
This commit is contained in:
parent
971a84d6af
commit
b423873cb7
|
@ -1816,6 +1816,34 @@ class OperationTests(OperationTestBase):
|
||||||
Pony(pink=3, weight=3.0),
|
Pony(pink=3, weight=3.0),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@skipUnlessDBFeature('supports_table_check_constraints')
|
||||||
|
def test_add_constraint_combinable(self):
|
||||||
|
app_label = 'test_addconstraint_combinable'
|
||||||
|
operations = [
|
||||||
|
CreateModel(
|
||||||
|
'Book',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(primary_key=True)),
|
||||||
|
('read', models.PositiveIntegerField()),
|
||||||
|
('unread', models.PositiveIntegerField()),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
||||||
|
from_state = self.apply_operations(app_label, ProjectState(), operations)
|
||||||
|
constraint = models.CheckConstraint(
|
||||||
|
check=models.Q(read=(100 - models.F('unread'))),
|
||||||
|
name='test_addconstraint_combinable_sum_100',
|
||||||
|
)
|
||||||
|
operation = migrations.AddConstraint('Book', constraint)
|
||||||
|
to_state = from_state.clone()
|
||||||
|
operation.state_forwards(app_label, to_state)
|
||||||
|
with connection.schema_editor() as editor:
|
||||||
|
operation.database_forwards(app_label, editor, from_state, to_state)
|
||||||
|
Book = to_state.apps.get_model(app_label, 'Book')
|
||||||
|
with self.assertRaises(IntegrityError), transaction.atomic():
|
||||||
|
Book.objects.create(read=70, unread=10)
|
||||||
|
Book.objects.create(read=70, unread=30)
|
||||||
|
|
||||||
@skipUnlessDBFeature('supports_table_check_constraints')
|
@skipUnlessDBFeature('supports_table_check_constraints')
|
||||||
def test_remove_constraint(self):
|
def test_remove_constraint(self):
|
||||||
project_state = self.set_up_test_model("test_removeconstraint", constraints=[
|
project_state = self.set_up_test_model("test_removeconstraint", constraints=[
|
||||||
|
|
Loading…
Reference in New Issue