diff options
Diffstat (limited to 'tests/basic/tests.py')
| -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 |
