@@ -515,28 +515,55 @@ describe('Database.sql (async)', () => {
515515 } )
516516
517517 it ( 'should throw exception when using table name as binding' , async ( ) => {
518- const database = await getTestingDatabaseAsync ( )
519- const table = 'people'
520- await expect ( database . sql `SELECT * FROM ${ table } ` ) . rejects . toThrow ( 'near "?": syntax error' )
518+ let database
519+ try {
520+ database = await getTestingDatabaseAsync ( )
521+ const table = 'people'
522+ await expect ( database . sql `SELECT * FROM ${ table } ` ) . rejects . toThrow ( 'near "?": syntax error' )
523+ } finally {
524+ await removeDatabaseAsync ( database )
525+ }
521526 } )
522527
523- it ( 'should built in commands accept bindings' , async ( ) => {
524- const database = await getTestingDatabaseAsync ( )
528+ it ( 'should commands accept bindings' , async ( ) => {
529+ let database
530+ try {
531+ database = await getTestingDatabaseAsync ( )
525532
526- const databaseName = database . getConfiguration ( ) . database || ''
527- await expect ( database . sql `USE DATABASE ${ databaseName } ` ) . resolves . toBe ( 'OK' )
533+ const databaseName = database . getConfiguration ( ) . database || ''
534+ await expect ( database . sql `USE DATABASE ${ databaseName } ` ) . resolves . toBe ( 'OK' )
528535
529- const databaseNameInjectSQL = `${ databaseName } ; SELECT * FROM people`
530- await expect ( database . sql `USE DATABASE ${ databaseNameInjectSQL } ` ) . rejects . toThrow ( `Database name contains invalid characters (${ databaseNameInjectSQL } ).` )
536+ const databaseNameInjectSQL = `${ databaseName } ; SELECT * FROM people`
537+ await expect ( database . sql `USE DATABASE ${ databaseNameInjectSQL } ` ) . rejects . toThrow ( `Database name contains invalid characters (${ databaseNameInjectSQL } ).` )
531538
532- let key = 'logo_level'
533- let value = 'debug'
534- await expect ( database . sql `SET KEY ${ key } TO ${ value } ` ) . resolves . toBe ( 'OK' )
539+ let key = 'logo_level'
540+ let value = 'debug'
541+ await expect ( database . sql `SET KEY ${ key } TO ${ value } ` ) . resolves . toBe ( 'OK' )
535542
536- key = 'logo_level'
537- value = 'debug; DROP TABLE people'
538- await expect ( database . sql `SET KEY ${ key } TO ${ value } ` ) . resolves . toBe ( 'OK' )
539- const result = await database . sql `SELECT * FROM people`
540- expect ( result . length ) . toBeGreaterThan ( 0 )
543+ key = 'logo_level'
544+ value = 'debug; DROP TABLE people'
545+ await expect ( database . sql `SET KEY ${ key } TO ${ value } ` ) . resolves . toBe ( 'OK' )
546+ const result = await database . sql `SELECT * FROM people`
547+ expect ( result . length ) . toBeGreaterThan ( 0 )
548+ } finally {
549+ await removeDatabaseAsync ( database )
550+ }
551+ } )
552+
553+ it ( 'binding should work with unicode character' , async ( ) => {
554+ let database
555+ try {
556+ database = await getTestingDatabaseAsync ( )
557+ const name = 'unicorn-🦄'
558+
559+ let results = await database . sql ( 'INSERT INTO people (name, age, hobby) VALUES (?, 11, "");' , name )
560+ expect ( results . changes ) . toEqual ( 1 )
561+
562+ results = await database . sql ( 'SELECT * FROM people WHERE name = ?;' , name )
563+ expect ( results ) . toHaveLength ( 1 )
564+ expect ( results [ 0 ] . name ) . toEqual ( name )
565+ } finally {
566+ await removeDatabaseAsync ( database )
567+ }
541568 } )
542569} )
0 commit comments