summaryrefslogtreecommitdiff
path: root/tests/model_fields
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2024-12-06 20:44:35 -0500
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-12-09 09:46:06 +0100
commit1860a1afc9ac20750f932e8e0a94b32d096f2848 (patch)
treea8746f34c7d47cebddf99e18e962f57b78a3f290 /tests/model_fields
parentb0b30247204aea8096b3c5456d71c2df9bc4f4ae (diff)
Fixed #35982 -- Made DecimalField.get_db_prep_value() call DatabaseOperations.adapt_decimalfield_value().
Regression in e9814029f570bd0866dc859147bca90340bcc913. Thanks Simon Charette for advice and review.
Diffstat (limited to 'tests/model_fields')
-rw-r--r--tests/model_fields/test_decimalfield.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/tests/model_fields/test_decimalfield.py b/tests/model_fields/test_decimalfield.py
index 588bb64a3a..17f59674e8 100644
--- a/tests/model_fields/test_decimalfield.py
+++ b/tests/model_fields/test_decimalfield.py
@@ -1,9 +1,10 @@
import math
from decimal import Decimal
+from unittest import mock
from django.core import validators
from django.core.exceptions import ValidationError
-from django.db import models
+from django.db import connection, models
from django.test import TestCase
from .models import BigD, Foo
@@ -48,6 +49,20 @@ class DecimalFieldTests(TestCase):
self.assertIsNone(f.get_prep_value(None))
self.assertEqual(f.get_prep_value("2.4"), Decimal("2.4"))
+ def test_get_db_prep_value(self):
+ """
+ DecimalField.get_db_prep_value() must call
+ DatabaseOperations.adapt_decimalfield_value().
+ """
+ f = models.DecimalField(max_digits=5, decimal_places=1)
+ # None of the built-in database backends implement
+ # adapt_decimalfield_value(), so this must be confirmed with mocking.
+ with mock.patch.object(
+ connection.ops.__class__, "adapt_decimalfield_value"
+ ) as adapt_decimalfield_value:
+ f.get_db_prep_value("2.4", connection)
+ adapt_decimalfield_value.assert_called_with(Decimal("2.4"), 5, 1)
+
def test_filter_with_strings(self):
"""
Should be able to filter decimal fields using strings (#8023).