@@ -224,4 +224,69 @@ mod tests {
224
224
"`email` not present in first four completion items."
225
225
) ;
226
226
}
227
+
228
+ #[ tokio:: test]
229
+ async fn prefers_columns_of_mentioned_tables ( ) {
230
+ let setup = r#"
231
+ create schema private;
232
+
233
+ create table private.users (
234
+ id1 serial primary key,
235
+ name1 text,
236
+ address1 text,
237
+ email1 text
238
+ );
239
+
240
+ create table public.users (
241
+ id2 serial primary key,
242
+ name2 text,
243
+ address2 text,
244
+ email2 text
245
+ );
246
+ "# ;
247
+
248
+ {
249
+ let test_case = TestCase {
250
+ message : "" ,
251
+ query : format ! ( r#"select {} from users"# , CURSOR_POS ) ,
252
+ label : "suggests from table" ,
253
+ description : "" ,
254
+ } ;
255
+
256
+ let ( tree, cache) = get_test_deps ( setup, test_case. get_input_query ( ) ) . await ;
257
+ let params = get_test_params ( & tree, & cache, test_case. get_input_query ( ) ) ;
258
+ let results = complete ( params) ;
259
+
260
+ assert_eq ! (
261
+ results
262
+ . into_iter( )
263
+ . take( 4 )
264
+ . map( |item| item. label)
265
+ . collect:: <Vec <String >>( ) ,
266
+ vec![ "address2" , "email2" , "id2" , "name2" ]
267
+ ) ;
268
+ }
269
+
270
+ {
271
+ let test_case = TestCase {
272
+ message : "" ,
273
+ query : format ! ( r#"select {} from private.users"# , CURSOR_POS ) ,
274
+ label : "suggests from table" ,
275
+ description : "" ,
276
+ } ;
277
+
278
+ let ( tree, cache) = get_test_deps ( setup, test_case. get_input_query ( ) ) . await ;
279
+ let params = get_test_params ( & tree, & cache, test_case. get_input_query ( ) ) ;
280
+ let results = complete ( params) ;
281
+
282
+ assert_eq ! (
283
+ results
284
+ . into_iter( )
285
+ . take( 4 )
286
+ . map( |item| item. label)
287
+ . collect:: <Vec <String >>( ) ,
288
+ vec![ "address1" , "email1" , "id1" , "name1" ]
289
+ ) ;
290
+ }
291
+ }
227
292
}
0 commit comments