diff options
Diffstat (limited to 'tests/postgres_tests/test_array.py')
| -rw-r--r-- | tests/postgres_tests/test_array.py | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py index e2e4ccdeb2..77ac049ce4 100644 --- a/tests/postgres_tests/test_array.py +++ b/tests/postgres_tests/test_array.py @@ -4,7 +4,7 @@ import unittest import uuid from django import forms -from django.core import exceptions, serializers, validators +from django.core import checks, exceptions, serializers, validators from django.core.exceptions import FieldError from django.core.management import call_command from django.db import IntegrityError, connection, models @@ -424,6 +424,38 @@ class TestChecks(PostgreSQLTestCase): self.assertEqual(len(errors), 1) self.assertEqual(errors[0].id, 'postgres.E002') + def test_invalid_default(self): + class MyModel(PostgreSQLModel): + field = ArrayField(models.IntegerField(), default=[]) + + model = MyModel() + self.assertEqual(model.check(), [ + checks.Warning( + msg=( + "ArrayField default should be a callable instead of an " + "instance so that it's not shared between all field " + "instances." + ), + hint='Use a callable instead, e.g., use `list` instead of `[]`.', + obj=MyModel._meta.get_field('field'), + id='postgres.E003', + ) + ]) + + def test_valid_default(self): + class MyModel(PostgreSQLModel): + field = ArrayField(models.IntegerField(), default=list) + + model = MyModel() + self.assertEqual(model.check(), []) + + def test_valid_default_none(self): + class MyModel(PostgreSQLModel): + field = ArrayField(models.IntegerField(), default=None) + + model = MyModel() + self.assertEqual(model.check(), []) + def test_nested_field_checks(self): """ Nested ArrayFields are permitted. |
