diff options
Diffstat (limited to 'tests/from_db_value')
| -rw-r--r-- | tests/from_db_value/models.py | 11 | ||||
| -rw-r--r-- | tests/from_db_value/test_deprecated.py | 22 |
2 files changed, 32 insertions, 1 deletions
diff --git a/tests/from_db_value/models.py b/tests/from_db_value/models.py index 2f2304ff0a..3968a193d6 100644 --- a/tests/from_db_value/models.py +++ b/tests/from_db_value/models.py @@ -17,7 +17,7 @@ class CashField(models.DecimalField): kwargs['decimal_places'] = 2 super().__init__(**kwargs) - def from_db_value(self, value, expression, connection, context): + def from_db_value(self, value, expression, connection): cash = Cash(value) cash.vendor = connection.vendor return cash @@ -28,3 +28,12 @@ class CashModel(models.Model): def __str__(self): return str(self.cash) + + +class CashFieldDeprecated(CashField): + def from_db_value(self, value, expression, connection, context): + return super().from_db_value(value, expression, connection) + + +class CashModelDeprecated(models.Model): + cash = CashFieldDeprecated() diff --git a/tests/from_db_value/test_deprecated.py b/tests/from_db_value/test_deprecated.py new file mode 100644 index 0000000000..f0e7ed92b7 --- /dev/null +++ b/tests/from_db_value/test_deprecated.py @@ -0,0 +1,22 @@ +import warnings + +from django.test import TestCase + +from .models import Cash, CashModelDeprecated + + +class FromDBValueDeprecationTests(TestCase): + + def test_deprecation(self): + CashModelDeprecated.objects.create(cash='12.50') + with warnings.catch_warnings(record=True) as warns: + warnings.simplefilter('always') + instance = CashModelDeprecated.objects.get() + self.assertIsInstance(instance.cash, Cash) + self.assertEqual(len(warns), 1) + msg = str(warns[0].message) + self.assertEqual( + msg, + 'Remove the context parameter from CashFieldDeprecated.from_db_value(). ' + 'Support for it will be removed in Django 3.0.' + ) |
