@@ -71,6 +71,17 @@ def test_insert_with_upsert(self, request_builder: SyncRequestBuilder):
71
71
assert builder .http_method == "POST"
72
72
assert builder .json == {"key1" : "val1" }
73
73
74
+ def test_upsert_with_default_single (self , request_builder : SyncRequestBuilder ):
75
+ builder = request_builder .upsert ([{"key1" : "val1" }], default_to_null = False )
76
+ assert builder .headers .get_list ("prefer" , True ) == [
77
+ "return=representation" ,
78
+ "resolution=merge-duplicates" ,
79
+ "missing=default" ,
80
+ ]
81
+ assert builder .http_method == "POST"
82
+ assert builder .json == [{"key1" : "val1" }]
83
+ assert builder .params .get ("columns" ) == '"key1"'
84
+
74
85
def test_bulk_insert_using_default (self , request_builder : SyncRequestBuilder ):
75
86
builder = request_builder .insert (
76
87
[{"key1" : "val1" , "key2" : "val2" }, {"key3" : "val3" }], default_to_null = False
@@ -95,17 +106,6 @@ def test_upsert(self, request_builder: SyncRequestBuilder):
95
106
assert builder .http_method == "POST"
96
107
assert builder .json == {"key1" : "val1" }
97
108
98
- def test_upsert_with_default_single (self , request_builder : SyncRequestBuilder ):
99
- builder = request_builder .upsert ([{"key1" : "val1" }], default_to_null = False )
100
- assert builder .headers .get_list ("prefer" , True ) == [
101
- "return=representation" ,
102
- "resolution=merge-duplicates" ,
103
- "missing=default" ,
104
- ]
105
- assert builder .http_method == "POST"
106
- assert builder .json == [{"key1" : "val1" }]
107
- assert builder .params .get ("columns" ) == '"key1"'
108
-
109
109
def test_bulk_upsert_with_default (self , request_builder : SyncRequestBuilder ):
110
110
builder = request_builder .upsert (
111
111
[{"key1" : "val1" , "key2" : "val2" }, {"key3" : "val3" }], default_to_null = False
@@ -190,6 +190,32 @@ def test_explain_options(self, request_builder: SyncRequestBuilder):
190
190
assert "options=analyze|verbose|buffers|wal" in str (builder .headers .get ("accept" ))
191
191
192
192
193
+ class TestOrder :
194
+ def test_order (self , request_builder : SyncRequestBuilder ):
195
+ builder = request_builder .select ().order ("country_name" , desc = True )
196
+ assert str (builder .params ) == "order=country_name.desc"
197
+
198
+ def test_multiple_orders (self , request_builder : SyncRequestBuilder ):
199
+ builder = (
200
+ request_builder .select ()
201
+ .order ("country_name" , desc = True )
202
+ .order ("iso" , desc = True )
203
+ )
204
+ assert str (builder .params ) == "order=country_name.desc%2Ciso.desc"
205
+
206
+ def test_multiple_orders_on_foreign_table (self , request_builder : SyncRequestBuilder ):
207
+ foreign_table = "cities"
208
+ builder = (
209
+ request_builder .select ()
210
+ .order ("city_name" , desc = True , foreign_table = foreign_table )
211
+ .order ("id" , desc = True , foreign_table = foreign_table )
212
+ )
213
+ assert (
214
+ str (builder .params )
215
+ == "order=cities%28city_name%29.desc%2Ccities%28id%29.desc"
216
+ )
217
+
218
+
193
219
class TestRange :
194
220
def test_range_on_own_table (self , request_builder : SyncRequestBuilder ):
195
221
builder = request_builder .select ("*" ).range (0 , 1 )
0 commit comments