2222from opentelemetry .sdk .resources import Resource
2323from opentelemetry .semconv .resource import ResourceAttributes
2424
25- from google .cloud .spanner_v1 import TransactionOptions , _helpers
25+ from google .cloud .spanner_v1 import ExecuteSqlRequest , TransactionOptions , _helpers
26+
27+
28+ class Test_to_query_options (unittest .TestCase ):
29+ def _callFUT (self , * args , ** kw ):
30+ from google .cloud .spanner_v1 ._helpers import _to_query_options
31+
32+ return _to_query_options (* args , ** kw )
33+
34+ def test_none (self ):
35+ self .assertIsNone (self ._callFUT (None ))
36+
37+ def test_empty_dict (self ):
38+ self .assertIsNone (self ._callFUT ({}))
39+
40+ def test_dict_with_empty_values (self ):
41+ self .assertIsNone (self ._callFUT ({"optimizer_version" : "" }))
42+
43+ def test_valid_dict (self ):
44+ expected = ExecuteSqlRequest .QueryOptions (optimizer_version = "1" )
45+ result = self ._callFUT ({"optimizer_version" : "1" })
46+ self .assertEqual (result , expected )
47+
48+ def test_empty_proto_object (self ):
49+ self .assertIsNone (self ._callFUT (ExecuteSqlRequest .QueryOptions ()))
50+
51+ def test_populated_proto_object (self ):
52+ options = ExecuteSqlRequest .QueryOptions (optimizer_version = "1" )
53+ result = self ._callFUT (options )
54+ self .assertEqual (result , options )
55+
56+ def test_invalid_type (self ):
57+ with self .assertRaises (TypeError ):
58+ self ._callFUT ("invalid" )
59+ with self .assertRaises (TypeError ):
60+ self ._callFUT (123 )
2661
2762
2863class Test_merge_query_options (unittest .TestCase ):
@@ -37,8 +72,6 @@ def test_base_none_and_merge_none(self):
3772 self .assertIsNone (result )
3873
3974 def test_base_dict_and_merge_none (self ):
40- from google .cloud .spanner_v1 import ExecuteSqlRequest
41-
4275 base = {
4376 "optimizer_version" : "2" ,
4477 "optimizer_statistics_package" : "auto_20191128_14_47_22UTC" ,
@@ -52,16 +85,12 @@ def test_base_dict_and_merge_none(self):
5285 self .assertEqual (result , expected )
5386
5487 def test_base_empty_and_merge_empty (self ):
55- from google .cloud .spanner_v1 import ExecuteSqlRequest
56-
5788 base = ExecuteSqlRequest .QueryOptions ()
5889 merge = ExecuteSqlRequest .QueryOptions ()
5990 result = self ._callFUT (base , merge )
6091 self .assertIsNone (result )
6192
6293 def test_base_none_merge_object (self ):
63- from google .cloud .spanner_v1 import ExecuteSqlRequest
64-
6594 base = None
6695 merge = ExecuteSqlRequest .QueryOptions (
6796 optimizer_version = "3" ,
@@ -71,29 +100,125 @@ def test_base_none_merge_object(self):
71100 self .assertEqual (result , merge )
72101
73102 def test_base_none_merge_dict (self ):
74- from google .cloud .spanner_v1 import ExecuteSqlRequest
75-
76103 base = None
77104 merge = {"optimizer_version" : "3" }
78105 expected = ExecuteSqlRequest .QueryOptions (optimizer_version = "3" )
79106 result = self ._callFUT (base , merge )
80107 self .assertEqual (result , expected )
81108
82109 def test_base_object_merge_dict (self ):
83- from google .cloud .spanner_v1 import ExecuteSqlRequest
110+ base = ExecuteSqlRequest .QueryOptions (
111+ optimizer_version = "1" ,
112+ optimizer_statistics_package = "auto_20191128_14_47_22UTC" ,
113+ )
114+ merge = {"optimizer_version" : "3" }
115+ expected = ExecuteSqlRequest .QueryOptions (
116+ optimizer_version = "3" ,
117+ optimizer_statistics_package = "auto_20191128_14_47_22UTC" ,
118+ )
119+ result = self ._callFUT (base , merge )
120+ self .assertEqual (result , expected )
84121
122+ def test_base_object_and_merge_none (self ):
123+ base = ExecuteSqlRequest .QueryOptions (
124+ optimizer_version = "2" ,
125+ optimizer_statistics_package = "auto_20191128_14_47_22UTC" ,
126+ )
127+ result = self ._callFUT (base , None )
128+ self .assertEqual (result , base )
129+
130+ def test_base_empty_object_and_merge_none (self ):
131+ base = ExecuteSqlRequest .QueryOptions ()
132+ result = self ._callFUT (base , None )
133+ self .assertIsNone (result )
134+
135+ def test_base_none_merge_empty_object (self ):
136+ merge = ExecuteSqlRequest .QueryOptions ()
137+ result = self ._callFUT (None , merge )
138+ self .assertIsNone (result )
139+
140+ def test_base_object_not_mutated_on_merge (self ):
85141 base = ExecuteSqlRequest .QueryOptions (
86142 optimizer_version = "1" ,
87143 optimizer_statistics_package = "auto_20191128_14_47_22UTC" ,
88144 )
89145 merge = {"optimizer_version" : "3" }
146+ result = self ._callFUT (base , merge )
90147 expected = ExecuteSqlRequest .QueryOptions (
91148 optimizer_version = "3" ,
92149 optimizer_statistics_package = "auto_20191128_14_47_22UTC" ,
93150 )
151+ self .assertEqual (result , expected )
152+ self .assertEqual (base .optimizer_version , "1" )
153+
154+ def test_base_dict_merge_dict (self ):
155+ base = {"optimizer_version" : "1" }
156+ merge = {"optimizer_statistics_package" : "auto_20191128_14_47_22UTC" }
157+ expected = ExecuteSqlRequest .QueryOptions (
158+ optimizer_version = "1" ,
159+ optimizer_statistics_package = "auto_20191128_14_47_22UTC" ,
160+ )
94161 result = self ._callFUT (base , merge )
95162 self .assertEqual (result , expected )
96163
164+ def test_base_dict_override_dict (self ):
165+ base = {
166+ "optimizer_version" : "1" ,
167+ "optimizer_statistics_package" : "pkg1" ,
168+ }
169+ merge = {"optimizer_version" : "2" }
170+ expected = ExecuteSqlRequest .QueryOptions (
171+ optimizer_version = "2" ,
172+ optimizer_statistics_package = "pkg1" ,
173+ )
174+ result = self ._callFUT (base , merge )
175+ self .assertEqual (result , expected )
176+
177+ def test_base_dict_empty_merge_none (self ):
178+ result = self ._callFUT ({}, None )
179+ self .assertIsNone (result )
180+
181+ def test_base_none_merge_dict_empty (self ):
182+ result = self ._callFUT (None , {})
183+ self .assertIsNone (result )
184+
185+ def test_base_empty_dict_merge_empty_dict (self ):
186+ result = self ._callFUT ({}, {})
187+ self .assertIsNone (result )
188+
189+ def test_base_empty_dict_merge_object (self ):
190+ merge = ExecuteSqlRequest .QueryOptions (optimizer_version = "1" )
191+ result = self ._callFUT ({}, merge )
192+ self .assertEqual (result , merge )
193+
194+ def test_base_object_merge_empty_dict (self ):
195+ base = ExecuteSqlRequest .QueryOptions (optimizer_version = "1" )
196+ result = self ._callFUT (base , {})
197+ self .assertEqual (result , base )
198+
199+ def test_base_object_merge_object (self ):
200+ base = ExecuteSqlRequest .QueryOptions (
201+ optimizer_version = "1" ,
202+ optimizer_statistics_package = "pkg1" ,
203+ )
204+ merge = ExecuteSqlRequest .QueryOptions (optimizer_version = "2" )
205+ result = self ._callFUT (base , merge )
206+ expected = ExecuteSqlRequest .QueryOptions (
207+ optimizer_version = "2" ,
208+ optimizer_statistics_package = "pkg1" ,
209+ )
210+ self .assertEqual (result , expected )
211+ self .assertEqual (base .optimizer_version , "1" )
212+ self .assertEqual (base .optimizer_statistics_package , "pkg1" )
213+ self .assertEqual (merge .optimizer_version , "2" )
214+ self .assertEqual (merge .optimizer_statistics_package , "" )
215+
216+ def test_invalid_type_raises_error (self ):
217+ with self .assertRaises (TypeError ):
218+ self ._callFUT ("invalid" , None )
219+ with self .assertRaises (TypeError ):
220+ self ._callFUT (None , 123 )
221+
97222
98223class Test_get_cloud_region (unittest .TestCase ):
99224 def setUp (self ):
0 commit comments