From 0ec60661e61b153e6bcec64649b1b7f524eb3e18 Mon Sep 17 00:00:00 2001 From: Julie Rymer Date: Mon, 15 May 2023 15:19:38 +0200 Subject: Fixed #34539 -- Restored get_prep_value() call when adapting JSONFields. Regression in 5c23d9f0c32f166c81ecb6f3f01d5077a6084318. --- tests/model_fields/test_jsonfield.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'tests/model_fields') diff --git a/tests/model_fields/test_jsonfield.py b/tests/model_fields/test_jsonfield.py index 60357d87b2..4a1cc075b4 100644 --- a/tests/model_fields/test_jsonfield.py +++ b/tests/model_fields/test_jsonfield.py @@ -103,6 +103,29 @@ class TestMethods(SimpleTestCase): with self.assertRaisesMessage(TypeError, msg): KeyTransformTextLookupMixin(transform) + def test_get_prep_value(self): + class JSONFieldGetPrepValue(models.JSONField): + def get_prep_value(self, value): + if value is True: + return {"value": True} + return value + + def noop_adapt_json_value(value, encoder): + return value + + field = JSONFieldGetPrepValue() + with mock.patch.object( + connection.ops, "adapt_json_value", noop_adapt_json_value + ): + self.assertEqual( + field.get_db_prep_value(True, connection, prepared=False), + {"value": True}, + ) + self.assertIs( + field.get_db_prep_value(True, connection, prepared=True), True + ) + self.assertEqual(field.get_db_prep_value(1, connection, prepared=False), 1) + class TestValidation(SimpleTestCase): def test_invalid_encoder(self): -- cgit v1.3