knex/test/integration/builder/additional.js

82 lines
2.6 KiB
JavaScript
Raw Normal View History

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 () {
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');
tester('sqlite3', "delete from sqlite_sequence where name = \"test_table_two\"");
2013-12-27 14:44:21 -05: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]);
});
});
it('should allow using the primary table as a raw statement', function() {
expect(knex(knex.raw("raw_table_name")).toQuery()).to.equal('select * from raw_table_name');
});
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\")"]);
});
}).then(function() {
2014-04-16 01:23:50 -04:00
return knex.count('*').from('accounts');
}).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() {
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);
});
});
});
};