@@ -65,7 +65,7 @@ describe('keyword completion', () => {
65
65
test ( "complete 'WHERE' keyword multi-line" , ( ) => {
66
66
const result = complete (
67
67
`
68
- SELECT *
68
+ SELECT *
69
69
FROM FOO AS foo
70
70
W
71
71
` ,
@@ -220,7 +220,7 @@ describe('From clause', () => {
220
220
)
221
221
expect ( result . candidates . length ) . toEqual ( 1 )
222
222
expect ( result . candidates [ 0 ] . label ) . toEqual ( 'TABLE1' )
223
- expect ( result . candidates [ 0 ] . insertText ) . toEqual ( 'TABLE1 AS TAB ' )
223
+ expect ( result . candidates [ 0 ] . insertText ) . toEqual ( 'TABLE1' )
224
224
} )
225
225
226
226
test ( 'from clause: complete TableName:multi lines' , ( ) => {
@@ -277,8 +277,12 @@ describe('Where clause', () => {
277
277
{ line : 0 , column : 46 } ,
278
278
SIMPLE_SCHEMA
279
279
)
280
- expect ( result . candidates . length ) . toEqual ( 1 )
281
- expect ( result . candidates [ 0 ] . label ) . toEqual ( 'tab' )
280
+ const expected = [
281
+ expect . objectContaining ( { label : 'tab' } ) ,
282
+ expect . objectContaining ( { label : 'tab.COLUMN1' } ) ,
283
+ expect . objectContaining ( { label : 'tab.COLUMN2' } ) ,
284
+ ]
285
+ expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
282
286
} )
283
287
} )
284
288
@@ -343,13 +347,15 @@ describe('cursor on dot', () => {
343
347
expect ( result . candidates [ 0 ] . label ) . toEqual ( 'COLUMN2' )
344
348
} )
345
349
346
- test ( 'not complete when ' , ( ) => {
350
+ test ( 'suggest columns from table in the FROM clause ' , ( ) => {
347
351
const result = complete (
348
- 'SELECT FROM TABLE1' ,
352
+ 'SELECT C FROM TABLE1' ,
349
353
{ line : 0 , column : 8 } ,
350
354
SIMPLE_SCHEMA
351
355
)
352
- expect ( result . candidates . length ) . toEqual ( 13 ) // TODO what are they?
356
+ expect ( result . candidates . length ) . toEqual ( 2 )
357
+ expect ( result . candidates [ 0 ] . label ) . toEqual ( 'COLUMN1' )
358
+ expect ( result . candidates [ 1 ] . label ) . toEqual ( 'COLUMN2' )
353
359
} )
354
360
} )
355
361
@@ -390,7 +396,7 @@ describe('JOIN', () => {
390
396
test ( 'from clause: INNER JOIN' , ( ) => {
391
397
const result = complete (
392
398
`
393
- SELECT
399
+ SELECT
394
400
*
395
401
FROM TABLE1 AS a
396
402
INN` ,
@@ -415,9 +421,7 @@ describe('Fully qualified table names', () => {
415
421
SIMPLE_NESTED_SCHEMA
416
422
)
417
423
expect ( result . candidates . length ) . toEqual ( 1 )
418
- const expected = [
419
- expect . objectContaining ( { label : 'catalog3.schema3.table3' } ) ,
420
- ]
424
+ const expected = [ expect . objectContaining ( { label : 'catalog3' } ) ]
421
425
expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
422
426
} )
423
427
test ( 'complete schema name' , ( ) => {
@@ -427,7 +431,7 @@ describe('Fully qualified table names', () => {
427
431
SIMPLE_NESTED_SCHEMA
428
432
)
429
433
expect ( result . candidates . length ) . toEqual ( 1 )
430
- const expected = [ expect . objectContaining ( { label : 'schema3.table3 ' } ) ]
434
+ const expected = [ expect . objectContaining ( { label : 'schema3' } ) ]
431
435
expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
432
436
} )
433
437
test ( 'complete table name' , ( ) => {
@@ -450,17 +454,15 @@ describe('Fully qualified table names', () => {
450
454
const expected = [ expect . objectContaining ( { label : 'table3' } ) ]
451
455
expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
452
456
} )
453
- test ( 'complete table name by using fully qualified table name' , ( ) => {
457
+
458
+ test ( 'not complete table name when not qualified' , ( ) => {
454
459
const result = complete (
455
- 'SELECT * FROM tabl ' ,
460
+ 'SELECT * FROM TABL ' ,
456
461
{ line : 0 , column : 18 } ,
457
462
SIMPLE_NESTED_SCHEMA
458
463
)
459
- expect ( result . candidates . length ) . toEqual ( 2 )
460
- const expected = [
461
- expect . objectContaining ( { label : 'table2' } ) ,
462
- expect . objectContaining ( { label : 'table3' } ) ,
463
- ]
464
+ expect ( result . candidates . length ) . toEqual ( 1 )
465
+ const expected = [ expect . objectContaining ( { label : 'TABLE1' } ) ]
464
466
expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
465
467
} )
466
468
test ( 'complete alias when table' , ( ) => {
@@ -469,7 +471,6 @@ describe('Fully qualified table names', () => {
469
471
{ line : 0 , column : 8 } ,
470
472
SIMPLE_NESTED_SCHEMA
471
473
)
472
- expect ( result . candidates . length ) . toEqual ( 1 )
473
474
const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
474
475
expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
475
476
} )
@@ -479,7 +480,6 @@ describe('Fully qualified table names', () => {
479
480
{ line : 0 , column : 8 } ,
480
481
SIMPLE_NESTED_SCHEMA
481
482
)
482
- expect ( result . candidates . length ) . toEqual ( 1 )
483
483
const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
484
484
expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
485
485
} )
@@ -489,7 +489,6 @@ describe('Fully qualified table names', () => {
489
489
{ line : 0 , column : 8 } ,
490
490
SIMPLE_NESTED_SCHEMA
491
491
)
492
- expect ( result . candidates . length ) . toEqual ( 1 )
493
492
const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
494
493
expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
495
494
} )
@@ -499,7 +498,6 @@ describe('Fully qualified table names', () => {
499
498
{ line : 0 , column : 11 } ,
500
499
SIMPLE_NESTED_SCHEMA
501
500
)
502
- expect ( result . candidates . length ) . toEqual ( 1 )
503
501
const expected = [ expect . objectContaining ( { label : 'abc' } ) ]
504
502
expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
505
503
} )
@@ -510,11 +508,8 @@ describe('Fully qualified table names', () => {
510
508
{ line : 0 , column : 17 } ,
511
509
SIMPLE_NESTED_SCHEMA
512
510
)
513
- expect ( result . candidates . length ) . toEqual ( 2 )
514
- const expected = [
515
- expect . objectContaining ( { label : 'schema2.table2' } ) ,
516
- expect . objectContaining ( { label : 'schema3.table3' } ) ,
517
- ]
511
+ expect ( result . candidates . length ) . toEqual ( 1 )
512
+ const expected = [ expect . objectContaining ( { label : 'schema2' } ) ]
518
513
expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
519
514
} )
520
515
test ( 'complete table name' , ( ) => {
@@ -533,7 +528,6 @@ describe('Fully qualified table names', () => {
533
528
{ line : 0 , column : 8 } ,
534
529
SIMPLE_NESTED_SCHEMA
535
530
)
536
- expect ( result . candidates . length ) . toEqual ( 1 )
537
531
const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
538
532
expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
539
533
} )
@@ -543,18 +537,16 @@ describe('Fully qualified table names', () => {
543
537
{ line : 0 , column : 8 } ,
544
538
SIMPLE_NESTED_SCHEMA
545
539
)
546
- expect ( result . candidates . length ) . toEqual ( 1 )
547
540
const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
548
541
expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
549
542
} )
550
- test ( 'complete alias when catalog. schema.table' , ( ) => {
543
+ test ( 'complete aliased+column when schema.table' , ( ) => {
551
544
const result = complete (
552
545
'SELECT a FROM schema2.table2 AS ali' ,
553
546
{ line : 0 , column : 8 } ,
554
547
SIMPLE_NESTED_SCHEMA
555
548
)
556
- expect ( result . candidates . length ) . toEqual ( 1 )
557
- const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
549
+ const expected = [ expect . objectContaining ( { label : 'ali.abc' } ) ]
558
550
expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
559
551
} )
560
552
test ( 'complete aliased column name' , ( ) => {
0 commit comments