From aa47c24568bf80e98d3b6b98f01ceb5a79adb7c7 Mon Sep 17 00:00:00 2001 From: Tim Griesser Date: Wed, 26 Mar 2014 19:15:46 -0400 Subject: [PATCH] additional tests & data for #219 --- test/integration/builder/inserts.js | 19 ++++++++- test/integration/builder/selects.js | 10 +++-- test/integration/output/Joins.js | 60 ++++++++++++++--------------- test/integration/output/Schema.js | 2 +- test/integration/output/Selects.js | 54 ++++++++++++++++++++++++++ 5 files changed, 109 insertions(+), 36 deletions(-) diff --git a/test/integration/builder/inserts.js b/test/integration/builder/inserts.js index ee2d431f..c5ff23e3 100644 --- a/test/integration/builder/inserts.js +++ b/test/integration/builder/inserts.js @@ -39,7 +39,24 @@ module.exports = function(knex) { logins: 2, created_at: new Date(), updated_at: new Date() - }], 'id'); + }], 'id').then(function() { + return knex('composite_key_test').insert([{ + column_a: 1, + column_b: 1, + details: 'One, One, One', + status: 1 + }, { + column_a: 1, + column_b: 2, + details: 'One, Two, Zero', + status: 0 + }, { + column_a: 1, + column_b: 3, + details: 'One, Three, Zero', + status: 0 + }]); + }); }); diff --git a/test/integration/builder/selects.js b/test/integration/builder/selects.js index c7d2f7ad..a2c4ed50 100644 --- a/test/integration/builder/selects.js +++ b/test/integration/builder/selects.js @@ -136,17 +136,19 @@ module.exports = function(knex) { if (knex.client.dialect != 'sqlite3') { return knex('composite_key_test') .whereIn(['column_a', 'column_b'], [[1, 1], [1, 2]]) + .logMe() .select(); } else { - return true + return true; } }); - + it('handles multi-column "or where in" cases', function() { if (knex.client.dialect != 'sqlite3') { return knex('composite_key_test') .where('status', 1) + .logMe() .whereIn(['column_a', 'column_b'], [[1, 1], [1, 2]]) .select(); } else { @@ -155,11 +157,11 @@ module.exports = function(knex) { }); - + it('handles "where exists"', function() { return knex('accounts') - .whereExists(function(qb) { + .whereExists(function() { this.select('id').from('test_table_two').where({id: 1}); }) .select(); diff --git a/test/integration/output/Joins.js b/test/integration/output/Joins.js index 3e65ab4e..7a87fccb 100644 --- a/test/integration/output/Joins.js +++ b/test/integration/output/Joins.js @@ -86,8 +86,8 @@ module.exports = { email: 'test@example.com', logins: 1, about: 'Lorem ipsum Dolore labore incididunt enim.', - created_at: 1385400239318, - updated_at: 1385400239318, + created_at: 1395875717488, + updated_at: 1395875717488, phone: null, details: 'Lorem ipsum Minim nostrud Excepteur consectetur enim ut qui sint in veniam in nulla anim do cillum sunt voluptate Duis non incididunt.' },{ @@ -97,8 +97,8 @@ module.exports = { email: 'test2@example.com', logins: 1, about: 'Lorem ipsum Dolore labore incididunt enim.', - created_at: 1385400239319, - updated_at: 1385400239319, + created_at: 1395875717489, + updated_at: 1395875717489, phone: null, details: 'Lorem ipsum Minim nostrud Excepteur consectetur enim ut qui sint in veniam in nulla anim do cillum sunt voluptate Duis non incididunt.' },{ @@ -108,8 +108,8 @@ module.exports = { email: 'test3@example.com', logins: 2, about: 'Lorem ipsum Dolore labore incididunt enim.', - created_at: 1385400239319, - updated_at: 1385400239319, + created_at: 1395875717489, + updated_at: 1395875717489, phone: null, details: '' }] @@ -268,8 +268,8 @@ module.exports = { email: 'test@example.com', logins: 1, about: 'Lorem ipsum Dolore labore incididunt enim.', - created_at: 1385400239318, - updated_at: 1385400239318, + created_at: 1395875717488, + updated_at: 1395875717488, phone: null, details: 'Lorem ipsum Minim nostrud Excepteur consectetur enim ut qui sint in veniam in nulla anim do cillum sunt voluptate Duis non incididunt.' },{ @@ -279,8 +279,8 @@ module.exports = { email: 'test2@example.com', logins: 1, about: 'Lorem ipsum Dolore labore incididunt enim.', - created_at: 1385400239319, - updated_at: 1385400239319, + created_at: 1395875717489, + updated_at: 1395875717489, phone: null, details: 'Lorem ipsum Minim nostrud Excepteur consectetur enim ut qui sint in veniam in nulla anim do cillum sunt voluptate Duis non incididunt.' },{ @@ -290,8 +290,8 @@ module.exports = { email: 'test3@example.com', logins: 2, about: 'Lorem ipsum Dolore labore incididunt enim.', - created_at: 1385400239319, - updated_at: 1385400239319, + created_at: 1395875717489, + updated_at: 1395875717489, phone: null, details: '' },{ @@ -301,8 +301,8 @@ module.exports = { email: 'test4@example.com', logins: 2, about: 'Lorem ipsum Dolore labore incididunt enim.', - created_at: 1385400239321, - updated_at: 1385400239321, + created_at: 1395875717490, + updated_at: 1395875717490, phone: null, details: null },{ @@ -312,8 +312,8 @@ module.exports = { email: 'test5@example.com', logins: 2, about: 'Lorem ipsum Dolore labore incididunt enim.', - created_at: 1385400239321, - updated_at: 1385400239321, + created_at: 1395875717490, + updated_at: 1395875717490, phone: null, details: null },{ @@ -323,8 +323,8 @@ module.exports = { email: 'test6@example.com', logins: 2, about: 'Lorem ipsum Dolore labore incididunt enim.', - created_at: 1385400239326, - updated_at: 1385400239326, + created_at: 1395875717493, + updated_at: 1395875717493, phone: null, details: null }] @@ -519,8 +519,8 @@ module.exports = { email: 'test@example.com', logins: 1, about: 'Lorem ipsum Dolore labore incididunt enim.', - created_at: 1385400239318, - updated_at: 1385400239318, + created_at: 1395875717488, + updated_at: 1395875717488, phone: null, account_id: 1, details: 'Lorem ipsum Minim nostrud Excepteur consectetur enim ut qui sint in veniam in nulla anim do cillum sunt voluptate Duis non incididunt.', @@ -533,8 +533,8 @@ module.exports = { email: 'test2@example.com', logins: 1, about: 'Lorem ipsum Dolore labore incididunt enim.', - created_at: 1385400239319, - updated_at: 1385400239319, + created_at: 1395875717489, + updated_at: 1395875717489, phone: null, account_id: 2, details: 'Lorem ipsum Minim nostrud Excepteur consectetur enim ut qui sint in veniam in nulla anim do cillum sunt voluptate Duis non incididunt.', @@ -547,8 +547,8 @@ module.exports = { email: 'test3@example.com', logins: 2, about: 'Lorem ipsum Dolore labore incididunt enim.', - created_at: 1385400239319, - updated_at: 1385400239319, + created_at: 1395875717489, + updated_at: 1395875717489, phone: null, account_id: 3, details: '', @@ -561,8 +561,8 @@ module.exports = { email: 'test4@example.com', logins: 2, about: 'Lorem ipsum Dolore labore incididunt enim.', - created_at: 1385400239321, - updated_at: 1385400239321, + created_at: 1395875717490, + updated_at: 1395875717490, phone: null, account_id: null, details: null, @@ -575,8 +575,8 @@ module.exports = { email: 'test5@example.com', logins: 2, about: 'Lorem ipsum Dolore labore incididunt enim.', - created_at: 1385400239321, - updated_at: 1385400239321, + created_at: 1395875717490, + updated_at: 1395875717490, phone: null, account_id: null, details: null, @@ -589,8 +589,8 @@ module.exports = { email: 'test6@example.com', logins: 2, about: 'Lorem ipsum Dolore labore incididunt enim.', - created_at: 1385400239326, - updated_at: 1385400239326, + created_at: 1395875717493, + updated_at: 1395875717493, phone: null, account_id: null, details: null, diff --git a/test/integration/output/Schema.js b/test/integration/output/Schema.js index 53924af6..d5d86c1d 100644 --- a/test/integration/output/Schema.js +++ b/test/integration/output/Schema.js @@ -104,7 +104,7 @@ module.exports = { }, postgresql: { bindings: [], - sql: ['create table "composite_key_test" ("column_a" integer, "column_b" integer, "details" text, "status" smallint)','alter table "composite_key_test" add constraint composite_key_test_column_a_column_b_unique unique ("column_a", "column_b")'] + sql: ['create table "composite_key_test" ("column_a" integer, "column_b" integer, "details" text, "status" smallint)','alter table "composite_key_test" add constraint composite_key_test_column_a_column_b_unique unique ("column_a", "column_b")'] }, sqlite3: { bindings: [], diff --git a/test/integration/output/Selects.js b/test/integration/output/Selects.js index 75c43746..cdec1bb8 100644 --- a/test/integration/output/Selects.js +++ b/test/integration/output/Selects.js @@ -1,4 +1,58 @@ module.exports = { + 'handles multi-column "where in" cases': { + mysql: { + bindings: [1,1,1,2], + sql: 'select * from `composite_key_test` where (`column_a`,`column_b`) in ((?, ?),(?, ?))', + result: [{ + column_a: 1, + column_b: 1, + details: 'One, One, One', + status: 1 + },{ + column_a: 1, + column_b: 2, + details: 'One, Two, Zero', + status: 0 + }] + }, + postgresql: { + bindings: [1,1,1,2], + sql: 'select * from "composite_key_test" where ("column_a","column_b") in ((?, ?),(?, ?))', + result: [{ + column_a: 1, + column_b: 1, + details: 'One, One, One', + status: 1 + },{ + column_a: 1, + column_b: 2, + details: 'One, Two, Zero', + status: 0 + }] + } + }, + 'handles multi-column "or where in" cases': { + mysql: { + bindings: [1,1,1,1,2], + sql: 'select * from `composite_key_test` where `status` = ? and (`column_a`,`column_b`) in ((?, ?),(?, ?))', + result: [{ + column_a: 1, + column_b: 1, + details: 'One, One, One', + status: 1 + }] + }, + postgresql: { + bindings: [1,1,1,1,2], + sql: 'select * from "composite_key_test" where "status" = ? and ("column_a","column_b") in ((?, ?),(?, ?))', + result: [{ + column_a: 1, + column_b: 1, + details: 'One, One, One', + status: 1 + }] + } + }, 'allows key, value': { mysql: { bindings: [1],