From: Gil Moskowitz Date: Mon, 30 Jun 2014 17:26:27 +0000 (-0400) Subject: passes completely for the first time X-Git-Tag: v4.6.0-beta~13^2~10 X-Git-Url: http://git.roojs.org/?a=commitdiff_plain;h=587dc574fe97ee90a9b010401aad475e8938c059;p=xtuple passes completely for the first time --- diff --git a/test/database/bankrec.js b/test/database/bankrec.js index 9e80904dc..8daf6c51b 100644 --- a/test/database/bankrec.js +++ b/test/database/bankrec.js @@ -18,65 +18,100 @@ var _ = require("underscore"), creds = _.extend({}, config.databaseServer, {database: loginData.org}), bankaccnt, bankrec, - trans1 = { amount: 98.76 }, + trans1 = { amount: 98.76 }, // Note: amounts for the two must differ trans2 = { amount: 54.32 }, bankRecItemSql = 'SELECT * FROM bankrecitem ' + - ' WHERE bankrecitem_bankrec_id=:brid' + - ' AND bankrecitem_source_id=:srcid' + - ' AND bankrecitem_source=:src;', - toggleCheckSql = "SELECT toggleBankRecCleared(:bankrec_id,'A/R'" + - ", gltrans_id, checkhead_curr_rate, checkhead_amount)" + + ' WHERE bankrecitem_bankrec_id=:brid:' + + ' AND bankrecitem_source=:src:' + + ' AND bankrecitem_source_id=:srcid:;', + toggleCheckSql = "SELECT toggleBankRecCleared(:bankrec_id:,'GL'," + + " gltrans_id, checkhead_curr_rate, checkhead_amount)" + " AS result" + " FROM checkhead JOIN gltrans ON (gltrans_doctype='CK'" + " AND gltrans_misc_id=checkhead_id)" + - " WHERE checkhead_id=:checkid;", - checkCheckSql = "SELECT *," - " bankrecitem_amount/bankrecitem_curr_rate AS base"+ - " JOIN bankrecitem ON (gltrans_id=bankrecitem_source_id)"+ - " JOIN bankrec ON (bankrecitem_bankrec_id=bankrec_id)"+ - " WHERE gltrans_doctype='CK'" + - " AND gltrans_misc_id=:checkid" + - " AND bankrec_id=:bankrec_id;", - bankAdjCheckSql = "SELECT *," - " ABS(bankadj_amount / bankadj_curr_rate) AS baseamt" + - " FROM bankadj LEFT OUTER" + - " JOIN bankaccnt ON (bankadj_bankaccnt_id=bankaccnt_id)" + - " LEFT OUTER" + - " JOIN gltrans ON (bankaccnt_accnt_id=gltrans_accnt_id" + - " AND gltrans_doctype='AD'" + - " AND gltrans_notes ~ bankadj_notes" + - " AND gltrans_docnumber=bankadj_docnumber)"+ - " LEFT OUTER" + - " JOIN bankrecitem ON (bankrec_source='G/L' " + - " AND bankrec_source_id=gltrans_id)" + - " WHERE bankadj_id=:bankadjid;" // TODO: precise enough? - ; - - it('looks for a bank account with no open reconciliations', function (done) { + " WHERE checkhead_id=:checkid: AND gltrans_amount > 0;", + checkCheckSql = "SELECT *," + + " bankrecitem_amount/bankrecitem_curr_rate AS base" + + " FROM gltrans" + + " JOIN bankrecitem ON (gltrans_id=bankrecitem_source_id)" + + " JOIN bankrec ON (bankrecitem_bankrec_id=bankrec_id)" + + " WHERE gltrans_doctype='CK'" + + " AND gltrans_misc_id=:checkid:" + + " AND bankrec_id=:bankrecid:;", + bankAdjCheckSql = "SELECT *," + + " ROUND(bankadj_amount / bankadj_curr_rate, 2) AS baseamt," + + " CASE WHEN gltrans_id IS NULL AND bankrecitem_id IS NULL" + + " THEN 0" + + " WHEN gltrans_id IS NULL OR bankrecitem_id IS NULL" + + " THEN 1" + + " ELSE 2 END AS preferred" + + " FROM bankadj LEFT OUTER" + + " JOIN gltrans ON (gltrans_doctype='AD'" + + " AND gltrans_misc_id=bankadj_id)" + + " LEFT OUTER" + + " JOIN bankrecitem ON (bankrecitem_source='AD'" + + " AND bankrecitem_source_id=bankadj_id)" + + " OR (bankrecitem_source='GL'" + + " AND bankrecitem_source_id=gltrans_id)" + + " WHERE bankadj_id=:bankadjid:" + + " ORDER BY preferred DESC LIMIT 1;" + ; + + it('looks for a bank account to work with', function (done) { var sql = 'SELECT * FROM bankaccnt WHERE bankaccnt_id IN (' + ' SELECT bankrec_bankaccnt_id FROM bankrec' + ' GROUP BY bankrec_bankaccnt_id' + ' HAVING BOOL_AND(bankrec_posted)) LIMIT 1;' ; datasource.query(sql, creds, function (err, res) { - assert.equal(res.rowCount, 1); - bankaccnt = _.clone(res.rows[0]); - assert.isNotNull(bankaccnt, 'we found a bank account'); - done(); + if (res.rowCount === 1) { + bankaccnt = _.clone(res.rows[0]); + assert.isNotNull(bankaccnt, 'we found a bank account'); + bankrec = "create"; + done(); + } else { + var sql = 'SELECT * FROM bankaccnt WHERE bankaccnt_id IN (' + + ' SELECT bankrec_bankaccnt_id FROM bankrec' + + ' WHERE bankrec_opendate IN' + + ' (SELECT MAX(bankrec_opendate) FROM bankrec' + + ' WHERE NOT bankrec_posted)' + + ') LIMIT 1;' + ; + datasource.query(sql, creds, function (err, res) { + assert.equal(res.rowCount, 1); + bankaccnt = _.clone(res.rows[0]); + assert.isNotNull(bankaccnt, 'we found a bank account'); + bankrec = "select"; + done(); + }); + } }); }); - it('creates a new open bankrec to test with', function (done) { - var sql = 'INSERT INTO bankrec (bankrec_bankaccnt_id,' + - ' bankrec_opendate, bankrec_openbal' + - ') SELECT bankrec_bankaccnt_id,' + - ' bankrec_enddate + 1, bankrec_endbal' + - ' FROM bankrec' + - ' WHERE bankrec_bankaccnt_id=' + bankaccnt.bankaccnt_id + - ' AND bankrec_posted' + - ' ORDER BY bankrec_enddate DESC' + - ' LIMIT 1 RETURNING *;' - ; + it('gets an open bankrec to test with', function (done) { + var sql; + if (bankrec === "create") { + sql = 'INSERT INTO bankrec (bankrec_bankaccnt_id,' + + ' bankrec_opendate, bankrec_openbal' + + ') SELECT bankrec_bankaccnt_id,' + + ' bankrec_enddate + 1, bankrec_endbal' + + ' FROM bankrec' + + ' WHERE bankrec_bankaccnt_id=' + bankaccnt.bankaccnt_id + + ' AND bankrec_posted' + + ' ORDER BY bankrec_enddate DESC' + + ' LIMIT 1 RETURNING *;' + ; + } else if (bankrec === "select") { + sql = 'SELECT * FROM bankrec' + + ' WHERE bankrec_bankaccnt_id=' + bankaccnt.bankaccnt_id + + ' AND bankrec_opendate IN' + + ' (SELECT MAX(bankrec_opendate) FROM bankrec' + + ' WHERE NOT bankrec_posted' + + ' AND bankrec_bankaccnt_id=' + bankaccnt.bankaccnt_id + + ' );' + ; + } + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); bankrec = _.clone(res.rows[0]); @@ -86,80 +121,115 @@ var _ = require("underscore"), }); }); + it('ensures there is an open accounting period', function (done) { + var sql = 'SELECT period_id, period_closed, period_freeze' + + ' FROM period' + + ' WHERE CURRENT_DATE BETWEEN period_start AND period_end;' + ; + datasource.query(sql, creds, function (err, res) { + var sql; + if (res.rowCount !== 1) { + sql = "INSERT INTO period (period_closed, period_freeze," + + " period_name, period_quarter, period_start," + + " period_end, period_number" + + ") VALUES (FALSE, FALSE, 'BankRec Test Period'," + + " EXTRACT(QUARTER FROM DATE CURRENT_DATE)," + + " DATE_TRUNC(MONTH, CURRENT_DATE)," + + " DATE_TRUNC(MONTH, CURRENT_DATE) + '1 month'," + + " EXTRACT(month FROM DATE CURRENT_DATE)" + + ") RETURNING period_id;" + ; + } else if (res.rows[0].period_closed === true) { + sql = 'SELECT openAccountingPeriod(' + res.rows[0].period_id + + ') AS period_id;' + ; + } + if (sql) { + datasource.query(sql, creds, function (err, res) { + assert.equal(res.rowCount, 1); + assert(res.period_id >= 0); + done(); + }); + } else { + done(); + } + }); + }); + it('creates a check as the 1st transaction to reconcile', function (done) { - var sql = "SELECT createCheck(" + bankaccnt.bankaccnt_id + - "'V', (SELECT MIN(vend_id) FROM vendinfo), '" + - bankrec.bankrec_opendate + "' + 1, " + trans1.amount + ", " + - bankaccnt.bankaccnt_curr_id + ", NULL, NULL, 'Bearer'," + - ", 'bankrec test 1', TRUE, NULL) RETURNING checkid;" + var sql = "SELECT createCheck(" + bankaccnt.bankaccnt_id + ", 'V'," + + " (SELECT MIN(vend_id) FROM vendinfo), CURRENT_DATE, " + + trans1.amount + ", " + bankaccnt.bankaccnt_curr_id + ", NULL," + + " NULL, 'Bearer', 'bankrec test 1', TRUE, NULL) AS checkid;" ; - datasource.query(sql, cred, function (err, res) { + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert(res.row[0].checkid > 0); - trans1.checkid = res.row[0].checkid; + assert(res.rows[0].checkid > 0); + trans1.checkid = res.rows[0].checkid; done(); }); }); it('posts the check', function (done) { var sql = 'SELECT postCheck(' + trans1.checkid + ', NULL) AS result;'; - datasource.query(sql, cred, function (err, res) { + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert(res.row[0].result > 0); - trans1.journalNumber = res.row[0].result; + assert(res.rows[0].result > 0); + trans1.journalNumber = res.rows[0].result; done(); }); }); it('marks the check as cleared', function (done) { var sql = _.clone(toggleCheckSql) - .replace(':bankrec_id', bankrec.bankrec_id) - .replace(':checkid', trans1.checkid); - datasource.query(sql, cred, function (err, res) { + .replace(':bankrec_id:', bankrec.bankrec_id) + .replace(':checkid:', trans1.checkid); + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert.isTrue(res.row[0].result); + assert.isTrue(res.rows[0].result); done(); }); }); it('confirms the check was marked as cleared', function (done) { var sql = _.clone(bankRecItemSql) - .replace(':brid', bankrec.bankrec_id) - .replace(':src', 'A/R') - .replace('=:srcid', + .replace(':brid:', bankrec.bankrec_id) + .replace(':src:', "'GL'") + .replace('=:srcid:', " IN (SELECT gltrans_id FROM gltrans WHERE" + " gltrans_doctype='CK' AND gltrans_misc_id=" + - trans1.checkid) + trans1.checkid + ")") ; - datasource.query(sql, cred, function (err, res) { + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert.isTrue(res.row[0].bankrecitem_cleared); - assert(res.row[0].bankrecitem_cleared); + assert.isTrue(res.rows[0].bankrecitem_cleared); + assert(res.rows[0].bankrecitem_cleared); done(); }); }); it('marks the check as /not/ cleared', function (done) { var sql = _.clone(toggleCheckSql) - .replace(':bankrec_id', bankrec.bankrec_id) - .replace(':checkid', trans1.checkid); - datasource.query(sql, cred, function (err, res) { + .replace(':bankrec_id:', bankrec.bankrec_id) + .replace(':checkid:', trans1.checkid) + ; + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert.isFalse(res.row[0].result); + assert.isFalse(res.rows[0].result); done(); }); }); it('confirms the check is no longer marked as cleared', function (done) { var sql = _.clone(bankRecItemSql) - .replace(':brid', bankrec.bankrec_id) - .replace(':src', 'A/R') - .replace('=:srcid', + .replace(':brid:', bankrec.bankrec_id) + .replace(':src:', "'GL'") + .replace('=:srcid:', " IN (SELECT gltrans_id FROM gltrans WHERE" + " gltrans_doctype='CK' AND gltrans_misc_id=" + - trans1.checkid) + trans1.checkid + ")") ; - datasource.query(sql, cred, function (err, res) { + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 0); done(); }); @@ -167,28 +237,29 @@ var _ = require("underscore"), it('marks the check as cleared again', function (done) { var sql = _.clone(toggleCheckSql) - .replace(':bankrec_id', bankrec.bankrec_id) - .replace(':checkid', trans1.checkid) + .replace(':bankrec_id:', bankrec.bankrec_id) + .replace(':checkid:', trans1.checkid) ; - datasource.query(sql, cred, function (err, res) { + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert.isTrue(res.row[0].result); + assert.isTrue(res.rows[0].result); done(); }); }); it('confirms that the check is marked as cleared again', function (done) { - var sql = bankRecItemSql.replace(':brid', bankrec.bankrec_id) - .replace(':src', 'A/R') - .replace('=:srcid', - " IN (SELECT gltrans_id FROM gltrans" + - " WHERE gltrans_doctype='CK' AND " - " gltrans_misc_id=" + trans1.checkid) - ; - datasource.query(sql, cred, function (err, res) { + var sql = _.clone(bankRecItemSql) + .replace(':brid:', bankrec.bankrec_id) + .replace(':src:', "'GL'") + .replace('=:srcid:', + " IN (SELECT gltrans_id FROM gltrans" + + " WHERE gltrans_doctype='CK' AND " + + " gltrans_misc_id=" + trans1.checkid + ")") + ; + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert.isTrue(res.row[0].bankrecitem_cleared); - assert(res.row[0].bankrecitem_cleared); + assert.isTrue(res.rows[0].bankrecitem_cleared); + assert(res.rows[0].bankrecitem_cleared); done(); }); }); @@ -197,17 +268,19 @@ var _ = require("underscore"), var sql = "INSERT INTO bankadj (" + " bankadj_bankaccnt_id, bankadj_bankadjtype_id," + " bankadj_date, bankadj_docnumber," + - " bankadj_amount, bankadj_notes, bankadj_curr_id" + - ") SELECT " + bankaccnt.bankaccnt_id + ", bankadjtype_id, '" + - bankrec.bankrec_opendate + "' + 1, 'BankRecTest', " + - trans2.amount + ", 'Bank Rec Test Transaction 2', " + - bankaccnt.bankaccnt_curr_id + - " FROM bankadjtype RETURNING *;" + " bankadj_amount, bankadj_notes, bankadj_curr_id," + + " bankadj_curr_rate" + + ") SELECT " + bankaccnt.bankaccnt_id + ", bankadjtype_id, " + + " CURRENT_DATE, 'BankRecTest', " + trans2.amount + + ", 'Bank Rec Test Transaction 2', " + + bankaccnt.bankaccnt_curr_id + ", " + + " currrate(" + bankaccnt.bankaccnt_curr_id + + ", basecurrid(), CURRENT_DATE) FROM bankadjtype RETURNING *;" ; - datasource.query(sql, cred, function (err, res) { + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); _.extend(trans2, res.rows[0]); - assert.isOk(trans2.bankadj_id, 'we have a bank adjustment'); + assert.ok(trans2.bankadj_id, 'we have a bank adjustment'); done(); }); }); @@ -216,22 +289,22 @@ var _ = require("underscore"), var sql = 'SELECT postBankReconciliation(' + bankrec.bankrec_id + ') AS result;' ; - datasource.query(sql, cred, function (err, res) { + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert.equal(res.row[0].result, bankrec.bankrec_id); + assert.equal(res.rows[0].result, bankrec.bankrec_id); done(); }); }); it('confirms the check was reconciled properly', function (done) { var sql = _.clone(checkCheckSql) - .replace(':checkid', trans1.checkid) - .replace(':bankrecid', bankrec.bankrec_id) + .replace(':checkid:', trans1.checkid) + .replace(':bankrecid:', bankrec.bankrec_id) ; - datasource.query(sql, cred, function (err, res) { + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert.isTrue(res.row[0].gltrans_rec); - assert.isTrue(res.row[0].bankrec_posted); + assert.isTrue(res.rows[0].gltrans_rec); + assert.isTrue(res.rows[0].bankrec_posted); done(); }); }); @@ -239,12 +312,26 @@ var _ = require("underscore"), // TODO: confirm the CashBasedTax reconciliation code worked it('confirms the bank adjustment was /not/ posted', function (done) { - sql = _.clone(bankAdjCheckSql).replace(':bankadjid', trans2.bankadj_id); - datasource.query(sql, cred, function (err, res) { + var sql = _.clone(bankAdjCheckSql) + .replace(':bankadjid:', trans2.bankadj_id) + ; + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert.isFalse(res.row[0].bankadj_posted); - assert.notOk(res.row[0].gltrans_id); - assert.notOk(res.row[0].bankrecitem_id); + assert.isFalse(res.rows[0].bankadj_posted); + /* TODO: why does assert.notOk throw + Unrecoverable exception. Object function (express, errmsg) { + var test = new Assertion(null); + test.assert( + express + , errmsg + , '[ negation message unavailable ]' + ); + } has no method 'notOk' + assert.notOk(res.rows[0].gltrans_id, 'expecting no gltrans'); + assert.notOk(res.rows[0].bankrecitem_id, 'expecting no bankrecitem'); + */ + assert(! res.rows[0].gltrans_id, 'expecting no gltrans'); + assert(! res.rows[0].bankrecitem_id, 'expecting no bankrecitem'); done(); }); }); @@ -253,24 +340,24 @@ var _ = require("underscore"), var sql = 'SELECT reopenBankReconciliation(' + bankrec.bankrec_id + ') AS result;' ; - datasource.query(sql, cred, function (err, res) { + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert.equal(res.row[0].result, bankrec.bankrec_id); + assert.equal(res.rows[0].result, bankrec.bankrec_id); done(); }); }); it('confirms the check was handled properly by the reopen', function (done) { var sql = _.clone(checkCheckSql) - .replace(':checkid', trans1.checkid) - .replace(':bankrecid', bankrec.bankrec_id) + .replace(':checkid:', trans1.checkid) + .replace(':bankrecid:', bankrec.bankrec_id) ; - datasource.query(sql, cred, function (err, res) { + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert.isFalse(res.row[0].gltrans_rec); - assert.isFalse(res.row[0].bankrec_posted); - assert.closeTo(Math.abs(res.row[0].gltrans_amount), res.row[0].base, - 0.001); + assert.isFalse(res.rows[0].gltrans_rec); + assert.isFalse(res.rows[0].bankrec_posted); + assert.closeTo(Math.abs(res.rows[0].gltrans_amount), res.rows[0].base, + 0.006); done(); }); }); @@ -279,25 +366,24 @@ var _ = require("underscore"), it('marks the bank adjustment as cleared', function (done) { var sql = "SELECT toggleBankRecCleared(" + bankrec.bankrec_id + - ", 'G/L', gltrans_id, bankadj_curr_rate," + - " bankadj_amount) AS result" + - " FROM bankadj JOIN gltrans" + - " ON (gltrans_doctype='AD' AND gltrans_misc_id=bankadj_id)" + - " WHERE bankadj_id=" + trans2.bankadj_id + ";" + ", 'AD', " + trans2.bankadj_id + + ", " + trans2.bankadj_curr_rate + + ", " + trans2.bankadj_amount + ") AS result;" ; - datasource.query(sql, cred, function (err, res) { + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert.isTrue(res.row[0].result); + assert.isTrue(res.rows[0].result); done(); }); }); it('confirms the bank adjustment was /not/ posted but is cleared', function (done) { - sql = _.clone(bankAdjCheckSql).replace(':bankadjid', trans2.bankadj_id); - datasource.query(sql, cred, function (err, res) { + var sql = _.clone(bankAdjCheckSql) + .replace(':bankadjid:', trans2.bankadj_id); + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert.isFalse(res.row[0].bankadj_posted); - assert(res.row[0].bankrecitem_id >= 0); + assert.isFalse(res.rows[0].bankadj_posted); + assert(res.rows[0].bankrecitem_id >= 0); done(); }); }); @@ -306,22 +392,22 @@ var _ = require("underscore"), var sql = 'SELECT postBankReconciliation(' + bankrec.bankrec_id + ') AS result;' ; - datasource.query(sql, cred, function (err, res) { + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert.equal(res.row[0].result, bankrec.bankrec_id); + assert.equal(res.rows[0].result, bankrec.bankrec_id); done(); }); }); it('confirms the check was reconciled properly', function (done) { var sql = _.clone(checkCheckSql) - .replace(':checkid', trans1.checkid) - .replace(':bankrecid', bankrec.bankrec_id) + .replace(':checkid:', trans1.checkid) + .replace(':bankrecid:', bankrec.bankrec_id) ; - datasource.query(sql, cred, function (err, res) { + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert.isTrue(res.row[0].gltrans_rec); - assert.isTrue(res.row[0].bankrec_posted); + assert.isTrue(res.rows[0].gltrans_rec); + assert.isTrue(res.rows[0].bankrec_posted); done(); }); }); @@ -329,14 +415,18 @@ var _ = require("underscore"), // TODO: confirm the CashBasedTax reconciliation code worked it('confirms the bank adjustment was cleared, posted, written to the GL', function (done) { - sql = _.clone(bankAdjCheckSql).replace(':bankadjid', trans2.bankadj_id); - datasource.query(sql, cred, function (err, res) { + var sql = _.clone(bankAdjCheckSql) + .replace(':bankadjid:', trans2.bankadj_id); + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert.isTrue(res.row[0].bankadj_posted); - assert(res.row[0].bankadj_sequence >= 0); - assert.isTrue(res.row[0].gltrans_rec); - assert.closeTo(Math.abs(res.row[0].gltrans_amount), res.row[0].baseamt, - 0.001); + assert.isTrue(res.rows[0].bankadj_posted); + assert(res.rows[0].bankadj_sequence >= 0); + assert.equal(res.rows[0].bankrecitem_source, 'GL'); + assert.equal(res.rows[0].bankrecitem_source_id, res.rows[0].gltrans_id); + assert.isTrue(res.rows[0].gltrans_rec); + assert.closeTo(Math.abs(res.rows[0].gltrans_amount), + res.rows[0].baseamt, + 0.006); done(); }); }); @@ -344,38 +434,38 @@ var _ = require("underscore"), it('deletes the bankrec', function (done) { var sql = 'SELECT deleteBankReconciliation(' + bankrec.bankrec_id + ') AS result;'; - datasource.query(sql, cred, function (err, res) { + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert(res.row[0].result >= 0); + assert(res.rows[0].result >= 0); done(); }); }); it('checks that the bankrec is really gone', function (done) { - var sql = 'SELECT COUNT(*) FROM bankrec WHERE bankrec_id = ' + - bankrec.bankrec_id; - datasource.query(sql, cred, function (err, res) { + var sql = 'SELECT COUNT(*) AS result FROM bankrec WHERE bankrec_id = ' + + bankrec.bankrec_id + ';'; + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert(res.row[0].result === 0); + assert(res.rows[0].result === 0); done(); }); }); it('checks that the bankrecitems are gone', function (done) { - var sql = 'SELECT COUNT(*) FROM bankrecitem' - ' WHERE bankrecitem_bankrec_id = ' + bankrec.bankrec_id; - datasource.query(sql, cred, function (err, res) { + var sql = 'SELECT COUNT(*) AS result FROM bankrecitem' + + ' WHERE bankrecitem_bankrec_id = ' + bankrec.bankrec_id + ';'; + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert(res.row[0].result === 0); + assert(res.rows[0].result === 0); done(); }); }); it('tries to delete a non-existent bankrec', function (done) { var sql = 'SELECT deleteBankReconciliation(-15) AS result;'; - datasource.query(sql, cred, function (err, res) { + datasource.query(sql, creds, function (err, res) { assert.equal(res.rowCount, 1); - assert(res.row[0].result === 0); // no, it doesn't complain + assert(res.rows[0].result === 0); // no, it doesn't complain done(); }); });