1515)
1616from django .db .models .functions import Collate
1717from django .db .models .lookups import GreaterThan
18- from django .test import (
19- SimpleTestCase ,
20- TestCase ,
21- override_settings ,
22- skipIfDBFeature ,
23- skipUnlessDBFeature ,
24- )
18+ from django .test import SimpleTestCase , TestCase , override_settings , skipUnlessDBFeature
2519from django .utils import timezone
2620
2721from .models import (
@@ -44,47 +38,56 @@ def test_field_defaults(self):
4438 self .assertEqual (a .headline , "Default headline" )
4539 self .assertLess ((now - a .pub_date ).seconds , 5 )
4640
47- @skipUnlessDBFeature (
48- "can_return_columns_from_insert" , "supports_expression_defaults"
49- )
41+ @skipUnlessDBFeature ("supports_expression_defaults" )
5042 def test_field_db_defaults_returning (self ):
5143 a = DBArticle ()
5244 a .save ()
5345 self .assertIsInstance (a .id , int )
54- self .assertEqual (a .headline , "Default headline" )
55- self .assertIsInstance (a .pub_date , datetime )
56- self .assertEqual (a .cost , Decimal ("3.33" ))
46+ expected_num_queries = (
47+ 0 if connection .features .can_return_columns_from_insert else 3
48+ )
49+ with self .assertNumQueries (expected_num_queries ):
50+ self .assertEqual (a .headline , "Default headline" )
51+ self .assertIsInstance (a .pub_date , datetime )
52+ self .assertEqual (a .cost , Decimal ("3.33" ))
5753
58- @skipIfDBFeature ("can_return_columns_from_insert" )
5954 @skipUnlessDBFeature ("supports_expression_defaults" )
6055 def test_field_db_defaults_refresh (self ):
6156 a = DBArticle ()
6257 a .save ()
63- a .refresh_from_db ()
58+ expected_num_queries = (
59+ 0 if connection .features .can_return_columns_from_insert else 3
60+ )
6461 self .assertIsInstance (a .id , int )
65- self .assertEqual (a .headline , "Default headline" )
66- self .assertIsInstance (a .pub_date , datetime )
67- self .assertEqual (a .cost , Decimal ("3.33" ))
62+ with self .assertNumQueries (expected_num_queries ):
63+ self .assertEqual (a .headline , "Default headline" )
64+ self .assertIsInstance (a .pub_date , datetime )
65+ self .assertEqual (a .cost , Decimal ("3.33" ))
6866
6967 def test_null_db_default (self ):
7068 obj1 = DBDefaults .objects .create ()
71- if not connection .features .can_return_columns_from_insert :
72- obj1 .refresh_from_db ()
73- self .assertEqual (obj1 .null , 1.1 )
69+ expected_num_queries = (
70+ 0 if connection .features .can_return_columns_from_insert else 1
71+ )
72+ with self .assertNumQueries (expected_num_queries ):
73+ self .assertEqual (obj1 .null , 1.1 )
7474
7575 obj2 = DBDefaults .objects .create (null = None )
76- self .assertIsNone (obj2 .null )
76+ with self .assertNumQueries (0 ):
77+ self .assertIsNone (obj2 .null )
7778
7879 @skipUnlessDBFeature ("supports_expression_defaults" )
7980 @override_settings (USE_TZ = True )
8081 def test_db_default_function (self ):
8182 m = DBDefaultsFunction .objects .create ()
82- if not connection .features .can_return_columns_from_insert :
83- m .refresh_from_db ()
84- self .assertAlmostEqual (m .number , pi )
85- self .assertEqual (m .year , timezone .now ().year )
86- self .assertAlmostEqual (m .added , pi + 4.5 )
87- self .assertEqual (m .multiple_subfunctions , 4.5 )
83+ expected_num_queries = (
84+ 0 if connection .features .can_return_columns_from_insert else 4
85+ )
86+ with self .assertNumQueries (expected_num_queries ):
87+ self .assertAlmostEqual (m .number , pi )
88+ self .assertEqual (m .year , timezone .now ().year )
89+ self .assertAlmostEqual (m .added , pi + 4.5 )
90+ self .assertEqual (m .multiple_subfunctions , 4.5 )
8891
8992 @skipUnlessDBFeature ("insert_test_table_with_defaults" )
9093 def test_both_default (self ):
@@ -125,14 +128,15 @@ def test_foreign_key_db_default(self):
125128 child2 = DBDefaultsFK .objects .create (language_code = parent2 )
126129 self .assertEqual (child2 .language_code , parent2 )
127130
128- @skipUnlessDBFeature (
129- "can_return_columns_from_insert" , "supports_expression_defaults"
130- )
131+ @skipUnlessDBFeature ("supports_expression_defaults" )
131132 def test_case_when_db_default_returning (self ):
132133 m = DBDefaultsFunction .objects .create ()
133- self .assertEqual (m .case_when , 3 )
134+ expected_num_queries = (
135+ 0 if connection .features .can_return_columns_from_insert else 1
136+ )
137+ with self .assertNumQueries (expected_num_queries ):
138+ self .assertEqual (m .case_when , 3 )
134139
135- @skipIfDBFeature ("can_return_columns_from_insert" )
136140 @skipUnlessDBFeature ("supports_expression_defaults" )
137141 def test_case_when_db_default_no_returning (self ):
138142 m = DBDefaultsFunction .objects .create ()
0 commit comments