diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/expressions/tests.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py index 89601de85b..a06fbc6b95 100644 --- a/tests/expressions/tests.py +++ b/tests/expressions/tests.py @@ -29,6 +29,7 @@ from django.db.models import ( FloatField, Func, IntegerField, + JSONField, Max, Min, Model, @@ -81,6 +82,7 @@ from .models import ( Company, Employee, Experiment, + JSONFieldModel, Manager, Number, RemoteEmployee, @@ -365,6 +367,21 @@ class BasicExpressionsTests(TestCase): Number.objects.all(), [None, None], lambda n: n.float, ordered=False ) + @skipUnlessDBFeature("supports_json_field") + def test_update_jsonfield_case_when_key_is_null(self): + obj = JSONFieldModel.objects.create(data={"key": None}) + updated = JSONFieldModel.objects.update( + data=Case( + When( + data__key=Value(None, JSONField()), + then=Value({"key": "something"}, JSONField()), + ), + ) + ) + self.assertEqual(updated, 1) + obj.refresh_from_db() + self.assertEqual(obj.data, {"key": "something"}) + def test_filter_with_join(self): # F Expressions can also span joins Company.objects.update(point_of_contact=F("ceo")) |
