mirror of
https://github.com/knex/knex.git
synced 2025-07-08 17:43:24 +00:00
147 lines
4.9 KiB
JavaScript
147 lines
4.9 KiB
JavaScript
/*global describe, expect, it, d*/
|
|
|
|
'use strict';
|
|
|
|
module.exports = function(knex) {
|
|
|
|
describe('Updates', function () {
|
|
|
|
it('should handle updates', function() {
|
|
return knex('accounts')
|
|
.where('id', 1)
|
|
.update({
|
|
first_name: 'User',
|
|
last_name: 'Test',
|
|
email:'test100@example.com'
|
|
}).testSql(function(tester) {
|
|
tester(
|
|
'mysql',
|
|
'update `accounts` set `email` = ?, `first_name` = ?, `last_name` = ? where `id` = ?',
|
|
['test100@example.com','User','Test',1],
|
|
1
|
|
);
|
|
tester(
|
|
'postgresql',
|
|
'update "accounts" set "email" = ?, "first_name" = ?, "last_name" = ? where "id" = ?',
|
|
['test100@example.com','User','Test',1],
|
|
1
|
|
);
|
|
tester(
|
|
'sqlite3',
|
|
'update "accounts" set "email" = ?, "first_name" = ?, "last_name" = ? where "id" = ?',
|
|
['test100@example.com','User','Test',1],
|
|
1
|
|
);
|
|
});
|
|
});
|
|
|
|
it('should allow for null updates', function() {
|
|
return knex('accounts')
|
|
.where('id', 1000)
|
|
.update({
|
|
first_name: null,
|
|
last_name: 'Test',
|
|
email:'test100@example.com'
|
|
}).testSql(function(tester) {
|
|
tester(
|
|
'mysql',
|
|
'update `accounts` set `email` = ?, `first_name` = ?, `last_name` = ? where `id` = ?',
|
|
['test100@example.com', null, 'Test', 1000],
|
|
0
|
|
);
|
|
});
|
|
});
|
|
|
|
it('should increment a value', function() {
|
|
return knex('accounts').select('logins').where('id', 1).then(function(accounts) {
|
|
return knex('accounts').where('id', 1).increment('logins').then(function(rowsAffected) {
|
|
expect(rowsAffected).to.equal(1);
|
|
return knex('accounts').select('logins').where('id', 1);
|
|
}).then(function(accounts2) {
|
|
expect(accounts[0].logins + 1).to.equal(accounts2[0].logins);
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should increment a negative value', function() {
|
|
return knex('accounts').select('logins').where('id', 1).then(function(accounts) {
|
|
return knex('accounts').where('id', 1).increment('logins', -2).then(function(rowsAffected) {
|
|
expect(rowsAffected).to.equal(1);
|
|
return knex('accounts').select('logins').where('id', 1);
|
|
}).then(function(accounts2) {
|
|
expect(accounts[0].logins - 2).to.equal(accounts2[0].logins);
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should decrement a value', function() {
|
|
return knex('accounts').select('logins').where('id', 1).then(function(accounts) {
|
|
return knex('accounts').where('id', 1).decrement('logins').then(function(rowsAffected) {
|
|
expect(rowsAffected).to.equal(1);
|
|
return knex('accounts').select('logins').where('id', 1);
|
|
}).then(function(accounts2) {
|
|
expect(accounts[0].logins - 1).to.equal(accounts2[0].logins);
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should decrement a negative value', function() {
|
|
return knex('accounts').select('logins').where('id', 1).then(function(accounts) {
|
|
return knex('accounts').where('id', 1).decrement('logins', -2).then(function(rowsAffected) {
|
|
expect(rowsAffected).to.equal(1);
|
|
return knex('accounts').select('logins').where('id', 1);
|
|
}).then(function(accounts2) {
|
|
expect(accounts[0].logins + 2).to.equal(accounts2[0].logins);
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should allow returning for updates in postgresql', function() {
|
|
|
|
return knex('accounts').where('id', 1).update({
|
|
first_name: 'UpdatedUser',
|
|
last_name: 'UpdatedTest',
|
|
email:'test100@example.com'
|
|
}, '*').testSql(function(tester) {
|
|
tester(
|
|
'mysql',
|
|
'update `accounts` set `email` = ?, `first_name` = ?, `last_name` = ? where `id` = ?',
|
|
['test100@example.com','UpdatedUser','UpdatedTest',1],
|
|
1
|
|
);
|
|
tester(
|
|
'postgresql',
|
|
'update "accounts" set "email" = ?, "first_name" = ?, "last_name" = ? where "id" = ? returning *',
|
|
['test100@example.com','UpdatedUser','UpdatedTest',1],
|
|
[{
|
|
id: '1',
|
|
first_name: 'UpdatedUser',
|
|
last_name: 'UpdatedTest',
|
|
email: 'test100@example.com',
|
|
logins: 1,
|
|
about: 'Lorem ipsum Dolore labore incididunt enim.',
|
|
created_at: d,
|
|
updated_at: d,
|
|
phone: null
|
|
}]
|
|
);
|
|
tester(
|
|
'sqlite3',
|
|
'update "accounts" set "email" = ?, "first_name" = ?, "last_name" = ? where "id" = ?',
|
|
['test100@example.com','UpdatedUser','UpdatedTest',1],
|
|
1
|
|
);
|
|
tester(
|
|
'oracle',
|
|
'update "accounts" set "email" = ?, "first_name" = ?, "last_name" = ? where "id" = ?',
|
|
['test100@example.com','UpdatedUser','UpdatedTest',1],
|
|
1
|
|
);
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|