@@ -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 ` ,
@@ -228,7 +228,7 @@ describe('From clause', () => {
228228 )
229229 expect ( result . candidates . length ) . toEqual ( 1 )
230230 expect ( result . candidates [ 0 ] . label ) . toEqual ( 'TABLE1' )
231- expect ( result . candidates [ 0 ] . insertText ) . toEqual ( 'TABLE1 AS TAB ' )
231+ expect ( result . candidates [ 0 ] . insertText ) . toEqual ( 'TABLE1' )
232232 } )
233233
234234 test ( 'from clause: complete TableName:multi lines' , ( ) => {
@@ -285,8 +285,12 @@ describe('Where clause', () => {
285285 { line : 0 , column : 46 } ,
286286 SIMPLE_SCHEMA
287287 )
288- expect ( result . candidates . length ) . toEqual ( 1 )
289- expect ( result . candidates [ 0 ] . label ) . toEqual ( 'tab' )
288+ const expected = [
289+ expect . objectContaining ( { label : 'tab' } ) ,
290+ expect . objectContaining ( { label : 'tab.COLUMN1' } ) ,
291+ expect . objectContaining ( { label : 'tab.COLUMN2' } ) ,
292+ ]
293+ expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
290294 } )
291295} )
292296
@@ -351,13 +355,15 @@ describe('cursor on dot', () => {
351355 expect ( result . candidates [ 0 ] . label ) . toEqual ( 'COLUMN2' )
352356 } )
353357
354- test ( 'not complete when ' , ( ) => {
358+ test ( 'suggest columns from table in the FROM clause ' , ( ) => {
355359 const result = complete (
356- 'SELECT FROM TABLE1' ,
360+ 'SELECT C FROM TABLE1' ,
357361 { line : 0 , column : 8 } ,
358362 SIMPLE_SCHEMA
359363 )
360- expect ( result . candidates . length ) . toEqual ( 15 ) // TODO what are they?
364+ expect ( result . candidates . length ) . toEqual ( 2 )
365+ expect ( result . candidates [ 0 ] . label ) . toEqual ( 'COLUMN1' )
366+ expect ( result . candidates [ 1 ] . label ) . toEqual ( 'COLUMN2' )
361367 } )
362368} )
363369
@@ -398,7 +404,7 @@ describe('JOIN', () => {
398404 test ( 'from clause: INNER JOIN' , ( ) => {
399405 const result = complete (
400406 `
401- SELECT
407+ SELECT
402408 *
403409 FROM TABLE1 AS a
404410 INN` ,
@@ -423,9 +429,7 @@ describe('Fully qualified table names', () => {
423429 SIMPLE_NESTED_SCHEMA
424430 )
425431 expect ( result . candidates . length ) . toEqual ( 1 )
426- const expected = [
427- expect . objectContaining ( { label : 'catalog3.schema3.table3' } ) ,
428- ]
432+ const expected = [ expect . objectContaining ( { label : 'catalog3' } ) ]
429433 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
430434 } )
431435 test ( 'complete schema name' , ( ) => {
@@ -435,7 +439,7 @@ describe('Fully qualified table names', () => {
435439 SIMPLE_NESTED_SCHEMA
436440 )
437441 expect ( result . candidates . length ) . toEqual ( 1 )
438- const expected = [ expect . objectContaining ( { label : 'schema3.table3 ' } ) ]
442+ const expected = [ expect . objectContaining ( { label : 'schema3' } ) ]
439443 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
440444 } )
441445 test ( 'complete table name' , ( ) => {
@@ -458,17 +462,15 @@ describe('Fully qualified table names', () => {
458462 const expected = [ expect . objectContaining ( { label : 'table3' } ) ]
459463 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
460464 } )
461- test ( 'complete table name by using fully qualified table name' , ( ) => {
465+
466+ test ( 'not complete table name when not qualified' , ( ) => {
462467 const result = complete (
463- 'SELECT * FROM tabl ' ,
468+ 'SELECT * FROM TABL ' ,
464469 { line : 0 , column : 18 } ,
465470 SIMPLE_NESTED_SCHEMA
466471 )
467- expect ( result . candidates . length ) . toEqual ( 2 )
468- const expected = [
469- expect . objectContaining ( { label : 'table2' } ) ,
470- expect . objectContaining ( { label : 'table3' } ) ,
471- ]
472+ expect ( result . candidates . length ) . toEqual ( 1 )
473+ const expected = [ expect . objectContaining ( { label : 'TABLE1' } ) ]
472474 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
473475 } )
474476 test ( 'complete alias when table' , ( ) => {
@@ -477,7 +479,6 @@ describe('Fully qualified table names', () => {
477479 { line : 0 , column : 8 } ,
478480 SIMPLE_NESTED_SCHEMA
479481 )
480- expect ( result . candidates . length ) . toEqual ( 1 )
481482 const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
482483 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
483484 } )
@@ -487,7 +488,6 @@ describe('Fully qualified table names', () => {
487488 { line : 0 , column : 8 } ,
488489 SIMPLE_NESTED_SCHEMA
489490 )
490- expect ( result . candidates . length ) . toEqual ( 1 )
491491 const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
492492 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
493493 } )
@@ -497,7 +497,6 @@ describe('Fully qualified table names', () => {
497497 { line : 0 , column : 8 } ,
498498 SIMPLE_NESTED_SCHEMA
499499 )
500- expect ( result . candidates . length ) . toEqual ( 1 )
501500 const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
502501 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
503502 } )
@@ -507,7 +506,6 @@ describe('Fully qualified table names', () => {
507506 { line : 0 , column : 11 } ,
508507 SIMPLE_NESTED_SCHEMA
509508 )
510- expect ( result . candidates . length ) . toEqual ( 1 )
511509 const expected = [ expect . objectContaining ( { label : 'abc' } ) ]
512510 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
513511 } )
@@ -518,11 +516,8 @@ describe('Fully qualified table names', () => {
518516 { line : 0 , column : 17 } ,
519517 SIMPLE_NESTED_SCHEMA
520518 )
521- expect ( result . candidates . length ) . toEqual ( 2 )
522- const expected = [
523- expect . objectContaining ( { label : 'schema2.table2' } ) ,
524- expect . objectContaining ( { label : 'schema3.table3' } ) ,
525- ]
519+ expect ( result . candidates . length ) . toEqual ( 1 )
520+ const expected = [ expect . objectContaining ( { label : 'schema2' } ) ]
526521 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
527522 } )
528523 test ( 'complete table name' , ( ) => {
@@ -541,7 +536,6 @@ describe('Fully qualified table names', () => {
541536 { line : 0 , column : 8 } ,
542537 SIMPLE_NESTED_SCHEMA
543538 )
544- expect ( result . candidates . length ) . toEqual ( 1 )
545539 const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
546540 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
547541 } )
@@ -551,18 +545,16 @@ describe('Fully qualified table names', () => {
551545 { line : 0 , column : 8 } ,
552546 SIMPLE_NESTED_SCHEMA
553547 )
554- expect ( result . candidates . length ) . toEqual ( 1 )
555548 const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
556549 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
557550 } )
558- test ( 'complete alias when catalog. schema.table' , ( ) => {
551+ test ( 'complete aliased+column when schema.table' , ( ) => {
559552 const result = complete (
560553 'SELECT a FROM schema2.table2 AS ali' ,
561554 { line : 0 , column : 8 } ,
562555 SIMPLE_NESTED_SCHEMA
563556 )
564- expect ( result . candidates . length ) . toEqual ( 1 )
565- const expected = [ expect . objectContaining ( { label : 'ali' } ) ]
557+ const expected = [ expect . objectContaining ( { label : 'ali.abc' } ) ]
566558 expect ( result . candidates ) . toEqual ( expect . arrayContaining ( expected ) )
567559 } )
568560 test ( 'complete aliased column name' , ( ) => {
0 commit comments