mirror of
https://github.com/django/django.git
synced 2025-08-03 10:34:04 +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
|
@ -127,7 +127,12 @@ class StateTests(SimpleTestCase):
|
|||
self.assertIs(author_state.fields[3][1].null, True)
|
||||
self.assertEqual(
|
||||
author_state.options,
|
||||
{"unique_together": {("name", "bio")}, "index_together": {("bio", "age")}, "indexes": []}
|
||||
{
|
||||
"unique_together": {("name", "bio")},
|
||||
"index_together": {("bio", "age")},
|
||||
"indexes": [],
|
||||
"constraints": [],
|
||||
}
|
||||
)
|
||||
self.assertEqual(author_state.bases, (models.Model,))
|
||||
|
||||
|
@ -139,14 +144,17 @@ class StateTests(SimpleTestCase):
|
|||
self.assertEqual(book_state.fields[3][1].__class__.__name__, "ManyToManyField")
|
||||
self.assertEqual(
|
||||
book_state.options,
|
||||
{"verbose_name": "tome", "db_table": "test_tome", "indexes": [book_index]},
|
||||
{"verbose_name": "tome", "db_table": "test_tome", "indexes": [book_index], "constraints": []},
|
||||
)
|
||||
self.assertEqual(book_state.bases, (models.Model,))
|
||||
|
||||
self.assertEqual(author_proxy_state.app_label, "migrations")
|
||||
self.assertEqual(author_proxy_state.name, "AuthorProxy")
|
||||
self.assertEqual(author_proxy_state.fields, [])
|
||||
self.assertEqual(author_proxy_state.options, {"proxy": True, "ordering": ["name"], "indexes": []})
|
||||
self.assertEqual(
|
||||
author_proxy_state.options,
|
||||
{"proxy": True, "ordering": ["name"], "indexes": [], "constraints": []},
|
||||
)
|
||||
self.assertEqual(author_proxy_state.bases, ("migrations.author",))
|
||||
|
||||
self.assertEqual(sub_author_state.app_label, "migrations")
|
||||
|
@ -1002,7 +1010,7 @@ class ModelStateTests(SimpleTestCase):
|
|||
self.assertEqual(author_state.fields[1][1].max_length, 255)
|
||||
self.assertIs(author_state.fields[2][1].null, False)
|
||||
self.assertIs(author_state.fields[3][1].null, True)
|
||||
self.assertEqual(author_state.options, {'swappable': 'TEST_SWAPPABLE_MODEL', 'indexes': []})
|
||||
self.assertEqual(author_state.options, {'swappable': 'TEST_SWAPPABLE_MODEL', 'indexes': [], "constraints": []})
|
||||
self.assertEqual(author_state.bases, (models.Model,))
|
||||
self.assertEqual(author_state.managers, [])
|
||||
|
||||
|
@ -1047,7 +1055,7 @@ class ModelStateTests(SimpleTestCase):
|
|||
self.assertEqual(station_state.fields[2][1].null, False)
|
||||
self.assertEqual(
|
||||
station_state.options,
|
||||
{'abstract': False, 'swappable': 'TEST_SWAPPABLE_MODEL', 'indexes': []}
|
||||
{'abstract': False, 'swappable': 'TEST_SWAPPABLE_MODEL', 'indexes': [], 'constraints': []}
|
||||
)
|
||||
self.assertEqual(station_state.bases, ('migrations.searchablelocation',))
|
||||
self.assertEqual(station_state.managers, [])
|
||||
|
@ -1129,6 +1137,21 @@ class ModelStateTests(SimpleTestCase):
|
|||
index_names = [index.name for index in model_state.options['indexes']]
|
||||
self.assertEqual(index_names, ['foo_idx'])
|
||||
|
||||
@isolate_apps('migrations')
|
||||
def test_from_model_constraints(self):
|
||||
class ModelWithConstraints(models.Model):
|
||||
size = models.IntegerField()
|
||||
|
||||
class Meta:
|
||||
constraints = [models.CheckConstraint(models.Q(size__gt=1), 'size_gt_1')]
|
||||
|
||||
state = ModelState.from_model(ModelWithConstraints)
|
||||
model_constraints = ModelWithConstraints._meta.constraints
|
||||
state_constraints = state.options['constraints']
|
||||
self.assertEqual(model_constraints, state_constraints)
|
||||
self.assertIsNot(model_constraints, state_constraints)
|
||||
self.assertIsNot(model_constraints[0], state_constraints[0])
|
||||
|
||||
|
||||
class RelatedModelsTests(SimpleTestCase):
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue