diff options
| author | Simon Charette <charette.s@gmail.com> | 2025-03-19 01:39:19 -0400 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2025-09-14 00:27:50 +0200 |
| commit | 94680437a45a71c70ca8bd2e68b72aa1e2eff337 (patch) | |
| tree | 0246e0b5a8dde81f0a327e1c7c7e3accd9257870 /tests/basic | |
| parent | 55a0073b3beb9de8f7c1f7c44a7d0bc10126c841 (diff) | |
Fixed #27222 -- Refreshed model field values assigned expressions on save().
Removed the can_return_columns_from_insert skip gates on existing
field_defaults tests to confirm the expected number of queries are
performed and that returning field overrides are respected.
Diffstat (limited to 'tests/basic')
| -rw-r--r-- | tests/basic/tests.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/basic/tests.py b/tests/basic/tests.py index f8ec2715f6..38e7278210 100644 --- a/tests/basic/tests.py +++ b/tests/basic/tests.py @@ -1,5 +1,6 @@ import inspect import threading +import time from datetime import datetime, timedelta from unittest import mock @@ -12,6 +13,7 @@ from django.db import ( models, transaction, ) +from django.db.models.functions import Now from django.db.models.manager import BaseManager from django.db.models.query import MAX_GET_RESULTS, EmptyQuerySet from django.test import ( @@ -558,6 +560,26 @@ class ModelTest(TestCase): with self.subTest(case=case): self.assertIs(case._is_pk_set(), True) + def test_save_expressions(self): + article = Article(pub_date=Now()) + article.save() + expected_num_queries = ( + 0 if connection.features.can_return_columns_from_insert else 1 + ) + with self.assertNumQueries(expected_num_queries): + article_pub_date = article.pub_date + self.assertIsInstance(article_pub_date, datetime) + # Sleep slightly to ensure a different database level NOW(). + time.sleep(0.1) + article.pub_date = Now() + article.save() + expected_num_queries = ( + 0 if connection.features.can_return_rows_from_update else 1 + ) + with self.assertNumQueries(expected_num_queries): + self.assertIsInstance(article.pub_date, datetime) + self.assertGreater(article.pub_date, article_pub_date) + class ModelLookupTest(TestCase): @classmethod |
