@@ -65,7 +65,7 @@ describe('keyword completion', () => {
6565 test ( "complete 'WHERE' keyword multi-line" , ( ) => {
6666 const result = complete (
6767 `
68- SELECT *
68+ SELECT *
6969 FROM FOO AS foo
7070 W
7171 ` ,
@@ -220,7 +220,7 @@ describe('From clause', () => {
220220 )
221221 expect ( result . candidates . length ) . toEqual ( 1 )
222222 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' )
224224 } )
225225
226226 test ( 'from clause: complete TableName:multi lines' , ( ) => {
@@ -277,8 +277,12 @@ describe('Where clause', () => {
277277 { line : 0 , column : 46 } ,
278278 SIMPLE_SCHEMA
279279 )
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 ) )
282286 } )
283287} )
284288
@@ -343,13 +347,15 @@ describe('cursor on dot', () => {
343347 expect ( result . candidates [ 0 ] . label ) . toEqual ( 'COLUMN2' )
344348 } )
345349
346- test ( 'not complete when ' , ( ) => {
350+ test ( 'suggest columns from table in the FROM clause ' , ( ) => {
347351 const result = complete (
348- 'SELECT FROM TABLE1' ,
352+ 'SELECT C FROM TABLE1' ,
349353 { line : 0 , column : 8 } ,
350354 SIMPLE_SCHEMA
351355 )
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' )
353359 } )
354360} )
355361
@@ -390,7 +396,7 @@ describe('JOIN', () => {
390396 test ( 'from clause: INNER JOIN' , ( ) => {
391397 const result = complete (
392398 `
393- SELECT
399+ SELECT
394400 *
395401 FROM TABLE1 AS a
396402 INN` ,
@@ -415,9 +421,7 @@ describe('Fully qualified table names', () => {
415421 SIMPLE_NESTED_SCHEMA
416422 )
417423 expect ( result . candidates . length ) . toEqual ( 1 )
418- const expected = [
419- expect . objectContaining ( { label : 'catalog3.schema3.table3' } ) ,
420- ]
424+ const expected = [ expect . objectContaining ( { label : 'catalog3' } ) ]
421425 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
422426 } )
423427 test ( 'complete schema name' , ( ) => {
@@ -427,7 +431,7 @@ describe('Fully qualified table names', () => {
427431 SIMPLE_NESTED_SCHEMA
428432 )
429433 expect ( result . candidates . length ) . toEqual ( 1 )
430- const expected = [ expect . objectContaining ( { label : 'schema3.table3 ' } ) ]
434+ const expected = [ expect . objectContaining ( { label : 'schema3' } ) ]
431435 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
432436 } )
433437 test ( 'complete table name' , ( ) => {
@@ -450,17 +454,15 @@ describe('Fully qualified table names', () => {
450454 const expected = [ expect . objectContaining ( { label : 'table3' } ) ]
451455 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
452456 } )
453- test ( 'complete table name by using fully qualified table name' , ( ) => {
457+
458+ test ( 'not complete table name when not qualified' , ( ) => {
454459 const result = complete (
455- 'SELECT * FROM tabl ' ,
460+ 'SELECT * FROM TABL ' ,
456461 { line : 0 , column : 18 } ,
457462 SIMPLE_NESTED_SCHEMA
458463 )
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' } ) ]
464466 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
465467 } )
466468 test ( 'complete alias when table' , ( ) => {
@@ -469,7 +471,6 @@ describe('Fully qualified table names', () => {
469471 { line : 0 , column : 8 } ,
470472 SIMPLE_NESTED_SCHEMA
471473 )
472- expect ( result . candidates . length ) . toEqual ( 1 )
473474 const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
474475 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
475476 } )
@@ -479,7 +480,6 @@ describe('Fully qualified table names', () => {
479480 { line : 0 , column : 8 } ,
480481 SIMPLE_NESTED_SCHEMA
481482 )
482- expect ( result . candidates . length ) . toEqual ( 1 )
483483 const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
484484 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
485485 } )
@@ -489,7 +489,6 @@ describe('Fully qualified table names', () => {
489489 { line : 0 , column : 8 } ,
490490 SIMPLE_NESTED_SCHEMA
491491 )
492- expect ( result . candidates . length ) . toEqual ( 1 )
493492 const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
494493 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
495494 } )
@@ -499,7 +498,6 @@ describe('Fully qualified table names', () => {
499498 { line : 0 , column : 11 } ,
500499 SIMPLE_NESTED_SCHEMA
501500 )
502- expect ( result . candidates . length ) . toEqual ( 1 )
503501 const expected = [ expect . objectContaining ( { label : 'abc' } ) ]
504502 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
505503 } )
@@ -510,11 +508,8 @@ describe('Fully qualified table names', () => {
510508 { line : 0 , column : 17 } ,
511509 SIMPLE_NESTED_SCHEMA
512510 )
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' } ) ]
518513 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
519514 } )
520515 test ( 'complete table name' , ( ) => {
@@ -533,7 +528,6 @@ describe('Fully qualified table names', () => {
533528 { line : 0 , column : 8 } ,
534529 SIMPLE_NESTED_SCHEMA
535530 )
536- expect ( result . candidates . length ) . toEqual ( 1 )
537531 const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
538532 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
539533 } )
@@ -543,18 +537,16 @@ describe('Fully qualified table names', () => {
543537 { line : 0 , column : 8 } ,
544538 SIMPLE_NESTED_SCHEMA
545539 )
546- expect ( result . candidates . length ) . toEqual ( 1 )
547540 const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
548541 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
549542 } )
550- test ( 'complete alias when catalog. schema.table' , ( ) => {
543+ test ( 'complete aliased+column when schema.table' , ( ) => {
551544 const result = complete (
552545 'SELECT a FROM schema2.table2 AS ali' ,
553546 { line : 0 , column : 8 } ,
554547 SIMPLE_NESTED_SCHEMA
555548 )
556- expect ( result . candidates . length ) . toEqual ( 1 )
557- const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
549+ const expected = [ expect . objectContaining ( { label : 'ali.abc' } ) ]
558550 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
559551 } )
560552 test ( 'complete aliased column name' , ( ) => {
0 commit comments