2013-09-12 01:00:44 -04:00
module . exports = function ( knex ) {
2014-04-16 01:23:50 -04:00
var _ = require ( 'lodash' ) ;
2013-09-12 13:30:47 -04:00
describe ( 'Additional' , function ( ) {
2013-09-12 01:00:44 -04:00
it ( 'should truncate a table with truncate' , function ( ) {
return knex ( 'test_table_two' )
. truncate ( )
2013-12-27 14:44:21 -05:00
. testSql ( function ( tester ) {
tester ( 'mysql' , 'truncate `test_table_two`' ) ;
tester ( 'postgresql' , 'truncate "test_table_two" restart identity' ) ;
2014-02-23 15:38:53 -05:00
tester ( 'sqlite3' , "delete from sqlite_sequence where name = \"test_table_two\"" ) ;
2013-12-27 14:44:21 -05:00
} )
2013-09-12 01:00:44 -04:00
. then ( function ( ) {
return knex ( 'test_table_two' )
. select ( '*' )
. then ( function ( resp ) {
expect ( resp ) . to . have . length ( 0 ) ;
} ) ;
} ) ;
} ) ;
it ( 'should allow raw queries directly with `knex.raw`' , function ( ) {
var tables = {
mysql : 'SHOW TABLES' ,
postgresql : "SELECT table_name FROM information_schema.tables WHERE table_schema='public'" ,
sqlite3 : "SELECT name FROM sqlite_master WHERE type='table';"
} ;
2013-12-27 14:44:21 -05:00
return knex . raw ( tables [ knex . client . dialect ] ) . testSql ( function ( tester ) {
tester ( knex . client . dialect , tables [ knex . client . dialect ] ) ;
} ) ;
2013-09-12 01:00:44 -04:00
} ) ;
it ( 'should allow using the primary table as a raw statement' , function ( ) {
2014-03-14 16:56:55 -04:00
expect ( knex ( knex . raw ( "raw_table_name" ) ) . toQuery ( ) ) . to . equal ( 'select * from raw_table_name' ) ;
2014-04-21 23:08:59 -04:00
} ) ;
2013-09-12 01:00:44 -04:00
2014-04-21 23:08:59 -04:00
it ( 'gets the columnInfo' , function ( ) {
return knex ( 'datatype_test' ) . columnInfo ( ) . testSql ( function ( tester ) {
tester ( 'mysql' ,
'select column_name, data_type, character_maximum_length from information_schema.columns where table_name = ? and table_schema = ?' ,
2014-04-27 18:53:25 -04:00
null , {
2014-04-21 23:08:59 -04:00
"enum_value" : {
"length" : 1 ,
"type" : "enum"
} ,
"uuid" : {
"length" : 36 ,
"type" : "char"
}
} ) ;
tester ( 'postgresql' , 'select column_name, data_type, character_maximum_length from information_schema.columns where table_name = ? and table_catalog = ?' ,
2014-04-27 18:53:25 -04:00
null , {
2014-04-21 23:08:59 -04:00
"enum_value" : {
"length" : null ,
"type" : "text"
} ,
"uuid" : {
"length" : null ,
"type" : "uuid"
}
} ) ;
tester ( 'sqlite3' , 'PRAGMA table_info(datatype_test)' , [ ] , {
"enum_value" : {
"length" : null ,
"type" : "varchar"
} ,
"uuid" : {
"length" : "36" ,
"type" : "char"
}
} ) ;
} ) ;
2013-09-12 01:00:44 -04:00
} ) ;
2014-04-16 01:23:50 -04:00
it ( 'should allow renaming a column' , function ( ) {
var count , inserts = [ ] ;
_ . times ( 40 , function ( ) {
inserts . push ( { first _name : 'Test' , last _name : 'Data' } ) ;
} ) ;
return knex ( 'accounts' ) . insert ( inserts ) . then ( function ( ) {
return knex . count ( '*' ) . from ( 'accounts' ) ;
} ) . then ( function ( resp ) {
count = resp [ 'count(*)' ] ;
return knex . schema . table ( 'accounts' , function ( t ) {
t . renameColumn ( 'about' , 'about_col' ) ;
} ) . testSql ( function ( tester ) {
tester ( 'mysql' , [ "show fields from `accounts` where field = ?" ] ) ;
tester ( 'postgresql' , [ "alter table \"accounts\" rename \"about\" to \"about_col\"" ] ) ;
tester ( 'sqlite3' , [ "PRAGMA table_info(\"accounts\")" ] ) ;
} ) ;
2013-09-12 01:00:44 -04:00
} ) . then ( function ( ) {
2014-04-16 01:23:50 -04:00
return knex . count ( '*' ) . from ( 'accounts' ) ;
2013-09-12 01:00:44 -04:00
} ) . then ( function ( resp ) {
2014-04-16 01:23:50 -04:00
expect ( resp [ 'count(*)' ] ) . to . equal ( count ) ;
} ) . then ( function ( ) {
return knex ( 'accounts' ) . select ( 'about_col' ) ;
} ) . then ( function ( ) {
2013-09-12 01:00:44 -04:00
return knex . schema . table ( 'accounts' , function ( t ) {
t . renameColumn ( 'about_col' , 'about' ) ;
} ) ;
2014-04-16 01:23:50 -04:00
} ) . then ( function ( ) {
return knex . count ( '*' ) . from ( 'accounts' ) ;
} ) . then ( function ( resp ) {
expect ( resp [ 'count(*)' ] ) . to . equal ( count ) ;
2013-09-12 01:00:44 -04:00
} ) ;
} ) ;
} ) ;
} ;