summaryrefslogtreecommitdiff
path: root/tests/basic
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2025-03-19 01:39:19 -0400
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2025-09-14 00:27:50 +0200
commit94680437a45a71c70ca8bd2e68b72aa1e2eff337 (patch)
tree0246e0b5a8dde81f0a327e1c7c7e3accd9257870 /tests/basic
parent55a0073b3beb9de8f7c1f7c44a7d0bc10126c841 (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.py22
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