From 231830b1ff5feb3251f702d410289f5a7a84edb5 Mon Sep 17 00:00:00 2001 From: Sharad Chandran R Date: Tue, 14 Mar 2023 12:37:21 +0530 Subject: [PATCH] More refactoring and test file changes --- test/binding.js | 4 +- test/binding_buffer_string.js | 8 +- test/binding_defaultBindIn.js | 2 +- test/binding_functionBindIn.js | 2 +- test/binding_functionBindInout.js | 2 +- test/binding_functionBindOut.js | 2 +- test/binding_procedureBindIn.js | 2 +- test/binding_procedureBindInout.js | 2 +- test/binding_procedureBindOut.js | 2 +- test/blobDMLReturningMultipleRowsAsBuffer.js | 5 +- test/blobDMLReturningMultipleRowsAsStream.js | 11 +- test/blobPlsqlBindAsBuffer_bindin.js | 3 +- test/blobPlsqlBindAsBuffer_bindinout.js | 3 +- test/blobPlsqlBindAsBuffer_bindout.js | 11 +- test/cqn01.js | 227 ----- test/cqn02.js | 94 -- test/dataTypeRaw.js | 2 +- test/fetchArraySize1.js | 140 ++- test/fetchArraySize2.js | 410 ++++----- test/fetchArraySize3.js | 629 +++++-------- test/fetchArraySize4.js | 495 +++++----- test/fetchArraySize5.js | 633 ++++++------- test/fetchArraySize6.js | 646 +++++-------- test/fetchArraySize7.js | 443 ++++----- test/fetchArraySize8.js | 527 +++++------ test/fetchArraySize9.js | 548 +++++------ test/fetchAs.js | 272 +++--- test/fetchAsStringWithRefCursor.js | 227 ++--- test/fetchBlobAsBuffer1.js | 676 +++++--------- test/fetchBlobAsBuffer2.js | 4 +- test/fetchBlobAsBuffer3.js | 293 ++---- test/fetchBlobAsBuffer4.js | 905 ++++++++----------- test/fetchClobAsString2.js | 12 +- test/fetchClobAsString3.js | 415 ++++----- test/fetchClobAsString4.js | 782 +++++++--------- test/fetchLobAsStrBuf.js | 5 +- test/fetchUrowidAsString.js | 658 +++++--------- test/implicitResults.js | 3 +- test/insertAll.js | 353 +++----- test/lobClose.js | 31 + test/longrawProcedureBind_in.js | 3 +- test/longrawProcedureBind_inout.js | 5 +- test/longrawProcedureBind_out.js | 3 +- test/maxRows.js | 273 ++---- test/multipleLobInsertion.js | 246 ++--- test/opts/.mocharc.yaml | 1 + test/resultsetToStream.js | 381 +++----- test/sql.js | 97 +- test/sqlClone.js | 172 ---- test/sqlWithWarnings.js | 103 +-- 50 files changed, 3873 insertions(+), 6900 deletions(-) delete mode 100644 test/cqn01.js delete mode 100644 test/cqn02.js delete mode 100644 test/sqlClone.js diff --git a/test/binding.js b/test/binding.js index f28f90ee..e9f2779d 100755 --- a/test/binding.js +++ b/test/binding.js @@ -746,10 +746,10 @@ describe('4. binding.js', function() { nullable: true, byteSize: 1 }; - assert.deepEqual(cursor.metaData, [expectedBind]); + assert.deepStrictEqual(cursor.metaData, [expectedBind]); const rows = await cursor.getRows(); - assert.deepEqual(rows, [ [ 'X' ] ]); + assert.deepStrictEqual(rows, [ [ 'X' ] ]); }); }); }); diff --git a/test/binding_buffer_string.js b/test/binding_buffer_string.js index 5f4c6c62..3a284035 100644 --- a/test/binding_buffer_string.js +++ b/test/binding_buffer_string.js @@ -23,7 +23,7 @@ * limitations under the License. * * NAME - * 263.binding_buffer_string.js + * 270.binding_buffer_string.js * * DESCRIPTION * Test case for bug 33943738 @@ -34,7 +34,7 @@ const oracledb = require('oracledb'); const dbConfig = require('./dbconfig.js'); -describe('263. binding_buffer_string.js', function() { +describe('270. binding_buffer_string.js', function() { let connection = null; const proc_blob_in_tab = "BEGIN \n" + @@ -65,9 +65,9 @@ describe('263. binding_buffer_string.js', function() { await connection.close(); }); - describe('263.1 BLOB, PLSQL, BIND_IN', function() { + describe('270.1 BLOB, PLSQL, BIND_IN', function() { - it('263.1.1 works with buffer', async function() { + it('270.1.1 works with buffer', async function() { const data = [ {a: 1, b: Buffer.from("Dummy data 1".repeat(5000), "utf-8")}, {a: 2, b: Buffer.from("Dummy data 2".repeat(7500), "utf-8")} diff --git a/test/binding_defaultBindIn.js b/test/binding_defaultBindIn.js index 4d6d95b8..9325fca0 100644 --- a/test/binding_defaultBindIn.js +++ b/test/binding_defaultBindIn.js @@ -36,7 +36,7 @@ const oracledb = require('oracledb'); const assert = require('assert'); -const sql = require('./sqlClone.js'); +const sql = require('./sql.js'); const dbConfig = require('./dbconfig.js'); describe('100.binding_defaultBindIn.js', function() { diff --git a/test/binding_functionBindIn.js b/test/binding_functionBindIn.js index 41f36d08..622ce5ec 100644 --- a/test/binding_functionBindIn.js +++ b/test/binding_functionBindIn.js @@ -35,7 +35,7 @@ const oracledb = require('oracledb'); const assert = require('assert'); -const sql = require('./sqlClone.js'); +const sql = require('./sql.js'); const dbConfig = require('./dbconfig.js'); const assist = require('./dataTypeAssist.js'); diff --git a/test/binding_functionBindInout.js b/test/binding_functionBindInout.js index a1d16265..a5d38c95 100755 --- a/test/binding_functionBindInout.js +++ b/test/binding_functionBindInout.js @@ -35,7 +35,7 @@ const oracledb = require('oracledb'); const assert = require('assert'); -const sql = require('./sqlClone.js'); +const sql = require('./sql.js'); const dbConfig = require('./dbconfig.js'); const assist = require('./dataTypeAssist.js'); diff --git a/test/binding_functionBindOut.js b/test/binding_functionBindOut.js index 2b8ae8e1..b114128f 100644 --- a/test/binding_functionBindOut.js +++ b/test/binding_functionBindOut.js @@ -35,7 +35,7 @@ const oracledb = require('oracledb'); const assert = require('assert'); -const sql = require('./sqlClone.js'); +const sql = require('./sql.js'); const dbConfig = require('./dbconfig.js'); const assist = require('./dataTypeAssist.js'); diff --git a/test/binding_procedureBindIn.js b/test/binding_procedureBindIn.js index 6c6dce44..880c6e73 100644 --- a/test/binding_procedureBindIn.js +++ b/test/binding_procedureBindIn.js @@ -35,7 +35,7 @@ const oracledb = require('oracledb'); const assert = require('assert'); -const sql = require('./sqlClone.js'); +const sql = require('./sql.js'); const dbConfig = require('./dbconfig.js'); const assist = require('./dataTypeAssist.js'); diff --git a/test/binding_procedureBindInout.js b/test/binding_procedureBindInout.js index 8bd3e3b2..73f126df 100644 --- a/test/binding_procedureBindInout.js +++ b/test/binding_procedureBindInout.js @@ -35,7 +35,7 @@ const oracledb = require('oracledb'); const assert = require('assert'); -const sql = require('./sqlClone.js'); +const sql = require('./sql.js'); const dbConfig = require('./dbconfig.js'); const assist = require('./dataTypeAssist.js'); diff --git a/test/binding_procedureBindOut.js b/test/binding_procedureBindOut.js index ca5610d8..da765584 100644 --- a/test/binding_procedureBindOut.js +++ b/test/binding_procedureBindOut.js @@ -35,7 +35,7 @@ const oracledb = require('oracledb'); const assert = require('assert'); -const sql = require('./sqlClone.js'); +const sql = require('./sql.js'); const dbConfig = require('./dbconfig.js'); const assist = require('./dataTypeAssist.js'); diff --git a/test/blobDMLReturningMultipleRowsAsBuffer.js b/test/blobDMLReturningMultipleRowsAsBuffer.js index 6fce10e3..287cef3d 100644 --- a/test/blobDMLReturningMultipleRowsAsBuffer.js +++ b/test/blobDMLReturningMultipleRowsAsBuffer.js @@ -34,7 +34,6 @@ const oracledb = require('oracledb'); const assert = require('assert'); const dbConfig = require('./dbconfig.js'); -const sql = require('./sql.js'); describe('137. blobDMLReturningMultipleRowsAsBuffer.js', function() { @@ -73,12 +72,12 @@ describe('137. blobDMLReturningMultipleRowsAsBuffer.js', function() { let tabsize = 10; before(async function() { - await sql.executeSql(connection, blob_table_create, {}, {}); + await connection.execute(blob_table_create); await insertData(tabsize); }); after(async function() { - await sql.executeSql(connection, blob_table_drop, {}, {}); + await connection.execute(blob_table_drop); }); it('137.1.1 BLOB DML returning multiple rows as buffer', async function() { diff --git a/test/blobDMLReturningMultipleRowsAsStream.js b/test/blobDMLReturningMultipleRowsAsStream.js index 30a59c29..64a5c644 100644 --- a/test/blobDMLReturningMultipleRowsAsStream.js +++ b/test/blobDMLReturningMultipleRowsAsStream.js @@ -34,8 +34,6 @@ const oracledb = require('oracledb'); const assert = require('assert'); const dbConfig = require('./dbconfig.js'); -const sql = require('./sql.js'); -const assist = require('./dataTypeAssist.js'); describe('138. blobDMLReturningMultipleRowsAsStream.js', function() { @@ -71,13 +69,12 @@ describe('138. blobDMLReturningMultipleRowsAsStream.js', function() { describe('138.1 BLOB DML returning multiple rows as stream', function() { before(async function() { - - await sql.executeSql(connection, blob_table_create, {}, {}); - insertData(10); + await connection.execute(blob_table_create); + await insertData(10); }); after(async function() { - await sql.executeSql(connection, blob_table_drop, {}, {}); + await connection.execute(blob_table_drop); }); it('138.1.1 BLOB DML returning multiple rows as stream', async function() { @@ -140,7 +137,7 @@ describe('138. blobDMLReturningMultipleRowsAsStream.js', function() { lob.on('end', function(err) { assert(err); let expected = Buffer.from(String(id - 10), "utf-8"); - assert.strictEqual(assist.compare2Buffers(blobData, expected), true); + assert.deepStrictEqual(blobData, expected); }); }; }); diff --git a/test/blobPlsqlBindAsBuffer_bindin.js b/test/blobPlsqlBindAsBuffer_bindin.js index 1aa4346a..f90f1f1e 100644 --- a/test/blobPlsqlBindAsBuffer_bindin.js +++ b/test/blobPlsqlBindAsBuffer_bindin.js @@ -36,7 +36,6 @@ const assert = require('assert'); const fs = require('fs'); const dbConfig = require('./dbconfig.js'); const random = require('./random.js'); -const assist = require('./dataTypeAssist.js'); describe('77. blobPlsqlBindAsBuffer_bindin.js', function() { @@ -203,7 +202,7 @@ describe('77. blobPlsqlBindAsBuffer_bindin.js', function() { assert.strictEqual(resultVal.toString('utf8', 0, specStrLength), specialStr); assert.strictEqual(resultVal.toString('utf8', (totalLength - specStrLength), totalLength), specialStr); } - assert.strictEqual(assist.compare2Buffers(resultVal, originalBuffer), true); + assert.strictEqual(resultVal, originalBuffer); }; // execute the bind in plsql procedure diff --git a/test/blobPlsqlBindAsBuffer_bindinout.js b/test/blobPlsqlBindAsBuffer_bindinout.js index bf4fbade..eba7df13 100644 --- a/test/blobPlsqlBindAsBuffer_bindinout.js +++ b/test/blobPlsqlBindAsBuffer_bindinout.js @@ -36,7 +36,6 @@ const assert = require('assert'); const fs = require('fs'); const dbConfig = require('./dbconfig.js'); const random = require('./random.js'); -const assist = require('./dataTypeAssist.js'); describe('79. blobPlsqlBindAsBuffer_bindinout.js', function() { @@ -152,7 +151,7 @@ describe('79. blobPlsqlBindAsBuffer_bindinout.js', function() { assert.strictEqual(resultVal.toString('utf8', 0, specStrLength), specialStr); assert.strictEqual(resultVal.toString('utf8', (resultLength - specStrLength), resultLength), specialStr); } - assert.strictEqual(assist.compare2Buffers(resultVal, originalBuffer), true); + assert.deepStrictEqual(resultVal, originalBuffer); }; // execute plsql bind in out procedure, and verify the plsql bind out buffer diff --git a/test/blobPlsqlBindAsBuffer_bindout.js b/test/blobPlsqlBindAsBuffer_bindout.js index a9b918a3..ea3317f8 100644 --- a/test/blobPlsqlBindAsBuffer_bindout.js +++ b/test/blobPlsqlBindAsBuffer_bindout.js @@ -36,7 +36,6 @@ const assert = require('assert'); const fs = require('fs'); const dbConfig = require('./dbconfig.js'); const random = require('./random.js'); -const assist = require('./dataTypeAssist.js'); describe('78. blobPlsqlBindAsBuffer_bindout.js', function() { @@ -116,7 +115,7 @@ describe('78. blobPlsqlBindAsBuffer_bindout.js', function() { b: { val: insertBuffer, dir: oracledb.BIND_IN, type: oracledb.BUFFER } }; - if (insertBuffer == 'EMPTY_LOB') { + if (insertBuffer === 'EMPTY_LOB') { sql = "INSERT INTO nodb_tab_blob_in (id, blob_1) VALUES (:i, EMPTY_BLOB())"; bindVar = { i: { val: id, dir: oracledb.BIND_IN, type: oracledb.NUMBER } @@ -160,10 +159,10 @@ describe('78. blobPlsqlBindAsBuffer_bindout.js', function() { assert.deepEqual(originalData, blobData); }; - const verifyBlobValueWithBuffer = async function(selectSql, oraginalBuffer, specialStr) { + const verifyBlobValueWithBuffer = async function(selectSql, originalBuffer, specialStr) { const result = await connection.execute(selectSql); const lob = result.rows[0][0]; - if (oraginalBuffer == null | oraginalBuffer == '' || oraginalBuffer == undefined) { + if (originalBuffer == null | originalBuffer == '' || originalBuffer == undefined) { assert(lob); } else { const blobData = await lob.getData(); @@ -183,12 +182,12 @@ describe('78. blobPlsqlBindAsBuffer_bindout.js', function() { assert.strictEqual(resultVal.toString('utf8', 0, specStrLength), specialStr); assert.strictEqual(resultVal.toString('utf8', (resultLength - specStrLength), resultLength), specialStr); } - assert.strictEqual(assist.compare2Buffers(resultVal, originalBuffer), true); + assert.deepStrictEqual(resultVal, originalBuffer); }; const verifyBindOutResult = async function(sqlRun, bindVar, originalBuf, specialStr) { const result = await connection.execute(sqlRun, bindVar); - if (originalBuf == "EMPTY_LOB" || originalBuf == undefined || originalBuf == null || originalBuf == "") { + if (originalBuf === "EMPTY_LOB" || originalBuf == undefined || originalBuf == null || originalBuf == "") { assert.strictEqual(result.outBinds.b, null); } else { const resultVal = result.outBinds.b; diff --git a/test/cqn01.js b/test/cqn01.js deleted file mode 100644 index 6378cf49..00000000 --- a/test/cqn01.js +++ /dev/null @@ -1,227 +0,0 @@ -/* Copyright (c) 2019, 2023, Oracle and/or its affiliates. */ - -/****************************************************************************** - * - * This software is dual-licensed to you under the Universal Permissive License - * (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License - * 2.0 as shown at https://www.apache.org/licenses/LICENSE-2.0. You may choose - * either license. - * - * If you elect to accept the software under the Apache License, Version 2.0, - * the following applies: - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * NAME - * 224. cqn01.js - * - * DESCRIPTION - * Test CQN client initiated connections. - * - *****************************************************************************/ -'use strict'; - -const oracledb = require('oracledb'); -const should = require('should'); -const events = require('events'); -const dbConfig = require('./dbconfig.js'); -const testsUtil = require('./testsUtil.js'); - -describe('224. cqn01.js', function() { - - let isRunnable = false; - let conn, connAsDBA; - - before(async function() { - - const prep = await testsUtil.checkPrerequisites(1904000000, 1904000000); - isRunnable = prep && dbConfig.test.DBA_PRIVILEGE; - - if (!isRunnable) { - this.skip(); - } else { - - try { - - let credential = { - user: dbConfig.test.DBA_user, - password: dbConfig.test.DBA_password, - connectString: dbConfig.connectString, - privilege: oracledb.SYSDBA - }; - connAsDBA = await oracledb.getConnection(credential); - - let sql = `GRANT CHANGE NOTIFICATION TO ${dbConfig.user}`; - await connAsDBA.execute(sql); - - conn = await oracledb.getConnection({ - ...dbConfig, - events: true - }); - - } catch (err) { - should.not.exist(err); - } - - } - }); // before() - - after(async function() { - if (!isRunnable) { - return; - } else { - try { - let sql = `REVOKE CHANGE NOTIFICATION FROM ${dbConfig.user}`; - await connAsDBA.execute(sql); - - await conn.close(); - await connAsDBA.close(); - } catch (err) { - should.not.exist(err); - } - } - }); // after() - - it('224.1 client initiated CQN', async () => { - try { - const TABLE = 'nodb_tab_cqn_001'; - let sql = - `CREATE TABLE ${TABLE} ( - k NUMBER - )`; - let plsql = testsUtil.sqlCreateTable(TABLE, sql); - await conn.execute(plsql); - const eventEmitter = new events.EventEmitter(); - - const myCallback = function(message) { - // should.strictEqual(message.type, oracledb.SUBSCR_EVENT_TYPE_QUERY_CHANGE); - // should.strictEqual(message.registered, true); - // const table = message.queries[0].tables[0]; - // const tableName = dbConfig.user.toUpperCase() + '.' + TABLE.toUpperCase(); - // should.strictEqual(table.name, tableName); - // should.strictEqual(table.operation, oracledb.CQN_OPCODE_INSERT); - console.log(message); - eventEmitter.emit("received"); - }; - - const options = { - callback : myCallback, - sql: `SELECT * FROM ${TABLE} WHERE k > :bv`, - binds: { bv : 100 }, - timeout : 20, - qos : oracledb.SUBSCR_QOS_QUERY | oracledb.SUBSCR_QOS_ROWIDS, - clientInitiated: true - }; - - console.log("Message 1:"); - await conn.subscribe('nodb_sub_001', options); - - sql = `INSERT INTO ${TABLE} VALUES (101)`; - await conn.execute(sql); - - sql = `INSERT INTO ${TABLE} VALUES (99)`; - await conn.execute(sql); - - sql = `INSERT INTO ${TABLE} VALUES (102)`; - await conn.execute(sql); - - await conn.commit(); - - await new Promise(function(resolve, reject) { - const timeout = setTimeout(function() { - reject(new Error("Timed out!")); - }, 25000); - eventEmitter.on("received", function() { - console.log("Received message!"); - clearTimeout(timeout); - resolve(); - }); - }); - - await conn.unsubscribe('nodb_sub_001'); - - sql = `DROP TABLE ${TABLE} PURGE`; - await conn.execute(sql); - } catch (err) { - should.not.exist(err); - } - - }); // 224.1 - - it('224.2 previous CQN', async () => { - try { - const TABLE = 'nodb_tab_cqn_002'; - let sql = - `CREATE TABLE ${TABLE} ( - k NUMBER - )`; - let plsql = testsUtil.sqlCreateTable(TABLE, sql); - await conn.execute(plsql); - - const eventEmitter = new events.EventEmitter(); - - const myCallback = function(message) { - // should.strictEqual(message.type, oracledb.SUBSCR_EVENT_TYPE_QUERY_CHANGE); - // should.strictEqual(message.registered, true); - // const table = message.queries[0].tables[0]; - // const tableName = dbConfig.user.toUpperCase() + '.' + TABLE.toUpperCase(); - // should.strictEqual(table.name, tableName); - // should.strictEqual(table.operation, oracledb.CQN_OPCODE_INSERT); - console.log(message); - eventEmitter.emit("received"); - }; - - const options = { - callback : myCallback, - sql: `SELECT * FROM ${TABLE} WHERE k > :bv`, - binds: { bv : 100 }, - timeout : 20, - qos : oracledb.SUBSCR_QOS_QUERY | oracledb.SUBSCR_QOS_ROWIDS - }; - - console.log("Message 2:"); - await conn.subscribe('nodb_sub_002', options); - - await testsUtil.sleep(); - - sql = `INSERT INTO ${TABLE} VALUES (101)`; - await conn.execute(sql); - - sql = `INSERT INTO ${TABLE} VALUES (99)`; - await conn.execute(sql); - - sql = `INSERT INTO ${TABLE} VALUES (102)`; - await conn.execute(sql); - - await conn.commit(); - - await new Promise(function(resolve, reject) { - const timeout = setTimeout(function() { - reject(new Error("Timed out!")); - }, 25000); - eventEmitter.on("received", function() { - console.log("Received message!"); - clearTimeout(timeout); - resolve(); - }); - }); - - await conn.unsubscribe('nodb_sub_002'); - - sql = `DROP TABLE ${TABLE} PURGE`; - await conn.execute(sql); - } catch (err) { - should.not.exist(err); - } - }); // 224.2 -}); diff --git a/test/cqn02.js b/test/cqn02.js deleted file mode 100644 index de4748e3..00000000 --- a/test/cqn02.js +++ /dev/null @@ -1,94 +0,0 @@ -/* Copyright (c) 2019, 2023, Oracle and/or its affiliates. */ - -/****************************************************************************** - * - * This software is dual-licensed to you under the Universal Permissive License - * (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License - * 2.0 as shown at https://www.apache.org/licenses/LICENSE-2.0. You may choose - * either license. - * - * If you elect to accept the software under the Apache License, Version 2.0, - * the following applies: - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * NAME - * 225. cqn02.js - * - * DESCRIPTION - * Negative test of CQN client initiated connections. - * - *****************************************************************************/ -'use strict'; - -const oracledb = require('oracledb'); -const should = require('should'); -const assert = require('assert'); -const dbConfig = require('./dbconfig.js'); -const testsUtil = require('./testsUtil.js'); - -describe('225. cqn02.js', function() { - - let isRunnable = true; - before(async function() { - const prep = await testsUtil.checkPrerequisites(1904000000, 1904000000); - isRunnable = !prep; - - if (!isRunnable) { - this.skip(); - } - }); // before() - - it('225.1 Negative - DB version or client version is less than 19.4', async () => { - try { - const conn = await oracledb.getConnection({ - ...dbConfig, - events: true - }); - const TABLE = 'nodb_tab_cqn02'; - let sql = - `CREATE TABLE ${TABLE} ( - k NUMBER - )`; - let plsql = testsUtil.sqlCreateTable(TABLE, sql); - await conn.execute(plsql); - - const myCallback = function(message) { - console.log(message); - }; - - const options = { - callback : myCallback, - sql: `SELECT * FROM ${TABLE} WHERE k > :bv`, - binds: { bv : 100 }, - timeout : 20, - qos : oracledb.SUBSCR_QOS_QUERY | oracledb.SUBSCR_QOS_ROWIDS, - clientInitiated: true - }; - - await assert.rejects( - async () => { - await conn.subscribe('sub1', options); - }, - /DPI-1050/ - ); - // DPI-1050: Oracle Client library is at version 19.3 but version 19.4 or higher is needed - - sql = `DROP TABLE ${TABLE} PURGE`; - await conn.execute(sql); - await conn.close(); - } catch (err) { - should.not.exist(err); - } - }); // 225.1 -}); diff --git a/test/dataTypeRaw.js b/test/dataTypeRaw.js index c9ea5aaf..91d65eae 100644 --- a/test/dataTypeRaw.js +++ b/test/dataTypeRaw.js @@ -464,6 +464,6 @@ describe('42. dataTypeRaw.js', function() { let fetch = async function(expected) { let sql = "select content from " + tableName + " where num = " + insertID; let result = await connection.execute(sql); - assist.compare2Buffers(result.rows[0][0], expected); + assert.deepStrictEqual(result.rows[0][0], expected); }; }); diff --git a/test/fetchArraySize1.js b/test/fetchArraySize1.js index 6ada4bb8..f9e0c45d 100644 --- a/test/fetchArraySize1.js +++ b/test/fetchArraySize1.js @@ -32,160 +32,138 @@ 'use strict'; const oracledb = require('oracledb'); -const should = require('should'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); describe("148. fetchArraySize1.js", function() { let connection = null; - var defaultVal = oracledb.fetchArraySize; + let defaultVal = oracledb.fetchArraySize; - before(function(done) { - oracledb.getConnection(dbConfig, function(err, conn) { - should.strictEqual(defaultVal, 100); - should.not.exist(err); - connection = conn; - done(); - }); + before(async function() { + connection = await oracledb.getConnection(dbConfig); + assert.strictEqual(defaultVal, 100); }); - after(function(done) { - connection.close(function(err) { - should.not.exist(err); - done(); - }); + after(async function() { + await connection.close(); }); describe("148.1 oracledb.fetchArraySize", function() { - afterEach(function(done) { + afterEach(function() { oracledb.fetchArraySize = defaultVal; - done(); }); - it("148.1.1 oracledb.fetchArraySize = 0", function(done) { - checkError(0, done); + it("148.1.1 oracledb.fetchArraySize = 0", function() { + checkError(0); }); - it("148.1.2 oracledb.fetchArraySize = 1", function(done) { - checkGlobalOptionValue(1, 1, done); + it("148.1.2 oracledb.fetchArraySize = 1", async function() { + await checkGlobalOptionValue(1, 1); }); - it("148.1.3 Negative: oracledb.fetchArraySize = undefined", function(done) { - checkError(undefined, done); + it("148.1.3 Negative: oracledb.fetchArraySize = undefined", function() { + checkError(undefined); }); - it("148.1.4 Negative: oracledb.fetchArraySize = null", function(done) { - checkError(null, done); + it("148.1.4 Negative: oracledb.fetchArraySize = null", function() { + checkError(null); }); - it("148.1.5 Negative: oracledb.fetchArraySize = random string", function(done) { - checkError("random string", done); + it("148.1.5 Negative: oracledb.fetchArraySize = random string", function() { + checkError("random string"); }); - it("148.1.6 Negative: oracledb.fetchArraySize = Boolean", function(done) { - checkError(true, done); + it("148.1.6 Negative: oracledb.fetchArraySize = Boolean", function() { + checkError(true); }); - it("148.1.7 Negative: oracledb.fetchArraySize = NaN", function(done) { - checkError(NaN, done); + it("148.1.7 Negative: oracledb.fetchArraySize = NaN", function() { + checkError(NaN); }); - it("148.1.8 oracledb.fetchArraySize = big number", function(done) { - checkGlobalOptionValue(1000000, 1000000, done); + it("148.1.8 oracledb.fetchArraySize = big number", async function() { + await checkGlobalOptionValue(1000000, 1000000); }); }); describe("148.2 execute() option fetchArraySize", function() { - it("148.2.1 fetchArraySize = 0", function(done) { - queryExpectsError(0, done); + it("148.2.1 fetchArraySize = 0", async function() { + await queryExpectsError(0); }); - it("148.2.2 fetchArraySize = 1", function(done) { - checkExecOptionValue(1, done); + it("148.2.2 fetchArraySize = 1", async function() { + await checkExecOptionValue(1); }); - it("148.2.3 fetchArraySize = undefined works as default value 100", function(done) { - checkExecOptionValue(undefined, done); + it("148.2.3 fetchArraySize = undefined works as default value 100", async function() { + await checkExecOptionValue(undefined); }); - it("148.2.4 Negative: fetchArraySize = null", function(done) { - queryExpectsError(null, done); + it("148.2.4 Negative: fetchArraySize = null", async function() { + await queryExpectsError(null); }); - it("148.2.5 Negative: fetchArraySize = random string", function(done) { - queryExpectsError("random string", done); + it("148.2.5 Negative: fetchArraySize = random string", async function() { + await queryExpectsError("random string"); }); - it("148.2.6 Negative: fetchArraySize = Boolean", function(done) { - queryExpectsError(false, done); + it("148.2.6 Negative: fetchArraySize = Boolean", async function() { + await queryExpectsError(false); }); - it("148.2.7 Negative: fetchArraySize = NaN", function(done) { - queryExpectsError(NaN, done); + it("148.2.7 Negative: fetchArraySize = NaN", async function() { + await queryExpectsError(NaN); }); - it("148.2.8 fetchArraySize = big number", function(done) { - checkExecOptionValue(1000000, done); + it("148.2.8 fetchArraySize = big number", async function() { + await checkExecOptionValue(1000000); }); }); - var checkGlobalOptionValue = function(values, expectedFetchArraySize, cb) { - should.doesNotThrow( + const checkGlobalOptionValue = async function(values, expectedFetchArraySize) { + assert.doesNotThrow( function() { oracledb.fetchArraySize = values; } ); - connection.execute( - "select 'oracledb.fetchArraySize' from dual", - function(err, result) { - should.not.exist(err); - should.strictEqual(result.rows[0][0], "oracledb.fetchArraySize"); - should.strictEqual(oracledb.fetchArraySize, expectedFetchArraySize); - cb(); - } + let result = await connection.execute( + "select 'oracledb.fetchArraySize' from dual" ); + assert.strictEqual(result.rows[0][0], "oracledb.fetchArraySize"); + assert.strictEqual(oracledb.fetchArraySize, expectedFetchArraySize); }; - var checkError = function(values, cb) { - should.throws( + const checkError = function(values) { + assert.throws( function() { oracledb.fetchArraySize = values; }, /NJS-004:/ ); - cb(); }; - var checkExecOptionValue = function(values, cb) { - connection.execute( + const checkExecOptionValue = async function(values) { + let result = await connection.execute( "select 'fetchArraySize' from dual", [], - { fetchArraySize: values }, - function(err, result) { - should.not.exist(err); - should.strictEqual(oracledb.fetchArraySize, 100); - should.strictEqual(result.rows[0][0], "fetchArraySize"); - cb(); - } + { fetchArraySize: values } ); + assert.strictEqual(oracledb.fetchArraySize, 100); + assert.strictEqual(result.rows[0][0], "fetchArraySize"); }; - var queryExpectsError = function(values, cb) { - connection.execute( - "select 'fetchArraySize' from dual", - [], - { fetchArraySize: values }, - function(err, result) { - should.exist(err); - should.not.exist(result); - should.strictEqual(err.message, "NJS-007: invalid value for \"fetchArraySize\" in parameter 3"); - cb(); - } + const queryExpectsError = async function(values) { + const sql = "select 'fetchArraySize' from dual"; + const options = { fetchArraySize: values }; + await assert.rejects( + async () => await connection.execute(sql, [], options), + /NJS-007:/ ); }; diff --git a/test/fetchArraySize2.js b/test/fetchArraySize2.js index 89a777b4..38ac0653 100644 --- a/test/fetchArraySize2.js +++ b/test/fetchArraySize2.js @@ -1,4 +1,4 @@ -/* Copyright (c) 2017, 2022, Oracle and/or its affiliates. */ +/* Copyright (c) 2017, 2023, Oracle and/or its affiliates. */ /****************************************************************************** * @@ -38,8 +38,7 @@ 'use strict'; const oracledb = require('oracledb'); -const should = require('should'); -const async = require('async'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); describe("149. fetchArraySize2.js", function() { @@ -76,210 +75,166 @@ describe("149. fetchArraySize2.js", function() { const drop_table = "DROP TABLE " + tableName + " PURGE"; - before(function(done) { - oracledb.getConnection(dbConfig, function(err, conn) { - should.strictEqual(default_fetcArraySize, 100); - should.strictEqual(default_maxRows, 0); - should.not.exist(err); - connection = conn; - done(); - }); + before(async function() { + connection = await oracledb.getConnection(dbConfig); + assert.strictEqual(default_fetcArraySize, 100); + assert.strictEqual(default_maxRows, 0); }); - after(function(done) { - connection.close(function(err) { - should.not.exist(err); - done(); - }); + after(async function() { + await connection.close(); }); describe("149.1 basic fetch with different maxRows and oracledb.fetchArraySize", function() { - before(function(done) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - done() ; - } - ); + before(async function() { + await connection.execute(create_table); }); - after(function(done) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + after(async function() { + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.fetchArraySize = default_fetcArraySize; oracledb.maxRows = default_maxRows; - done(); }); - const basicFetch = function(fetchArraySizeVal, maxRowsVal, affectedID, cb) { + const basicFetch = async function(fetchArraySizeVal, maxRowsVal, affectedID) { oracledb.fetchArraySize = fetchArraySizeVal; oracledb.maxRows = maxRowsVal; - connection.execute( - "SELECT * FROM " + tableName + " WHERE id > " + affectedID + " ORDER BY id", - function(err, result) { - should.not.exist(err); - let resultLenExpected = maxRowsVal > (tableSize - affectedID) ? (tableSize - affectedID) : maxRowsVal; - if (maxRowsVal === 0) resultLenExpected = tableSize - affectedID; - should.strictEqual(result.rows.length, resultLenExpected); - verifyResult(result.rows, affectedID, cb); - } + let result = await connection.execute( + "SELECT * FROM " + tableName + " WHERE id > " + affectedID + " ORDER BY id" ); + let resultLenExpected = maxRowsVal > (tableSize - affectedID) ? (tableSize - affectedID) : maxRowsVal; + if (maxRowsVal === 0) resultLenExpected = tableSize - affectedID; + assert.strictEqual(result.rows.length, resultLenExpected); + verifyResult(result.rows, affectedID); }; - const verifyResult = function(result, affectedID, callback) { - async.forEach(result, function(element, cb) { - const index = result.indexOf(element); - verifyEachRow(index + 1 + affectedID, element); - cb(); - }, function(err) { - should.not.exist(err); - callback(); - }); + const verifyResult = function(result, affectedID) { + for (let element of result) { + const index = result.indexOf(element) + 1 + affectedID; + assert.strictEqual(element[1], String(index)); + assert.strictEqual(element[0], index); + } }; - const verifyEachRow = function(index, element) { - should.strictEqual(element[1], String(index)); - should.strictEqual(element[0], index); - }; - - it("149.1.1 maxRows > table size > oracledb.fetchArraySize", function(done) { + it("149.1.1 maxRows > table size > oracledb.fetchArraySize", async function() { const fetchArraySizeVal = tableSize - 1; const maxRowsVal = tableSize + 1; const affectedID = 0; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.1.2 maxRows > oracledb.fetchArraySize > table size", function(done) { + it("149.1.2 maxRows > oracledb.fetchArraySize > table size", async function() { const fetchArraySizeVal = tableSize - 99; const maxRowsVal = tableSize - 7; const affectedID = 20; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.1.3 table size > maxRows > oracledb.fetchArraySize", function(done) { + it("149.1.3 table size > maxRows > oracledb.fetchArraySize", async function() { const fetchArraySizeVal = tableSize - 100; const maxRowsVal = tableSize - 2; const affectedID = 10; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.1.4 table size > oracledb.fetchArraySize > maxRow", function(done) { + it("149.1.4 table size > oracledb.fetchArraySize > maxRow", async function() { const fetchArraySizeVal = tableSize - 3; const maxRowsVal = tableSize - 77; const affectedID = 50; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.1.5 maxRows = oracledb.fetchArraySize < table size", function(done) { + it("149.1.5 maxRows = oracledb.fetchArraySize < table size", async function() { const fetchArraySizeVal = tableSize - 110; const maxRowsVal = tableSize - 110; const affectedID = 20; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.1.6 maxRows = oracledb.fetchArraySize = table size", function(done) { + it("149.1.6 maxRows = oracledb.fetchArraySize = table size", async function() { const fetchArraySizeVal = tableSize; const maxRowsVal = tableSize; const affectedID = 0; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.1.7 maxRows = oracledb.fetchArraySize > table size", function(done) { + it("149.1.7 maxRows = oracledb.fetchArraySize > table size", async function() { const fetchArraySizeVal = tableSize + 9999; const maxRowsVal = tableSize + 9999; const affectedID = 10; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.1.8 maxRows = oracledb.fetchArraySize/10", function(done) { + it("149.1.8 maxRows = oracledb.fetchArraySize/10", async function() { const fetchArraySizeVal = tableSize / 10 - 1; const maxRowsVal = tableSize / 10; const affectedID = 0; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.1.9 maxRows = 10 * oracledb.fetchArraySize", function(done) { + it("149.1.9 maxRows = 10 * oracledb.fetchArraySize", async function() { const fetchArraySizeVal = 90; const maxRowsVal = 900; const affectedID = 50; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.1.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", function(done) { + it("149.1.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", async function() { const fetchArraySizeVal = tableSize / 10; const maxRowsVal = tableSize / 10 + 1; const affectedID = 0; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.1.11 maxRows = 0, fetchArraySize = table size ", function(done) { + it("149.1.11 maxRows = 0, fetchArraySize = table size ", async function() { const fetchArraySizeVal = tableSize; const maxRowsVal = 0; const affectedID = 0; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.1.12 maxRows = 9999999, fetchArraySize = table size ", function(done) { + it("149.1.12 maxRows = 9999999, fetchArraySize = table size ", async function() { const fetchArraySizeVal = tableSize; const maxRowsVal = 9999999; const affectedID = 0; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.1.13 maxRows = (table size - 1), fetchArraySize = table size ", function(done) { + it("149.1.13 maxRows = (table size - 1), fetchArraySize = table size ", async function() { const fetchArraySizeVal = tableSize; const maxRowsVal = tableSize - 1; const affectedID = 0; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.1.14 fetchArraySize = (table size - 1), maxRows = table size ", function(done) { + it("149.1.14 fetchArraySize = (table size - 1), maxRows = table size ", async function() { const fetchArraySizeVal = tableSize - 1; const maxRowsVal = tableSize; const affectedID = 0; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); }); describe("149.2 REF CURSORS with different numRows and oracledb.fetchArraySize", function() { - before(function(done) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - done() ; - } - ); + before(async function() { + await connection.execute(create_table); }); - after(function(done) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + after(async function() { + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.fetchArraySize = default_fetcArraySize; oracledb.maxRows = default_maxRows; - done(); }); - const testRefCursor = function(fetchArraySizeVal, numRowsVal, cb) { + const testRefCursor = async function(fetchArraySizeVal, numRowsVal) { const create_ref = `CREATE OR REPLACE PROCEDURE testrefproc (p_out OUT SYS_REFCURSOR) AS BEGIN @@ -289,294 +244,249 @@ describe("149. fetchArraySize2.js", function() { const drop_ref = "DROP PROCEDURE testrefproc"; const exec_ref = "BEGIN testrefproc(:o); END;"; - async.series([ - function(callback) { - connection.execute( - create_ref, - function(err) { - should.not.exist(err); - callback(); - } - ); - }, - function(callback) { - oracledb.fetchArraySize = fetchArraySizeVal; - connection.execute( - exec_ref, - [ - { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } - ], - { outFormat: oracledb.OUT_FORMAT_OBJECT }, - function(err, result) { - should.not.exist(err); - const rowCount = 0; - fetchRowsFromRS(result.outBinds[0], numRowsVal, rowCount, callback); - } - ); - }, - function(callback) { - connection.execute( - drop_ref, - function(err) { - should.not.exist(err); - callback(); - } - ); - } - ], cb); + await connection.execute(create_ref); + + oracledb.fetchArraySize = fetchArraySizeVal; + let result = await connection.execute( + exec_ref, + [ + { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } + ], + { outFormat: oracledb.OUT_FORMAT_OBJECT } + ); + const rowCount = 0; + fetchRowsFromRS(result.outBinds[0], numRowsVal, rowCount); + + await connection.execute(drop_ref); }; - function fetchRowsFromRS(rs, numRowsVal, rowCount, cb) { - rs.getRows(numRowsVal, function(err, rows) { - if (rows.length > 0) { - for (let i = 0; i < rows.length; i++) { - (rows.length).should.be.belowOrEqual(numRowsVal); - rowCount = rowCount + 1; - // console.log(rows[i][0]); - should.strictEqual(rows[i].ID, rowCount); - should.strictEqual(rows[i].CONTENT, rowCount.toString()); - } - return fetchRowsFromRS(rs, numRowsVal, rowCount, cb); - } else { - should.strictEqual(rowCount, tableSize); - rs.close(function(err) { - should.not.exist(err); - cb(); - }); + async function fetchRowsFromRS(rs, numRowsVal, rowCount) { + let rows = await rs.getRows(numRowsVal); + if (rows.length > 0) { + for (let i = 0; i < rows.length; i++) { + assert(rows.length <= numRowsVal); + rowCount++; + assert.strictEqual(rows[i].ID, rowCount); + assert.strictEqual(rows[i].CONTENT, rowCount.toString()); } - }); + return fetchRowsFromRS(rs, numRowsVal, rowCount); + } else { + assert.strictEqual(rowCount, tableSize); + await rs.close(); + } } - it("149.2.1 numRows > table size > oracledb.fetchArraySize", function(done) { + it("149.2.1 numRows > table size > oracledb.fetchArraySize", async function() { const fetchArraySizeVal = tableSize - 1; const numRowsVal = tableSize + 1; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("149.2.2 numRows > oracledb.fetchArraySize > table size", function(done) { + it("149.2.2 numRows > oracledb.fetchArraySize > table size", async function() { const fetchArraySizeVal = tableSize + 7; const numRowsVal = tableSize + 77; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("149.2.3 table size > numRows > oracledb.fetchArraySize", function(done) { + it("149.2.3 table size > numRows > oracledb.fetchArraySize", async function() { const fetchArraySizeVal = tableSize - 11; const numRowsVal = tableSize - 2; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("149.2.4 table size > oracledb.fetchArraySize > maxRow", function(done) { + it("149.2.4 table size > oracledb.fetchArraySize > maxRow", async function() { const fetchArraySizeVal = tableSize - 90; const numRowsVal = tableSize - 150; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("149.2.5 numRows = oracledb.fetchArraySize < table size", function(done) { + it("149.2.5 numRows = oracledb.fetchArraySize < table size", async function() { const fetchArraySizeVal = tableSize - 110; const numRowsVal = tableSize - 110; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("149.2.6 numRows = oracledb.fetchArraySize = table size", function(done) { + it("149.2.6 numRows = oracledb.fetchArraySize = table size", async function() { const fetchArraySizeVal = tableSize; const numRowsVal = tableSize; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("149.2.7 numRows = oracledb.fetchArraySize > table size", function(done) { + it("149.2.7 numRows = oracledb.fetchArraySize > table size", async function() { const fetchArraySizeVal = tableSize + 9999; const numRowsVal = tableSize + 9999; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("149.2.8 numRows = oracledb.fetchArraySize/10", function(done) { + it("149.2.8 numRows = oracledb.fetchArraySize/10", async function() { const fetchArraySizeVal = tableSize / 10 + 1; const numRowsVal = tableSize / 10; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("149.2.9 numRows = 10 * oracledb.fetchArraySize", function(done) { + it("149.2.9 numRows = 10 * oracledb.fetchArraySize", async function() { const fetchArraySizeVal = 90; const numRowsVal = 900; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("149.2.10 numRows > fetchArraySize, fetchArraySize = (table size)/10", function(done) { + it("149.2.10 numRows > fetchArraySize, fetchArraySize = (table size)/10", async function() { const fetchArraySizeVal = tableSize / 10; const numRowsVal = tableSize / 10 + 1; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("149.2.11 numRows = (table size - 1), fetchArraySize = table size", function(done) { + it("149.2.11 numRows = (table size - 1), fetchArraySize = table size", async function() { const fetchArraySizeVal = tableSize; const numRowsVal = tableSize - 1; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("149.2.12 fetchArraySize = (table size - 1), numRows = table size", function(done) { + it("149.2.12 fetchArraySize = (table size - 1), numRows = table size", async function() { const fetchArraySizeVal = tableSize - 1; const numRowsVal = tableSize; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + await testRefCursor(fetchArraySizeVal, numRowsVal); }); }); describe("149.3 queryStream() with different maxRows and oracledb.fetchArraySize", function() { - before(function(done) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - done() ; - } - ); + before(async function() { + await connection.execute(create_table); }); - after(function(done) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + after(async function() { + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.fetchArraySize = default_fetcArraySize; oracledb.maxRows = default_maxRows; - done(); }); - const testQueryStream = function(fetchArraySizeVal, maxRowsVal, affectedID, cb) { + const testQueryStream = async function(fetchArraySizeVal, maxRowsVal, affectedID) { oracledb.fetchArraySize = fetchArraySizeVal; oracledb.maxRows = maxRowsVal; const resultLenExpected = tableSize - affectedID; const querySql = "select * from " + tableName + " where id > " + affectedID + " order by id"; - const stream = connection.queryStream(querySql); - - stream.on('error', function(error) { - should.fail(error, null, 'Error event should not be triggered'); - }); - + const stream = await connection.queryStream(querySql); let counter = 0; - stream.on('data', function(data) { - should.exist(data); - counter = counter + 1; - verifyResult(data, counter, affectedID); - }); - - stream.on('end', function() { - should.equal(counter, resultLenExpected); - stream.destroy(); - }); - - stream.on('close', function() { - cb(); + await new Promise((resolve, reject) => { + stream.on('error', reject); + stream.on('end', function() { + assert.strictEqual(counter, resultLenExpected); + stream.destroy(); + }); + stream.on('close', resolve); + stream.on('data', function(data) { + assert(data); + counter++; + verifyResult(data, counter, affectedID); + }); }); }; const verifyResult = function(data, counter, affectedID) { - should.strictEqual(data[0], counter + affectedID); - should.strictEqual(data[1], String(counter + affectedID)); + assert.strictEqual(data[0], counter + affectedID); + assert.strictEqual(data[1], String(counter + affectedID)); }; - it("149.3.1 maxRows > table size > oracledb.fetchArraySize", function(done) { + it("149.3.1 maxRows > table size > oracledb.fetchArraySize", async function() { const fetchArraySizeVal = tableSize - 1; const maxRowsVal = tableSize + 1; const affectedID = 0; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.3.2 maxRows > oracledb.fetchArraySize > table size", function(done) { + it("149.3.2 maxRows > oracledb.fetchArraySize > table size", async function() { const fetchArraySizeVal = tableSize + 101; const maxRowsVal = tableSize + 1000; const affectedID = 20; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.3.3 table size > maxRows > oracledb.fetchArraySize", function(done) { + it("149.3.3 table size > maxRows > oracledb.fetchArraySize", async function() { const fetchArraySizeVal = tableSize - 11; const maxRowsVal = tableSize - 2; const affectedID = 0; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.3.4 table size > oracledb.fetchArraySize > maxRow", function(done) { + it("149.3.4 table size > oracledb.fetchArraySize > maxRow", async function() { const fetchArraySizeVal = tableSize - 90; const maxRowsVal = tableSize - 150; const affectedID = 50; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.3.5 maxRows = oracledb.fetchArraySize < table size", function(done) { + it("149.3.5 maxRows = oracledb.fetchArraySize < table size", async function() { const fetchArraySizeVal = tableSize - 110; const maxRowsVal = tableSize - 110; const affectedID = 20; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.3.6 maxRows = oracledb.fetchArraySize = table size", function(done) { + it("149.3.6 maxRows = oracledb.fetchArraySize = table size", async function() { const fetchArraySizeVal = tableSize; const maxRowsVal = tableSize; const affectedID = 0; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.3.7 maxRows = oracledb.fetchArraySize > table size", function(done) { + it("149.3.7 maxRows = oracledb.fetchArraySize > table size", async function() { const fetchArraySizeVal = tableSize + 9999; const maxRowsVal = tableSize + 9999; const affectedID = 10; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.3.8 maxRows = oracledb.fetchArraySize/10", function(done) { + it("149.3.8 maxRows = oracledb.fetchArraySize/10", async function() { const fetchArraySizeVal = tableSize / 10 + 1; const maxRowsVal = tableSize / 10; const affectedID = 0; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.3.9 maxRows = 10 * oracledb.fetchArraySize", function(done) { + it("149.3.9 maxRows = 10 * oracledb.fetchArraySize", async function() { const fetchArraySizeVal = 90; const maxRowsVal = 900; const affectedID = 50; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.3.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", function(done) { + it("149.3.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", async function() { const fetchArraySizeVal = tableSize / 10; const maxRowsVal = tableSize / 10 + 1; const affectedID = 50; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.3.11 maxRows = 0, fetchArraySize = table size", function(done) { + it("149.3.11 maxRows = 0, fetchArraySize = table size", async function() { const fetchArraySizeVal = tableSize; const maxRowsVal = 0; const affectedID = 0; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.3.12 maxRows = 9999999, fetchArraySize = table size", function(done) { + it("149.3.12 maxRows = 9999999, fetchArraySize = table size", async function() { const fetchArraySizeVal = tableSize; const maxRowsVal = 9999999; const affectedID = 0; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.3.13 maxRows = (table size - 1), fetchArraySize = table size ", function(done) { + it("149.3.13 maxRows = (table size - 1), fetchArraySize = table size ", async function() { const fetchArraySizeVal = tableSize; const maxRowsVal = tableSize - 1; const affectedID = 0; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("149.3.14 fetchArraySize = (table size - 1), maxRows = table size ", function(done) { + it("149.3.14 fetchArraySize = (table size - 1), maxRows = table size ", async function() { const fetchArraySizeVal = tableSize - 1; const maxRowsVal = tableSize; const affectedID = 0; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); }); diff --git a/test/fetchArraySize3.js b/test/fetchArraySize3.js index 0f9faba1..221a48c8 100644 --- a/test/fetchArraySize3.js +++ b/test/fetchArraySize3.js @@ -36,17 +36,16 @@ 'use strict'; const oracledb = require('oracledb'); -const should = require('should'); -const async = require('async'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); describe("150. fetchArraySize3.js", function() { let connection = null; - var default_fetcArraySize = oracledb.fetchArraySize; - var default_maxRows = oracledb.maxRows; - var tableName = "nodb_fetchArraySize_150"; - var tableSize = 1000; + let default_fetcArraySize = oracledb.fetchArraySize; + let default_maxRows = oracledb.maxRows; + let tableName = "nodb_fetchArraySize_150"; + let tableSize = 1000; const create_table = "BEGIN \n" + " DECLARE \n" + @@ -74,342 +73,233 @@ describe("150. fetchArraySize3.js", function() { const drop_table = "DROP TABLE " + tableName + " PURGE"; - before(function(done) { - oracledb.getConnection(dbConfig, function(err, conn) { - should.strictEqual(default_fetcArraySize, 100); - should.strictEqual(default_maxRows, 0); - should.not.exist(err); - connection = conn; - done(); - }); + before(async function() { + connection = await oracledb.getConnection(dbConfig); + assert.strictEqual(default_fetcArraySize, 100); + assert.strictEqual(default_maxRows, 0); }); - after(function(done) { - connection.close(function(err) { - should.not.exist(err); - done(); - }); + after(async function() { + await connection.close(); }); describe("150.1 DML binding", function() { - before(function(done) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - done() ; - } - ); + before(async function() { + await connection.execute(create_table); }); - after(function(done) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + after(async function() { + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.fetchArraySize = default_fetcArraySize; oracledb.maxRows = default_maxRows; - done(); }); - var dmlBinding = function(fetchArraySize, affectedRowId, cb) { + const dmlBinding = async function(fetchArraySize, affectedRowId) { oracledb.fetchArraySize = fetchArraySize; - async.series([ - function(callback) { - connection.execute( - "update " + tableName + " set content = :c where id > :num", - { - num: { val: affectedRowId, dir: oracledb.BIND_IN, type: oracledb.NUMBER }, - c: { val: "something", dir: oracledb.BIND_IN, type: oracledb.STRING } - }, - function(err, result) { - should.not.exist(err); - should.strictEqual(result.rowsAffected, tableSize - affectedRowId); - callback(); - }); - }, - function(callback) { - connection.execute( - "select * from " + tableName + " where id > :num order by id", - { num: { val: affectedRowId, dir: oracledb.BIND_IN, type: oracledb.NUMBER } }, - function(err, result) { - should.not.exist(err); - should.strictEqual(result.rows.length, tableSize - affectedRowId); - verifyResult(result.rows, affectedRowId); - callback(); - } - ); + let result = await connection.execute( + "update " + tableName + " set content = :c where id > :num", + { + num: { val: affectedRowId, dir: oracledb.BIND_IN, type: oracledb.NUMBER }, + c: { val: "something", dir: oracledb.BIND_IN, type: oracledb.STRING } } - ], cb); + ); + assert.strictEqual(result.rowsAffected, tableSize - affectedRowId); + + result = await connection.execute( + "select * from " + tableName + " where id > :num order by id", + { num: { val: affectedRowId, dir: oracledb.BIND_IN, type: oracledb.NUMBER } } + ); + assert.strictEqual(result.rows.length, tableSize - affectedRowId); + verifyResult(result.rows, affectedRowId); }; - var verifyResult = function(result, affectedRowId) { - async.forEach(result, function(element, cb) { - var index = result.indexOf(element); + let verifyResult = function(result, affectedRowId) { + for (let element of result) { + let index = result.indexOf(element); verifyEachRow(index + 1 + affectedRowId, element); - cb(); - }, function(err) { - should.not.exist(err); - }); + } }; - var verifyEachRow = function(index, element) { - should.strictEqual(element[0], index); - should.strictEqual(element[1], "something"); + let verifyEachRow = function(index, element) { + assert.strictEqual(element[0], index); + assert.strictEqual(element[1], "something"); }; - it("150.1.1 oracledb.fetchArraySize = 1", function(done) { - dmlBinding(1, 50, done); + it("150.1.1 oracledb.fetchArraySize = 1", async function() { + await dmlBinding(1, 50); }); - it("150.1.2 oracledb.fetchArraySize = tableSize/20", function(done) { - dmlBinding(tableSize / 20, 0, done); + it("150.1.2 oracledb.fetchArraySize = tableSize/20", async function() { + await dmlBinding(tableSize / 20, 0); }); - it("150.1.3 oracledb.fetchArraySize = tableSize/10", function(done) { - dmlBinding(tableSize / 10, 2, done); + it("150.1.3 oracledb.fetchArraySize = tableSize/10", async function() { + await dmlBinding(tableSize / 10, 2); }); - it("150.1.4 oracledb.fetchArraySize = tableSize", function(done) { - dmlBinding(tableSize, 1, done); + it("150.1.4 oracledb.fetchArraySize = tableSize", async function() { + await dmlBinding(tableSize, 1); }); - it("150.1.5 oracledb.fetchArraySize = (table size - 1)", function(done) { - dmlBinding(tableSize - 1, 0, done); + it("150.1.5 oracledb.fetchArraySize = (table size - 1)", async function() { + await dmlBinding(tableSize - 1, 0); }); }); describe("150.2 procedure binding", function() { - var proc_package = "CREATE OR REPLACE PACKAGE nodb_ref_pkg IS\n" + - " TYPE idType IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;\n" + - " TYPE stringType IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;\n" + - " PROCEDURE array_out(ids OUT idType);\n" + - " PROCEDURE array_inout(id_in IN NUMBER, contents IN OUT stringType); \n" + - "END;"; + const proc_package = "CREATE OR REPLACE PACKAGE nodb_ref_pkg IS\n" + + " TYPE idType IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;\n" + + " TYPE stringType IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;\n" + + " PROCEDURE array_out(ids OUT idType);\n" + + " PROCEDURE array_inout(id_in IN NUMBER, contents IN OUT stringType); \n" + + "END;"; - var proc_package_body = "CREATE OR REPLACE PACKAGE BODY nodb_ref_pkg IS \n" + - " PROCEDURE array_out(ids OUT idType) IS \n" + - " BEGIN \n" + - " SELECT id BULK COLLECT INTO ids from " + tableName + " order by 1; \n" + - " END; \n" + - " PROCEDURE array_inout(id_in IN NUMBER, contents IN OUT stringType) IS \n" + - " BEGIN \n" + - " update " + tableName + " set content = (contents(1)||' '||to_char(id)) where id > id_in; \n" + - " SELECT content BULK COLLECT INTO contents FROM " + tableName + " where id > id_in ORDER BY id; \n" + - " END; \n " + - "END;"; - var proc_drop = "DROP PACKAGE nodb_ref_pkg"; + const proc_package_body = "CREATE OR REPLACE PACKAGE BODY nodb_ref_pkg IS \n" + + " PROCEDURE array_out(ids OUT idType) IS \n" + + " BEGIN \n" + + " SELECT id BULK COLLECT INTO ids from " + tableName + " order by 1; \n" + + " END; \n" + + " PROCEDURE array_inout(id_in IN NUMBER, contents IN OUT stringType) IS \n" + + " BEGIN \n" + + " update " + tableName + " set content = (contents(1)||' '||to_char(id)) where id > id_in; \n" + + " SELECT content BULK COLLECT INTO contents FROM " + tableName + " where id > id_in ORDER BY id; \n" + + " END; \n " + + "END;"; + const proc_drop = "DROP PACKAGE nodb_ref_pkg"; - before(function(done) { - async.series([ - function(cb) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.execute( - proc_package, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.execute( - proc_package_body, - function(err) { - should.not.exist(err); - cb(); - } - ); - } - ], done); + before(async function() { + await connection.execute(create_table); + await connection.execute(proc_package); + await connection.execute(proc_package_body); }); - after(function(done) { - async.series([ - function(cb) { - connection.execute( - proc_drop, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - cb(); - } - ); - } - ], done); + after(async function() { + await connection.execute(proc_drop); + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.fetchArraySize = default_fetcArraySize; oracledb.maxRows = default_maxRows; - done(); }); - var proc_query_inout = function(updateFromId, maxArraySizeVal, fetchArraySizeVal, cb) { + const proc_query_inout = async function(updateFromId, maxArraySizeVal, fetchArraySizeVal) { oracledb.fetchArraySize = fetchArraySizeVal; - connection.execute( + let result = await connection.execute( "BEGIN nodb_ref_pkg.array_inout(:id_in, :c); END;", { id_in: { type: oracledb.NUMBER, dir: oracledb.BIND_IN, val: updateFromId }, c: { type: oracledb.STRING, dir: oracledb.BIND_INOUT, val: ["something new"], maxArraySize: maxArraySizeVal }, - }, - function(err, result) { - should.not.exist(err); - var rowsAffected = tableSize - updateFromId; - should.strictEqual(result.outBinds.c.length, rowsAffected); - proc_verifyResult_inout(result.outBinds.c, updateFromId, cb); } ); + const rowsAffected = tableSize - updateFromId; + const outVal = result.outBinds.c; + assert.strictEqual(outVal.length, rowsAffected); + for (let element of outVal) { + const index = outVal.indexOf(element) + updateFromId + 1; + assert.strictEqual(element, "something new " + index); + } }; - var proc_verifyResult_inout = function(result, updateFromId, callback) { - async.forEach(result, function(element, cb) { - var index = result.indexOf(element); - proc_verifyEachRows_inout(index, element, updateFromId); - cb(); - }, function(err) { - should.not.exist(err); - callback(); - }); - }; - - var proc_verifyEachRows_inout = function(index, element, updateFromId) { - var expectedTail = index + updateFromId + 1; - should.strictEqual(element, "something new " + expectedTail); - }; - - var proc_query_out = function(maxArraySizeVal, fetchArraySizeVal, cb) { + const proc_query_out = async function(maxArraySizeVal, fetchArraySizeVal) { oracledb.fetchArraySize = fetchArraySizeVal; - connection.execute( + const result = await connection.execute( "BEGIN nodb_ref_pkg.array_out(:c); END;", { c: { type: oracledb.NUMBER, dir: oracledb.BIND_OUT, maxArraySize: maxArraySizeVal }, - }, - function(err, result) { - should.not.exist(err); - should.strictEqual(result.outBinds.c.length, tableSize); - proc_verifyResult_out(result.outBinds.c); - cb(); } ); + const outVal = result.outBinds.c; + assert.strictEqual(outVal.length, tableSize); + for (let element of outVal) { + const index = outVal.indexOf(element); + assert.strictEqual(element, index + 1); + } }; - var proc_verifyResult_out = function(result) { - async.forEach(result, function(element, cb) { - var index = result.indexOf(element); - proc_verifyEachRow_out(index, element); - cb(); - }, function(err) { - should.not.exist(err); - }); - }; - - var proc_verifyEachRow_out = function(index, element) { - should.strictEqual(element, index + 1); - }; - - it("150.2.1 Bind OUT with oracledb.fetchArraySize = 1", function(done) { - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = 1; - proc_query_out(maxArraySizeVal, fetchArraySizeVal, done); + it("150.2.1 Bind OUT with oracledb.fetchArraySize = 1", async function() { + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = 1; + await proc_query_out(maxArraySizeVal, fetchArraySizeVal); }); - it("150.2.2 Bind OUT with oracledb.fetchArraySize = tableSize/20", function(done) { - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize / 20; - proc_query_out(maxArraySizeVal, fetchArraySizeVal, done); + it("150.2.2 Bind OUT with oracledb.fetchArraySize = tableSize/20", async function() { + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize / 20; + await proc_query_out(maxArraySizeVal, fetchArraySizeVal); }); - it("150.2.3 Bind OUT with oracledb.fetchArraySize = tableSize/10", function(done) { - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize / 10; - proc_query_out(maxArraySizeVal, fetchArraySizeVal, done); + it("150.2.3 Bind OUT with oracledb.fetchArraySize = tableSize/10", async function() { + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize / 10; + await proc_query_out(maxArraySizeVal, fetchArraySizeVal); }); - it("150.2.4 Bind OUT with oracledb.fetchArraySize = tableSize", function(done) { - var maxArraySizeVal = tableSize + 1; - var fetchArraySizeVal = tableSize; - proc_query_out(maxArraySizeVal, fetchArraySizeVal, done); + it("150.2.4 Bind OUT with oracledb.fetchArraySize = tableSize", async function() { + let maxArraySizeVal = tableSize + 1; + let fetchArraySizeVal = tableSize; + await proc_query_out(maxArraySizeVal, fetchArraySizeVal); }); - it("150.2.5 Bind OUT with oracledb.fetchArraySize = (table size - 1)", function(done) { - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize - 1; - proc_query_out(maxArraySizeVal, fetchArraySizeVal, done); + it("150.2.5 Bind OUT with oracledb.fetchArraySize = (table size - 1)", async function() { + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize - 1; + await proc_query_out(maxArraySizeVal, fetchArraySizeVal); }); - it("150.2.6 Bind IN OUT with oracledb.fetchArraySize = 1", function(done) { - var updateFromId = 20; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = 1; - proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("150.2.6 Bind IN OUT with oracledb.fetchArraySize = 1", async function() { + let updateFromId = 20; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = 1; + await proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("150.2.7 Bind IN OUT with oracledb.fetchArraySize = tableSize/20", function(done) { - var updateFromId = 0; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize / 20; - proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("150.2.7 Bind IN OUT with oracledb.fetchArraySize = tableSize/20", async function() { + let updateFromId = 0; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize / 20; + await proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("150.2.8 Bind IN OUT with oracledb.fetchArraySize = tableSize/10", function(done) { - var updateFromId = 0; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize / 10; - proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("150.2.8 Bind IN OUT with oracledb.fetchArraySize = tableSize/10", async function() { + let updateFromId = 0; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize / 10; + await proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("150.2.9 Bind IN OUT with oracledb.fetchArraySize = tableSize", function(done) { - var updateFromId = 0; - var maxArraySizeVal = tableSize + 10; - var fetchArraySizeVal = tableSize; - proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("150.2.9 Bind IN OUT with oracledb.fetchArraySize = tableSize", async function() { + let updateFromId = 0; + let maxArraySizeVal = tableSize + 10; + let fetchArraySizeVal = tableSize; + await proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("150.2.10 Bind IN OUT with oracledb.fetchArraySize = (table size - 1)", function(done) { - var updateFromId = 0; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize - 1; - proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("150.2.10 Bind IN OUT with oracledb.fetchArraySize = (table size - 1)", async function() { + let updateFromId = 0; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize - 1; + await proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); }); describe("150.3 function binding", function() { - var proc_package = "CREATE OR REPLACE PACKAGE nodb_ref_fun_pkg AS\n" + - " TYPE idType IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;\n" + - " TYPE stringType IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;\n" + - " FUNCTION array_out(id_in IN NUMBER) RETURN idType;\n" + - " FUNCTION array_inout(id_in IN NUMBER, contents IN OUT stringType) RETURN idType; \n" + - "END;"; + const proc_package = "CREATE OR REPLACE PACKAGE nodb_ref_fun_pkg AS\n" + + " TYPE idType IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;\n" + + " TYPE stringType IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;\n" + + " FUNCTION array_out(id_in IN NUMBER) RETURN idType;\n" + + " FUNCTION array_inout(id_in IN NUMBER, contents IN OUT stringType) RETURN idType; \n" + + "END;"; - var proc_package_body = "CREATE OR REPLACE PACKAGE BODY nodb_ref_fun_pkg AS \n" + + let proc_package_body = "CREATE OR REPLACE PACKAGE BODY nodb_ref_fun_pkg AS \n" + " FUNCTION array_out(id_in IN NUMBER) RETURN idType AS \n" + " tmp_id1 idType; \n" + " BEGIN \n" + @@ -425,207 +315,136 @@ describe("150. fetchArraySize3.js", function() { " RETURN tmp_id2; \n" + " END; \n " + "END;"; - var proc_drop = "DROP PACKAGE nodb_ref_fun_pkg"; + const proc_drop = "DROP PACKAGE nodb_ref_fun_pkg"; - before(function(done) { - async.series([ - function(cb) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.execute( - proc_package, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.execute( - proc_package_body, - function(err) { - should.not.exist(err); - cb(); - } - ); - } - ], done); + before(async function() { + await connection.execute(create_table); + await connection.execute(proc_package); + await connection.execute(proc_package_body); }); - after(function(done) { - async.series([ - function(cb) { - connection.execute( - proc_drop, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - cb(); - } - ); - } - ], done); + after(async function() { + await connection.execute(proc_drop); + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.fetchArraySize = default_fetcArraySize; oracledb.maxRows = default_maxRows; - done(); }); - var fun_query_inout = function(updateFromId, maxArraySizeVal, fetchArraySizeVal, cb) { + const fun_query_inout = async function(updateFromId, maxArraySizeVal, fetchArraySizeVal) { oracledb.fetchArraySize = fetchArraySizeVal; - connection.execute( + let result = await connection.execute( "BEGIN :output := nodb_ref_fun_pkg.array_inout(:id_in, :c_inout); END;", { id_in: { type: oracledb.NUMBER, dir: oracledb.BIND_IN, val: updateFromId }, c_inout: { type: oracledb.STRING, dir: oracledb.BIND_INOUT, val: ["something new"], maxArraySize: maxArraySizeVal }, output: { type: oracledb.NUMBER, dir: oracledb.BIND_OUT, maxArraySize: maxArraySizeVal } - }, - function(err, result) { - should.not.exist(err); - fun_verifyResult_inout(result.outBinds.c_inout, updateFromId); - fun_verifyResult_inout(result.outBinds.output, updateFromId); - cb(); } ); + fun_verifyResult_inout(result.outBinds.c_inout, updateFromId); + fun_verifyResult_inout(result.outBinds.output, updateFromId); }; - var fun_verifyResult_inout = function(result, updateFromId) { - var rowsAffected = tableSize - updateFromId; - should.strictEqual(result.length, rowsAffected); - async.forEach(result, function(element, cb) { - var index = result.indexOf(element); - fun_verifyEachRow_inout(index, element, updateFromId); - cb(); - }, function(err) { - should.not.exist(err); - }); - }; - - var fun_verifyEachRow_inout = function(index, element, updateFromId) { - if (typeof element === "string") { - var expectedTail = index + updateFromId + 1; - should.strictEqual(element, "something new " + expectedTail); - } else if (typeof element === "number") { - should.strictEqual(element, index + 1 + updateFromId); + const fun_verifyResult_inout = function(result, updateFromId) { + let rowsAffected = tableSize - updateFromId; + assert.strictEqual(result.length, rowsAffected); + for (let element of result) { + const index = result.indexOf(element) + updateFromId + 1; + if (typeof element === "string") { + assert.strictEqual(element, "something new " + index); + } else if (typeof element === "number") { + assert.strictEqual(element, index); + } } }; - var fun_query_out = function(affectFromId, maxArraySizeVal, fetchArraySizeVal, cb) { + const fun_query_out = async function(affectFromId, maxArraySizeVal, fetchArraySizeVal) { oracledb.fetchArraySize = fetchArraySizeVal; - connection.execute( + const result = await connection.execute( "BEGIN :output := nodb_ref_fun_pkg.array_out(:c); END;", { c: { type: oracledb.NUMBER, dir: oracledb.BIND_IN, val: affectFromId }, output: { type: oracledb.NUMBER, dir: oracledb.BIND_OUT, maxArraySize: maxArraySizeVal } - }, - function(err, result) { - should.not.exist(err); - should.strictEqual(result.outBinds.output.length, tableSize - affectFromId); - fun_verifyResult_out(result.outBinds.output, affectFromId); - cb(); } ); + const outVal = result.outBinds.output; + assert.strictEqual(outVal.length, tableSize - affectFromId); + for (let element of outVal) { + const index = outVal.indexOf(element) + affectFromId + 1; + assert.strictEqual(element, index); + } }; - var fun_verifyResult_out = function(result, affectFromId) { - async.forEach(result, function(element, cb) { - var index = result.indexOf(element); - fun_verifyEachRow_out(index, element, affectFromId); - cb(); - }, function(err) { - should.not.exist(err); - }); - }; - - var fun_verifyEachRow_out = function(index, element, affectFromId) { - should.strictEqual(element, index + 1 + affectFromId); - }; - - it("150.3.1 Bind OUT with oracledb.fetchArraySize = 1", function(done) { - var affectFromId = 0; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = 1; - fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("150.3.1 Bind OUT with oracledb.fetchArraySize = 1", async function() { + let affectFromId = 0; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = 1; + await fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("150.3.2 Bind OUT with oracledb.fetchArraySize = tableSize/20", function(done) { - var affectFromId = 0; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize / 20; - fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("150.3.2 Bind OUT with oracledb.fetchArraySize = tableSize/20", async function() { + let affectFromId = 0; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize / 20; + await fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("150.3.3 Bind OUT with oracledb.fetchArraySize = tableSize/10", function(done) { - var affectFromId = 0; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize / 10; - fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("150.3.3 Bind OUT with oracledb.fetchArraySize = tableSize/10", async function() { + let affectFromId = 0; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize / 10; + await fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("150.3.4 Bind OUT with oracledb.fetchArraySize = tableSize", function(done) { - var affectFromId = 0; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize; - fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("150.3.4 Bind OUT with oracledb.fetchArraySize = tableSize", async function() { + let affectFromId = 0; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize; + await fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("150.3.5 Bind OUT with oracledb.fetchArraySize = (table size - 1)", function(done) { - var affectFromId = 0; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize - 1; - fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("150.3.5 Bind OUT with oracledb.fetchArraySize = (table size - 1)", async function() { + let affectFromId = 0; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize - 1; + await fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("150.3.6 Bind IN OUT with oracledb.fetchArraySize = 1", function(done) { - var updateFromId = 20; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = 1; - fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("150.3.6 Bind IN OUT with oracledb.fetchArraySize = 1", async function() { + let updateFromId = 20; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = 1; + await fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("150.3.7 Bind IN OUT with oracledb.fetchArraySize = tableSize/20", function(done) { - var updateFromId = 0; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize / 20; - fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("150.3.7 Bind IN OUT with oracledb.fetchArraySize = tableSize/20", async function() { + let updateFromId = 0; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize / 20; + await fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("150.3.8 Bind IN OUT with oracledb.fetchArraySize = tableSize/10", function(done) { - var updateFromId = 0; - var maxArraySizeVal = tableSize * 2; - var fetchArraySizeVal = tableSize / 10; - fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("150.3.8 Bind IN OUT with oracledb.fetchArraySize = tableSize/10", async function() { + let updateFromId = 0; + let maxArraySizeVal = tableSize * 2; + let fetchArraySizeVal = tableSize / 10; + await fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("150.3.9 Bind IN OUT with oracledb.fetchArraySize = tableSize", function(done) { - var updateFromId = 0; - var maxArraySizeVal = tableSize * 2; - var fetchArraySizeVal = tableSize; - fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("150.3.9 Bind IN OUT with oracledb.fetchArraySize = tableSize", async function() { + let updateFromId = 0; + let maxArraySizeVal = tableSize * 2; + let fetchArraySizeVal = tableSize; + await fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("150.3.10 Bind IN OUT with oracledb.fetchArraySize = (table size - 1)", function(done) { - var updateFromId = 0; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize - 1; - fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("150.3.10 Bind IN OUT with oracledb.fetchArraySize = (table size - 1)", async function() { + let updateFromId = 0; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize - 1; + await fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); }); diff --git a/test/fetchArraySize4.js b/test/fetchArraySize4.js index 17f9033e..1d1e64b7 100644 --- a/test/fetchArraySize4.js +++ b/test/fetchArraySize4.js @@ -36,435 +36,358 @@ 'use strict'; const oracledb = require('oracledb'); -const should = require('should'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); describe("151. fetchArraySize4.js", function() { let connection = null; - var default_fetcArraySize = oracledb.fetchArraySize; - var default_maxRows = oracledb.maxRows; - var tableName = "nodb_fetchArraySize_151"; - var tableSize = 1000; + let default_fetcArraySize = oracledb.fetchArraySize; + let default_maxRows = oracledb.maxRows; + const tableName = "nodb_fetchArraySize_151"; + let tableSize = 1000; - let create_table = "BEGIN \n" + - " DECLARE \n" + - " e_table_missing EXCEPTION; \n" + - " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + - " BEGIN \n" + - " EXECUTE IMMEDIATE('DROP TABLE " + tableName + " PURGE'); \n" + - " EXCEPTION \n" + - " WHEN e_table_missing \n" + - " THEN NULL; \n" + - " END; \n" + - " EXECUTE IMMEDIATE (' \n" + - " CREATE TABLE " + tableName + " ( \n" + - " id NUMBER, \n" + - " content VARCHAR(2000) \n" + - " ) \n" + - " '); \n" + - " FOR i IN 1.." + tableSize + " LOOP \n" + - " EXECUTE IMMEDIATE (' \n" + - " insert into " + tableName + " values (' || i || ',' || to_char(i) ||') \n" + - " '); \n" + - " END LOOP; \n" + - " commit; \n" + - "END; "; + const create_table = "BEGIN \n" + + " DECLARE \n" + + " e_table_missing EXCEPTION; \n" + + " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + + " BEGIN \n" + + " EXECUTE IMMEDIATE('DROP TABLE " + tableName + " PURGE'); \n" + + " EXCEPTION \n" + + " WHEN e_table_missing \n" + + " THEN NULL; \n" + + " END; \n" + + " EXECUTE IMMEDIATE (' \n" + + " CREATE TABLE " + tableName + " ( \n" + + " id NUMBER, \n" + + " content VARCHAR(2000) \n" + + " ) \n" + + " '); \n" + + " FOR i IN 1.." + tableSize + " LOOP \n" + + " EXECUTE IMMEDIATE (' \n" + + " insert into " + tableName + " values (' || i || ',' || to_char(i) ||') \n" + + " '); \n" + + " END LOOP; \n" + + " commit; \n" + + "END; "; let drop_table = "DROP TABLE " + tableName + " PURGE"; - before(function(done) { - oracledb.getConnection(dbConfig, function(err, conn) { - should.strictEqual(default_fetcArraySize, 100); - should.strictEqual(default_maxRows, 0); - should.not.exist(err); - connection = conn; - done(); - }); + before(async function() { + connection = await oracledb.getConnection(dbConfig); + assert.strictEqual(default_fetcArraySize, 100); + assert.strictEqual(default_maxRows, 0); }); - after(function(done) { - connection.close(function(err) { - should.not.exist(err); - done(); - }); + after(async function() { + await connection.close(); }); describe("151.1 getRows() of resultSet = true", function() { - before(function(done) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - done() ; - } - ); + before(async function() { + await connection.execute(create_table); }); - after(function(done) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + after(async function() { + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.fetchArraySize = default_fetcArraySize; oracledb.maxRows = default_maxRows; - done(); }); - var testGetRow = function(fetchArraySizeVal, numRowsVal, cb) { + const testGetRow = async function(fetchArraySizeVal, numRowsVal) { oracledb.fetchArraySize = fetchArraySizeVal; - connection.execute( + let result = await connection.execute( "select * from " + tableName + " order by id", [], - { resultSet: true }, - function(err, result) { - should.not.exist(err); - var rowCount = 0; - fetchRowsFromRS(result.resultSet, numRowsVal, rowCount, cb); - } + { resultSet: true } ); + let rowCount = 0; + fetchRowsFromRS(result.resultSet, numRowsVal, rowCount); }; - function fetchRowsFromRS(rs, numRowsVal, rowCount, cb) { - rs.getRows(numRowsVal, function(err, rows) { - (rows.length).should.be.belowOrEqual(numRowsVal); - if (rows.length > 0) { - for (var i = 0; i < rows.length; i++) { - rowCount = rowCount + 1; - should.strictEqual(rows[i][0], rowCount); - should.strictEqual(rows[i][1], rowCount.toString()); - } - return fetchRowsFromRS(rs, numRowsVal, rowCount, cb); - } else { - should.strictEqual(rowCount, tableSize); - rs.close(function(err) { - should.not.exist(err); - cb(); - }); + async function fetchRowsFromRS(rs, numRowsVal, rowCount) { + let rows = await rs.getRows(numRowsVal); + assert(rows.length <= numRowsVal); + if (rows.length > 0) { + for (let i = 0; i < rows.length; i++) { + rowCount++; + assert.strictEqual(rows[i][0], rowCount); + assert.strictEqual(rows[i][1], rowCount.toString()); } - }); + return fetchRowsFromRS(rs, numRowsVal, rowCount); + } else { + assert.strictEqual(rowCount, tableSize); + await rs.close(); + } } - it("151.1.1 numRows > table size > oracledb.fetchArraySize", function(done) { - var fetchArraySizeVal = tableSize - 1; - var numRowsVal = tableSize + 1; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("151.1.1 numRows > table size > oracledb.fetchArraySize", async function() { + let fetchArraySizeVal = tableSize - 1; + let numRowsVal = tableSize + 1; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("151.1.2 numRows > oracledb.fetchArraySize > table size", function(done) { - var fetchArraySizeVal = tableSize + 1200; - var numRowsVal = tableSize + 10000; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("151.1.2 numRows > oracledb.fetchArraySize > table size", async function() { + let fetchArraySizeVal = tableSize + 1200; + let numRowsVal = tableSize + 10000; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("151.1.3 table size > numRows > oracledb.fetchArraySize", function(done) { - var fetchArraySizeVal = tableSize - 11; - var numRowsVal = tableSize - 2; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("151.1.3 table size > numRows > oracledb.fetchArraySize", async function() { + let fetchArraySizeVal = tableSize - 11; + let numRowsVal = tableSize - 2; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("151.1.4 table size > oracledb.fetchArraySize > maxRow", function(done) { - var fetchArraySizeVal = tableSize - 90; - var numRowsVal = tableSize - 150; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("151.1.4 table size > oracledb.fetchArraySize > maxRow", async function() { + let fetchArraySizeVal = tableSize - 90; + let numRowsVal = tableSize - 150; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("151.1.5 numRows = oracledb.fetchArraySize < table size", function(done) { - var fetchArraySizeVal = tableSize - 110; - var numRowsVal = tableSize - 110; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("151.1.5 numRows = oracledb.fetchArraySize < table size", async function() { + let fetchArraySizeVal = tableSize - 110; + let numRowsVal = tableSize - 110; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("151.1.6 numRows = oracledb.fetchArraySize = table size", function(done) { - var fetchArraySizeVal = tableSize; - var numRowsVal = tableSize; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("151.1.6 numRows = oracledb.fetchArraySize = table size", async function() { + let fetchArraySizeVal = tableSize; + let numRowsVal = tableSize; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("151.1.7 numRows = oracledb.fetchArraySize > table size", function(done) { - var fetchArraySizeVal = tableSize + 9999; - var numRowsVal = tableSize + 9999; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("151.1.7 numRows = oracledb.fetchArraySize > table size", async function() { + let fetchArraySizeVal = tableSize + 9999; + let numRowsVal = tableSize + 9999; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("151.1.8 numRows = oracledb.fetchArraySize/10", function(done) { - var fetchArraySizeVal = tableSize / 10 + 1; - var numRowsVal = tableSize / 10; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("151.1.8 numRows = oracledb.fetchArraySize/10", async function() { + let fetchArraySizeVal = tableSize / 10 + 1; + let numRowsVal = tableSize / 10; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("151.1.9 numRows = 10 * oracledb.fetchArraySize", function(done) { - var fetchArraySizeVal = 90; - var numRowsVal = 900; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("151.1.9 numRows = 10 * oracledb.fetchArraySize", async function() { + let fetchArraySizeVal = 90; + let numRowsVal = 900; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("151.1.10 numRows > fetchArraySize, fetchArraySize = (table size)/10", function(done) { - var fetchArraySizeVal = tableSize / 10; - var numRowsVal = tableSize / 10 + 1; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("151.1.10 numRows > fetchArraySize, fetchArraySize = (table size)/10", async function() { + let fetchArraySizeVal = tableSize / 10; + let numRowsVal = tableSize / 10 + 1; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("151.1.11 numRows = (table size - 1), fetchArraySize = table size", function(done) { - var fetchArraySizeVal = tableSize; - var numRowsVal = tableSize - 1; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("151.1.11 numRows = (table size - 1), fetchArraySize = table size", async function() { + let fetchArraySizeVal = tableSize; + let numRowsVal = tableSize - 1; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("151.1.12 fetchArraySize = (table size - 1), numRows = table size", function(done) { - var fetchArraySizeVal = tableSize - 1; - var numRowsVal = tableSize; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("151.1.12 fetchArraySize = (table size - 1), numRows = table size", async function() { + let fetchArraySizeVal = tableSize - 1; + let numRowsVal = tableSize; + await testGetRow(fetchArraySizeVal, numRowsVal); }); }); describe("151.2 getRow() of resultSet = true", function() { - before(function(done) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - done() ; - } - ); + before(async function() { + await connection.execute(create_table); }); - after(function(done) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + after(async function() { + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.fetchArraySize = default_fetcArraySize; oracledb.maxRows = default_maxRows; - done(); }); - var testGetRows = function(fetchArraySize, cb) { + const testGetRows = async function(fetchArraySize) { oracledb.fetchArraySize = fetchArraySize; - connection.execute( + let result = await connection.execute( "select * from " + tableName + " order by id", [], - { resultSet: true }, - function(err, result) { - should.not.exist(err); - // should.strictEqual(result.rows.length, default_maxRows); - var rowCount = 0; - fetchRowFromRS(result.resultSet, rowCount, cb); - } + { resultSet: true } ); + let rowCount = 0; + await fetchRowFromRS(result.resultSet, rowCount); }; - function fetchRowFromRS(rs, rowCount, cb) { - rs.getRow(function(err, row) { - if (row) { - rowCount = rowCount + 1; - // console.log(rows[i][0]); - should.strictEqual(row[0], rowCount); - should.strictEqual(row[1], rowCount.toString()); - return fetchRowFromRS(rs, rowCount, cb); - } else { - should.strictEqual(rowCount, tableSize); - rs.close(function(err) { - should.not.exist(err); - cb(); - }); - } - }); + async function fetchRowFromRS(rs, rowCount) { + let row = await rs.getRow(); + if (row) { + rowCount++; + assert.strictEqual(row[0], rowCount); + assert.strictEqual(row[1], rowCount.toString()); + return await fetchRowFromRS(rs, rowCount); + } else { + assert.strictEqual(rowCount, tableSize); + await rs.close(); + } } - it("151.2.1 oracledb.fetchArraySize = 1", function(done) { - testGetRows(1, done); + it("151.2.1 oracledb.fetchArraySize = 1", async function() { + await testGetRows(1); }); - it("151.2.2 oracledb.fetchArraySize = tableSize/50", function(done) { - testGetRows(tableSize / 50, done); + it("151.2.2 oracledb.fetchArraySize = tableSize/50", async function() { + await testGetRows(tableSize / 50); }); - it("151.2.3 oracledb.fetchArraySize = tableSize/20", function(done) { - testGetRows(tableSize / 20, done); + it("151.2.3 oracledb.fetchArraySize = tableSize/20", async function() { + await testGetRows(tableSize / 20); }); - it("151.2.4 oracledb.fetchArraySize = tableSize/10", function(done) { - testGetRows(tableSize / 10, done); + it("151.2.4 oracledb.fetchArraySize = tableSize/10", async function() { + await testGetRows(tableSize / 10); }); - it("151.2.5 oracledb.fetchArraySize = tableSize/5", function(done) { - testGetRows(tableSize / 5, done); + it("151.2.5 oracledb.fetchArraySize = tableSize/5", async function() { + await testGetRows(tableSize / 5); }); - it("151.2.6 oracledb.fetchArraySize = tableSize", function(done) { - testGetRows(tableSize, done); + it("151.2.6 oracledb.fetchArraySize = tableSize", async function() { + await testGetRows(tableSize); }); - it("151.2.7 oracledb.fetchArraySize = (tableSize - 1)", function(done) { - testGetRows(tableSize - 1, done); + it("151.2.7 oracledb.fetchArraySize = (tableSize - 1)", async function() { + await testGetRows(tableSize - 1); }); }); describe("151.3 interleaved calls to getRow() and getRows()", function() { - var numRowsVal_1, numRowsVal_2; + let numRowsVal_1, numRowsVal_2; - before(function(done) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - done() ; - } - ); + before(async function() { + await connection.execute(create_table); }); - after(function(done) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + after(async function() { + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.fetchArraySize = default_fetcArraySize; oracledb.maxRows = default_maxRows; - done(); }); - var testRS = function(fetchArraySizeVal, cb) { + const testRS = async function(fetchArraySizeVal) { oracledb.fetchArraySize = fetchArraySizeVal; - connection.execute( + let result = await connection.execute( "select * from " + tableName + " order by id", [], - { resultSet: true }, - function(err, result) { - should.not.exist(err); - var rowCount = 0; - fetchRowFromRS(result.resultSet, rowCount, cb); - } + { resultSet: true } ); + let rowCount = 0; + await fetchRowFromRS(result.resultSet, rowCount); }; - function fetchRowFromRS(rs, rowCount, cb) { - rs.getRow(function(err, row) { - if (row) { - rowCount = rowCount + 1; - should.strictEqual(row[0], rowCount); - should.strictEqual(row[1], rowCount.toString()); - return fetchRowsFromRS_1(rs, rowCount, cb); - } else { - should.strictEqual(rowCount, tableSize); - rs.close(function(err) { - should.not.exist(err); - cb(); - }); - } - }); + async function fetchRowFromRS(rs, rowCount) { + let row = await rs.getRow(); + if (row) { + rowCount = rowCount + 1; + assert.strictEqual(row[0], rowCount); + assert.strictEqual(row[1], rowCount.toString()); + return await fetchRowsFromRS_1(rs, rowCount); + } else { + assert.strictEqual(rowCount, tableSize); + await rs.close(); + } } - function fetchRowsFromRS_1(rs, rowCount, cb) { - rs.getRows(numRowsVal_1, function(err, rows) { - (rows.length).should.be.belowOrEqual(numRowsVal_1); - if (rows.length > 0) { - for (var i = 0; i < rows.length; i++) { - rowCount = rowCount + 1; - should.strictEqual(rows[i][0], rowCount); - should.strictEqual(rows[i][1], rowCount.toString()); - } - return fetchRowsFromRS_2(rs, rowCount, cb); - } else { - should.strictEqual(rowCount, tableSize); - rs.close(function(err) { - should.not.exist(err); - cb(); - }); + async function fetchRowsFromRS_1(rs, rowCount) { + let rows = await rs.getRows(numRowsVal_1); + assert(rows.length <= numRowsVal_1); + if (rows.length > 0) { + for (let i = 0; i < rows.length; i++) { + rowCount++; + assert.strictEqual(rows[i][0], rowCount); + assert.strictEqual(rows[i][1], rowCount.toString()); } - }); + return await fetchRowsFromRS_2(rs, rowCount); + } else { + assert.strictEqual(rowCount, tableSize); + await rs.close(); + } } - function fetchRowsFromRS_2(rs, rowCount, cb) { - rs.getRows(numRowsVal_2, function(err, rows) { - (rows.length).should.be.belowOrEqual(numRowsVal_2); - if (rows.length > 0) { - for (var i = 0; i < rows.length; i++) { - rowCount = rowCount + 1; - should.strictEqual(rows[i][0], rowCount); - should.strictEqual(rows[i][1], rowCount.toString()); - } - return fetchRowFromRS(rs, rowCount, cb); - } else { - should.strictEqual(rowCount, tableSize); - rs.close(function(err) { - should.not.exist(err); - cb(); - }); + async function fetchRowsFromRS_2(rs, rowCount) { + let rows = await rs.getRows(numRowsVal_2); + assert(rows.length <= numRowsVal_2); + if (rows.length > 0) { + for (let i = 0; i < rows.length; i++) { + rowCount++; + assert.strictEqual(rows[i][0], rowCount); + assert.strictEqual(rows[i][1], rowCount.toString()); } - }); + return await fetchRowFromRS(rs, rowCount); + } else { + assert.strictEqual(rowCount, tableSize); + await rs.close(); + } } - it("151.3.1 oracledb.fetchArraySize = 1", function(done) { - var fetchArraySizeVal = 1; + it("151.3.1 oracledb.fetchArraySize = 1", async function() { + let fetchArraySizeVal = 1; numRowsVal_1 = 2; numRowsVal_2 = 10; - testRS(fetchArraySizeVal, done); + await testRS(fetchArraySizeVal); }); - it("151.3.2 oracledb.fetchArraySize = tableSize/50", function(done) { - var fetchArraySizeVal = tableSize / 50; + it("151.3.2 oracledb.fetchArraySize = tableSize/50", async function() { + let fetchArraySizeVal = tableSize / 50; numRowsVal_1 = 5; numRowsVal_2 = 88; - testRS(fetchArraySizeVal, done); + await testRS(fetchArraySizeVal); }); - it("151.3.3 oracledb.fetchArraySize = tableSize/20", function(done) { - var fetchArraySizeVal = tableSize / 20; + it("151.3.3 oracledb.fetchArraySize = tableSize/20", async function() { + let fetchArraySizeVal = tableSize / 20; numRowsVal_1 = 50; numRowsVal_2 = 100; - testRS(fetchArraySizeVal, done); + await testRS(fetchArraySizeVal); }); - it("151.3.4 oracledb.fetchArraySize = tableSize/10", function(done) { - var fetchArraySizeVal = tableSize / 10; + it("151.3.4 oracledb.fetchArraySize = tableSize/10", async function() { + let fetchArraySizeVal = tableSize / 10; numRowsVal_1 = 30; numRowsVal_2 = 99; - testRS(fetchArraySizeVal, done); + await testRS(fetchArraySizeVal); }); - it("151.3.5 oracledb.fetchArraySize = tableSize/5", function(done) { - var fetchArraySizeVal = tableSize / 5; + it("151.3.5 oracledb.fetchArraySize = tableSize/5", async function() { + let fetchArraySizeVal = tableSize / 5; numRowsVal_1 = 5; numRowsVal_2 = 88; - testRS(fetchArraySizeVal, done); + await testRS(fetchArraySizeVal); }); - it("151.3.6 oracledb.fetchArraySize = tableSize", function(done) { - var fetchArraySizeVal = tableSize; + it("151.3.6 oracledb.fetchArraySize = tableSize", async function() { + let fetchArraySizeVal = tableSize; numRowsVal_1 = 15; numRowsVal_2 = tableSize; - testRS(fetchArraySizeVal, done); + await testRS(fetchArraySizeVal); }); - it("151.3.6 oracledb.fetchArraySize = (tableSize - 1)", function(done) { - var fetchArraySizeVal = tableSize - 1; + it("151.3.6 oracledb.fetchArraySize = (tableSize - 1)", async function() { + let fetchArraySizeVal = tableSize - 1; numRowsVal_1 = tableSize - 1; numRowsVal_2 = tableSize; - testRS(fetchArraySizeVal, done); + await testRS(fetchArraySizeVal); }); }); diff --git a/test/fetchArraySize5.js b/test/fetchArraySize5.js index 6287864c..960bfd53 100644 --- a/test/fetchArraySize5.js +++ b/test/fetchArraySize5.js @@ -39,16 +39,15 @@ 'use strict'; const oracledb = require('oracledb'); -const should = require('should'); -const async = require('async'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); describe("152. fetchArraySize5.js", function() { let connection = null; - var default_maxRows = oracledb.maxRows; - var tableName = "nodb_fetchArraySize_152"; - var tableSize = 1000; + let default_maxRows = oracledb.maxRows; + const tableName = "nodb_fetchArraySize_152"; + let tableSize = 1000; const create_table = "BEGIN \n" + " DECLARE \n" + @@ -76,493 +75,397 @@ describe("152. fetchArraySize5.js", function() { const drop_table = "DROP TABLE " + tableName + " PURGE"; - before(function(done) { - oracledb.getConnection(dbConfig, function(err, conn) { - should.strictEqual(default_maxRows, 0); - should.not.exist(err); - connection = conn; - done(); - }); + before(async function() { + connection = await oracledb.getConnection(dbConfig); + assert.strictEqual(default_maxRows, 0); }); - after(function(done) { - connection.close(function(err) { - should.not.exist(err); - done(); - }); + after(async function() { + await connection.close(); }); describe("152.1 basic fetch with different maxRows and fetchArraySize", function() { - before(function(done) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - done() ; - } - ); + before(async function() { + await connection.execute(create_table); }); - after(function(done) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + after(async function() { + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.maxRows = default_maxRows; - done(); }); - var basicFetch = function(fetchArraySizeVal, maxRowsVal, affectedID, cb) { + const basicFetch = async function(fetchArraySizeVal, maxRowsVal, affectedID) { oracledb.maxRows = maxRowsVal; - connection.execute( + const result = await connection.execute( "select * from " + tableName + " where id > " + affectedID + " order by id", [], { fetchArraySize: fetchArraySizeVal - }, - function(err, result) { - should.not.exist(err); - var resultLenExpected = maxRowsVal > (tableSize - affectedID) ? (tableSize - affectedID) : maxRowsVal; - if (maxRowsVal === 0) resultLenExpected = tableSize - affectedID; - should.strictEqual(result.rows.length, resultLenExpected); - verifyResult(result.rows, affectedID, cb); } ); + let resultLenExpected = maxRowsVal > (tableSize - affectedID) ? (tableSize - affectedID) : maxRowsVal; + if (maxRowsVal === 0) resultLenExpected = tableSize - affectedID; + const rows = result.rows; + assert.strictEqual(rows.length, resultLenExpected); + for (let element of rows) { + const index = rows.indexOf(element) + affectedID + 1; + assert.strictEqual(element[1], String(index)); + assert.strictEqual(element[0], index); + } }; - var verifyResult = function(result, affectedID, callback) { - async.forEach(result, function(element, cb) { - var index = result.indexOf(element); - verifyEachRow(index + 1 + affectedID, element); - cb(); - }, function(err) { - should.not.exist(err); - callback(); - }); - }; - - var verifyEachRow = function(index, element) { - should.strictEqual(element[1], String(index)); - should.strictEqual(element[0], index); - }; - - it("152.1.1 maxRows > table size > fetchArraySize", function(done) { - var fetchArraySizeVal = tableSize - 50; - var maxRowsVal = tableSize + 10000; - var affectedID = 20; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.1.1 maxRows > table size > fetchArraySize", async function() { + let fetchArraySizeVal = tableSize - 50; + let maxRowsVal = tableSize + 10000; + let affectedID = 20; + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.1.2 maxRows > fetchArraySize > table size", function(done) { - var fetchArraySizeVal = tableSize + 1001; - var maxRowsVal = tableSize + 10000; - var affectedID = 20; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.1.2 maxRows > fetchArraySize > table size", async function() { + let fetchArraySizeVal = tableSize + 1001; + let maxRowsVal = tableSize + 10000; + let affectedID = 20; + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.1.3 table size > maxRows > fetchArraySize", function(done) { - var fetchArraySizeVal = tableSize - 11; - var maxRowsVal = tableSize - 2; - var affectedID = 0; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.1.3 table size > maxRows > fetchArraySize", async function() { + let fetchArraySizeVal = tableSize - 11; + let maxRowsVal = tableSize - 2; + let affectedID = 0; + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.1.4 table size > fetchArraySize > maxRow", function(done) { - var fetchArraySizeVal = tableSize - 90; - var maxRowsVal = tableSize - 150; - var affectedID = 50; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.1.4 table size > fetchArraySize > maxRow", async function() { + let fetchArraySizeVal = tableSize - 90; + let maxRowsVal = tableSize - 150; + let affectedID = 50; + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.1.5 maxRows = fetchArraySize < table size", function(done) { - var fetchArraySizeVal = tableSize - 110; - var maxRowsVal = tableSize - 110; - var affectedID = 20; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.1.5 maxRows = fetchArraySize < table size", async function() { + let fetchArraySizeVal = tableSize - 110; + let maxRowsVal = tableSize - 110; + let affectedID = 20; + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.1.6 maxRows = fetchArraySize = table size", function(done) { - var fetchArraySizeVal = tableSize; - var maxRowsVal = tableSize; - var affectedID = 0; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.1.6 maxRows = fetchArraySize = table size", async function() { + let fetchArraySizeVal = tableSize; + let maxRowsVal = tableSize; + let affectedID = 0; + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.1.7 maxRows = fetchArraySize > table size", function(done) { - var fetchArraySizeVal = tableSize + 9999; - var maxRowsVal = tableSize + 9999; - var affectedID = 10; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.1.7 maxRows = fetchArraySize > table size", async function() { + let fetchArraySizeVal = tableSize + 9999; + let maxRowsVal = tableSize + 9999; + let affectedID = 10; + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.1.8 maxRows = fetchArraySize/10", function(done) { - var fetchArraySizeVal = tableSize / 10 + 1; - var maxRowsVal = tableSize / 10; - var affectedID = 7; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.1.8 maxRows = fetchArraySize/10", async function() { + let fetchArraySizeVal = tableSize / 10 + 1; + let maxRowsVal = tableSize / 10; + let affectedID = 7; + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.1.9 maxRows = 10 * fetchArraySize", function(done) { - var fetchArraySizeVal = 90; - var maxRowsVal = 900; - var affectedID = 50; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.1.9 maxRows = 10 * fetchArraySize", async function() { + let fetchArraySizeVal = 90; + let maxRowsVal = 900; + let affectedID = 50; + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.1.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", function(done) { - var fetchArraySizeVal = tableSize / 10; - var maxRowsVal = tableSize / 10 + 1; - var affectedID = 50; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.1.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", async function() { + let fetchArraySizeVal = tableSize / 10; + let maxRowsVal = tableSize / 10 + 1; + let affectedID = 50; + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.1.11 maxRows = 0, fetchArraySize = table size ", function(done) { - var fetchArraySizeVal = tableSize; - var maxRowsVal = 0; - var affectedID = 0; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.1.11 maxRows = 0, fetchArraySize = table size ", async function() { + let fetchArraySizeVal = tableSize; + let maxRowsVal = 0; + let affectedID = 0; + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.1.12 maxRows = (table size - 1), fetchArraySize = table size ", function(done) { - var fetchArraySizeVal = tableSize; - var maxRowsVal = tableSize - 1; - var affectedID = 0; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.1.12 maxRows = (table size - 1), fetchArraySize = table size ", async function() { + let fetchArraySizeVal = tableSize; + let maxRowsVal = tableSize - 1; + let affectedID = 0; + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.1.13 fetchArraySize = (table size - 1), maxRows = table size ", function(done) { - var fetchArraySizeVal = 999; - var maxRowsVal = 1000; - var affectedID = 0; - basicFetch(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.1.13 fetchArraySize = (table size - 1), maxRows = table size ", async function() { + let fetchArraySizeVal = 999; + let maxRowsVal = 1000; + let affectedID = 0; + await basicFetch(fetchArraySizeVal, maxRowsVal, affectedID); }); }); describe("152.2 REF CURSORS with different numRows and fetchArraySize", function() { - before(function(done) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - done() ; - } - ); + before(async function() { + await connection.execute(create_table); }); - after(function(done) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + after(async function() { + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.maxRows = default_maxRows; - done(); }); - var testRefCursor = function(fetchArraySizeVal, numRowsVal, cb) { - var create_ref = "CREATE OR REPLACE PROCEDURE testrefproc (p_out OUT SYS_REFCURSOR) " + - "AS " + - "BEGIN " + - " OPEN p_out FOR " + - " SELECT * FROM " + tableName + " order by id;" + - "END; "; - var drop_ref = "drop procedure testrefproc"; - var exec_ref = "BEGIN testrefproc(:o); END;"; + const testRefCursor = async function(fetchArraySizeVal, numRowsVal) { + const create_ref = "CREATE OR REPLACE PROCEDURE testrefproc (p_out OUT SYS_REFCURSOR) " + + "AS " + + "BEGIN " + + " OPEN p_out FOR " + + " SELECT * FROM " + tableName + " order by id;" + + "END; "; + const drop_ref = "drop procedure testrefproc"; + const exec_ref = "BEGIN testrefproc(:o); END;"; - async.series([ - function(callback) { - connection.execute( - create_ref, - function(err) { - should.not.exist(err); - callback(); - } - ); - }, - function(callback) { - connection.execute( - exec_ref, - [ - { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } - ], - { - outFormat: oracledb.OUT_FORMAT_OBJECT, - fetchArraySize: fetchArraySizeVal - }, - function(err, result) { - should.not.exist(err); - var rowCount = 0; - fetchRowsFromRS(result.outBinds[0], numRowsVal, rowCount, callback); - } - ); - }, - function(callback) { - connection.execute( - drop_ref, - function(err) { - should.not.exist(err); - callback(); - } - ); + await connection.execute(create_ref); + + let result = await connection.execute( + exec_ref, + [ + { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } + ], + { + outFormat: oracledb.OUT_FORMAT_OBJECT, + fetchArraySize: fetchArraySizeVal } - ], cb); + ); + let rowCount = 0; + await fetchRowsFromRS(result.outBinds[0], numRowsVal, rowCount); + + await connection.execute(drop_ref); }; - function fetchRowsFromRS(rs, numRowsVal, rowCount, cb) { - rs.getRows(numRowsVal, function(err, rows) { - if (rows.length > 0) { - for (var i = 0; i < rows.length; i++) { - (rows.length).should.be.belowOrEqual(numRowsVal); - rowCount = rowCount + 1; - // console.log(rows[i][0]); - should.strictEqual(rows[i].ID, rowCount); - should.strictEqual(rows[i].CONTENT, rowCount.toString()); - } - return fetchRowsFromRS(rs, numRowsVal, rowCount, cb); - } else { - should.strictEqual(rowCount, tableSize); - rs.close(function(err) { - should.not.exist(err); - cb(); - }); + async function fetchRowsFromRS(rs, numRowsVal, rowCount) { + let rows = await rs.getRows(numRowsVal); + if (rows.length > 0) { + for (let i = 0; i < rows.length; i++) { + assert(rows.length, numRowsVal); + rowCount++; + // console.log(rows[i][0]); + assert.strictEqual(rows[i].ID, rowCount); + assert.strictEqual(rows[i].CONTENT, rowCount.toString()); } - }); + return await fetchRowsFromRS(rs, numRowsVal, rowCount); + } else { + assert.strictEqual(rowCount, tableSize); + await rs.close(); + } } - it("152.2.1 numRows > table size > fetchArraySize", function(done) { - var fetchArraySizeVal = tableSize - 50; - var numRowsVal = tableSize + 10000; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + it("152.2.1 numRows > table size > fetchArraySize", async function() { + let fetchArraySizeVal = tableSize - 50; + let numRowsVal = tableSize + 10000; + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("152.2.2 numRows > fetchArraySize > table size", function(done) { - var fetchArraySizeVal = tableSize + 1200; - var numRowsVal = tableSize + 10000; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + it("152.2.2 numRows > fetchArraySize > table size", async function() { + let fetchArraySizeVal = tableSize + 1200; + let numRowsVal = tableSize + 10000; + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("152.2.3 table size > numRows > fetchArraySize", function(done) { - var fetchArraySizeVal = tableSize - 21; - var numRowsVal = tableSize - 2; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + it("152.2.3 table size > numRows > fetchArraySize", async function() { + let fetchArraySizeVal = tableSize - 21; + let numRowsVal = tableSize - 2; + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("152.2.4 table size > fetchArraySize > maxRow", function(done) { - var fetchArraySizeVal = tableSize - 90; - var numRowsVal = tableSize - 150; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + it("152.2.4 table size > fetchArraySize > maxRow", async function() { + let fetchArraySizeVal = tableSize - 90; + let numRowsVal = tableSize - 150; + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("152.2.5 numRows = fetchArraySize < table size", function(done) { - var fetchArraySizeVal = tableSize - 110; - var numRowsVal = tableSize - 110; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + it("152.2.5 numRows = fetchArraySize < table size", async function() { + let fetchArraySizeVal = tableSize - 110; + let numRowsVal = tableSize - 110; + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("152.2.6 numRows = fetchArraySize = table size", function(done) { - var fetchArraySizeVal = tableSize; - var numRowsVal = tableSize; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + it("152.2.6 numRows = fetchArraySize = table size", async function() { + let fetchArraySizeVal = tableSize; + let numRowsVal = tableSize; + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("152.2.7 numRows = fetchArraySize > table size", function(done) { - var fetchArraySizeVal = tableSize + 9999; - var numRowsVal = tableSize + 9999; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + it("152.2.7 numRows = fetchArraySize > table size", async function() { + let fetchArraySizeVal = tableSize + 9999; + let numRowsVal = tableSize + 9999; + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("152.2.8 numRows = fetchArraySize/10", function(done) { - var fetchArraySizeVal = tableSize / 10 + 1; - var numRowsVal = tableSize / 10; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + it("152.2.8 numRows = fetchArraySize/10", async function() { + let fetchArraySizeVal = tableSize / 10 + 1; + let numRowsVal = tableSize / 10; + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("152.2.9 numRows = 10 * fetchArraySize", function(done) { - var fetchArraySizeVal = 90; - var numRowsVal = 900; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + it("152.2.9 numRows = 10 * fetchArraySize", async function() { + let fetchArraySizeVal = 90; + let numRowsVal = 900; + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("152.2.10 numRows > fetchArraySize, fetchArraySize = (table size)/10", function(done) { - var fetchArraySizeVal = tableSize / 10; - var numRowsVal = tableSize / 10 + 1; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + it("152.2.10 numRows > fetchArraySize, fetchArraySize = (table size)/10", async function() { + let fetchArraySizeVal = tableSize / 10; + let numRowsVal = tableSize / 10 + 1; + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("152.2.11 numRows = (table size - 1), fetchArraySize = table size", function(done) { - var fetchArraySizeVal = tableSize; - var numRowsVal = tableSize - 1; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + it("152.2.11 numRows = (table size - 1), fetchArraySize = table size", async function() { + let fetchArraySizeVal = tableSize; + let numRowsVal = tableSize - 1; + await testRefCursor(fetchArraySizeVal, numRowsVal); }); - it("152.2.12 fetchArraySize = (table size - 1), numRows = table size", function(done) { - var fetchArraySizeVal = tableSize - 1; - var numRowsVal = tableSize; - testRefCursor(fetchArraySizeVal, numRowsVal, done); + it("152.2.12 fetchArraySize = (table size - 1), numRows = table size", async function() { + let fetchArraySizeVal = tableSize - 1; + let numRowsVal = tableSize; + await testRefCursor(fetchArraySizeVal, numRowsVal); }); }); describe("152.3 queryStream() with different maxRows and fetchArraySize", function() { - before(function(done) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - done() ; - } - ); + before(async function() { + await connection.execute(create_table); }); - after(function(done) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + after(async function() { + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.maxRows = default_maxRows; - done(); }); - var testQueryStream = function(fetchArraySizeVal, maxRowsVal, affectedID, cb) { + const testQueryStream = async function(fetchArraySizeVal, maxRowsVal, affectedID) { oracledb.maxRows = maxRowsVal; - var resultLenExpected = tableSize - affectedID; - var querySql = "select * from " + tableName + " where id > " + affectedID + " order by id"; - var stream = connection.queryStream(querySql, [], {fetchArraySize: fetchArraySizeVal}); - - stream.on('error', function(error) { - should.fail(error, null, 'Error event should not be triggered'); - }); - - var counter = 0; - stream.on('data', function(data) { - should.exist(data); - counter = counter + 1; - verifyResult(data, counter, affectedID); - }); - - stream.on('end', function() { - should.equal(counter, resultLenExpected); - stream.destroy(); - }); - - stream.on('close', function() { - cb(); + let resultLenExpected = tableSize - affectedID; + let querySql = "select * from " + tableName + " where id > " + affectedID + " order by id"; + let stream = connection.queryStream(querySql, [], {fetchArraySize: fetchArraySizeVal}); + let counter = 0; + await new Promise((resolve, reject) => { + stream.on('error', reject); + stream.on('data', function(data) { + counter++; + assert.strictEqual(data[0], counter + affectedID); + assert.strictEqual(data[1], String(counter + affectedID)); + }); + stream.on('end', function() { + assert.strictEqual(counter, resultLenExpected); + stream.destroy(); + }); + stream.on('close', resolve); }); }; - var verifyResult = function(data, counter, affectedID) { - should.strictEqual(data[0], counter + affectedID); - should.strictEqual(data[1], String(counter + affectedID)); - }; - - it("152.3.1 maxRows > table size > fetchArraySize", function(done) { - var fetchArraySizeVal = tableSize - 50; - var maxRowsVal = tableSize + 10000; - var affectedID = 20; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.3.1 maxRows > table size > fetchArraySize", async function() { + let fetchArraySizeVal = tableSize - 50; + let maxRowsVal = tableSize + 10000; + let affectedID = 20; + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.3.2 maxRows > fetchArraySize > table size", function(done) { - var fetchArraySizeVal = tableSize + 1001; - var maxRowsVal = tableSize + 10000; - var affectedID = 20; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.3.2 maxRows > fetchArraySize > table size", async function() { + let fetchArraySizeVal = tableSize + 1001; + let maxRowsVal = tableSize + 10000; + let affectedID = 20; + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.3.3 table size > maxRows > fetchArraySize", function(done) { - var fetchArraySizeVal = tableSize - 31; - var maxRowsVal = tableSize - 2; - var affectedID = 10; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.3.3 table size > maxRows > fetchArraySize", async function() { + let fetchArraySizeVal = tableSize - 31; + let maxRowsVal = tableSize - 2; + let affectedID = 10; + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.3.4 table size > fetchArraySize > maxRow", function(done) { - var fetchArraySizeVal = tableSize - 90; - var maxRowsVal = tableSize - 150; - var affectedID = 50; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.3.4 table size > fetchArraySize > maxRow", async function() { + let fetchArraySizeVal = tableSize - 90; + let maxRowsVal = tableSize - 150; + let affectedID = 50; + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.3.5 maxRows = fetchArraySize < table size", function(done) { - var fetchArraySizeVal = tableSize - 110; - var maxRowsVal = tableSize - 110; - var affectedID = 20; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.3.5 maxRows = fetchArraySize < table size", async function() { + let fetchArraySizeVal = tableSize - 110; + let maxRowsVal = tableSize - 110; + let affectedID = 20; + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.3.6 maxRows = fetchArraySize = table size", function(done) { - var fetchArraySizeVal = tableSize; - var maxRowsVal = tableSize; - var affectedID = 0; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.3.6 maxRows = fetchArraySize = table size", async function() { + let fetchArraySizeVal = tableSize; + let maxRowsVal = tableSize; + let affectedID = 0; + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.3.7 maxRows = fetchArraySize > table size", function(done) { - var fetchArraySizeVal = tableSize + 9999; - var maxRowsVal = tableSize + 9999; - var affectedID = 10; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.3.7 maxRows = fetchArraySize > table size", async function() { + let fetchArraySizeVal = tableSize + 9999; + let maxRowsVal = tableSize + 9999; + let affectedID = 10; + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.3.8 maxRows = fetchArraySize/10", function(done) { - var fetchArraySizeVal = tableSize / 10 + 1; - var maxRowsVal = tableSize / 10; - var affectedID = 0; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.3.8 maxRows = fetchArraySize/10", async function() { + let fetchArraySizeVal = tableSize / 10 + 1; + let maxRowsVal = tableSize / 10; + let affectedID = 0; + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.3.9 maxRows = 10 * fetchArraySize", function(done) { - var fetchArraySizeVal = 90; - var maxRowsVal = 900; - var affectedID = 50; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.3.9 maxRows = 10 * fetchArraySize", async function() { + let fetchArraySizeVal = 90; + let maxRowsVal = 900; + let affectedID = 50; + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.3.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", function(done) { - var fetchArraySizeVal = tableSize / 10; - var maxRowsVal = tableSize / 10 + 1; - var affectedID = 0; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.3.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", async function() { + let fetchArraySizeVal = tableSize / 10; + let maxRowsVal = tableSize / 10 + 1; + let affectedID = 0; + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.3.11 maxRows = 0, fetchArraySize = table size", function(done) { - var fetchArraySizeVal = tableSize; - var maxRowsVal = 0; - var affectedID = 0; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.3.11 maxRows = 0, fetchArraySize = table size", async function() { + let fetchArraySizeVal = tableSize; + let maxRowsVal = 0; + let affectedID = 0; + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.3.12 maxRows = (table size - 1), fetchArraySize = table size", function(done) { - var fetchArraySizeVal = tableSize; - var maxRowsVal = tableSize - 1; - var affectedID = 0; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.3.12 maxRows = (table size - 1), fetchArraySize = table size", async function() { + let fetchArraySizeVal = tableSize; + let maxRowsVal = tableSize - 1; + let affectedID = 0; + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); - it("152.3.13 fetchArraySize = (table size - 1), maxRows = table size", function(done) { - var fetchArraySizeVal = tableSize - 1; - var maxRowsVal = tableSize; - var affectedID = 0; - testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID, done); + it("152.3.13 fetchArraySize = (table size - 1), maxRows = table size", async function() { + let fetchArraySizeVal = tableSize - 1; + let maxRowsVal = tableSize; + let affectedID = 0; + await testQueryStream(fetchArraySizeVal, maxRowsVal, affectedID); }); }); diff --git a/test/fetchArraySize6.js b/test/fetchArraySize6.js index 0be646a6..1e2cbcee 100644 --- a/test/fetchArraySize6.js +++ b/test/fetchArraySize6.js @@ -36,16 +36,15 @@ 'use strict'; const oracledb = require('oracledb'); -const should = require('should'); -const async = require('async'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); describe("153. fetchArraySize6.js", function() { let connection = null; - var default_maxRows = oracledb.maxRows; - var tableName = "nodb_fetchArraySize_153"; - var tableSize = 1000; + let default_maxRows = oracledb.maxRows; + const tableName = "nodb_fetchArraySize_153"; + let tableSize = 1000; const create_table = "BEGIN \n" + " DECLARE \n" + @@ -73,202 +72,119 @@ describe("153. fetchArraySize6.js", function() { const drop_table = "DROP TABLE " + tableName + " PURGE"; - before(function(done) { - oracledb.getConnection(dbConfig, function(err, conn) { - should.strictEqual(default_maxRows, 0); - should.not.exist(err); - connection = conn; - done(); - }); + before(async function() { + connection = await oracledb.getConnection(dbConfig); + assert.strictEqual(default_maxRows, 0); }); - after(function(done) { - connection.close(function(err) { - should.not.exist(err); - done(); - }); + after(async function() { + await connection.close(); }); describe("153.1 DML binding", function() { - before(function(done) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - done() ; - } - ); + before(async function() { + await connection.execute(create_table); }); - after(function(done) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + after(async function() { + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.maxRows = default_maxRows; - done(); }); - var dmlBinding = function(fetchArraySizeVal, affectedRowId, cb) { - async.series([ - function(callback) { - connection.execute( - "update " + tableName + " set content = :c where id > :num", - { - num: { val: affectedRowId, dir: oracledb.BIND_IN, type: oracledb.NUMBER }, - c: { val: "something", dir: oracledb.BIND_IN, type: oracledb.STRING } - }, - { - fetchArraySize: fetchArraySizeVal - }, - function(err, result) { - should.not.exist(err); - should.strictEqual(result.rowsAffected, tableSize - affectedRowId); - callback(); - }); + const dmlBinding = async function(fetchArraySizeVal, affectedRowId) { + let result = await connection.execute( + "update " + tableName + " set content = :c where id > :num", + { + num: { val: affectedRowId, dir: oracledb.BIND_IN, type: oracledb.NUMBER }, + c: { val: "something", dir: oracledb.BIND_IN, type: oracledb.STRING } }, - function(callback) { - connection.execute( - "select * from " + tableName + " where id > :num order by id", - { num: { val: affectedRowId, dir: oracledb.BIND_IN, type: oracledb.NUMBER } }, - { - fetchArraySize: fetchArraySizeVal - }, - function(err, result) { - should.not.exist(err); - should.strictEqual(result.rows.length, tableSize - affectedRowId); - verifyResult(result.rows, affectedRowId); - callback(); - } - ); + { + fetchArraySize: fetchArraySizeVal } - ], cb); + ); + assert.strictEqual(result.rowsAffected, tableSize - affectedRowId); + + result = await connection.execute( + "select * from " + tableName + " where id > :num order by id", + { num: { val: affectedRowId, dir: oracledb.BIND_IN, type: oracledb.NUMBER } }, + { + fetchArraySize: fetchArraySizeVal + } + ); + const rows = result.rows; + assert.strictEqual(rows.length, tableSize - affectedRowId); + for (let element of rows) { + const index = rows.indexOf(element); + assert.strictEqual(element[0], index + affectedRowId + 1); + assert.strictEqual(element[1], "something"); + } }; - var verifyResult = function(result, affectedRowId) { - async.forEach(result, function(element, cb) { - var index = result.indexOf(element); - should.strictEqual(element[0], index + affectedRowId + 1); - should.strictEqual(element[1], "something"); - cb(); - }, function(err) { - should.not.exist(err); - }); - }; - - it("153.1.1 fetchArraySize = 1", function(done) { - dmlBinding(1, 50, done); + it("153.1.1 fetchArraySize = 1", async function() { + await dmlBinding(1, 50); }); - it("153.1.2 fetchArraySize = tableSize/20", function(done) { - dmlBinding(tableSize / 20, 0, done); + it("153.1.2 fetchArraySize = tableSize/20", async function() { + await dmlBinding(tableSize / 20, 0); }); - it("153.1.3 fetchArraySize = tableSize/10", function(done) { - dmlBinding(tableSize / 10, 2, done); + it("153.1.3 fetchArraySize = tableSize/10", async function() { + await dmlBinding(tableSize / 10, 2); }); - it("153.1.4 fetchArraySize = tableSize", function(done) { - dmlBinding(tableSize, 0, done); + it("153.1.4 fetchArraySize = tableSize", async function() { + await dmlBinding(tableSize, 0); }); - it("153.1.5 fetchArraySize = (table size - 1)", function(done) { - dmlBinding(tableSize - 1, 0, done); + it("153.1.5 fetchArraySize = (table size - 1)", async function() { + await dmlBinding(tableSize - 1, 0); }); }); describe("153.2 procedure binding", function() { - var proc_package = "CREATE OR REPLACE PACKAGE nodb_ref_pkg IS\n" + - " TYPE idType IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;\n" + - " TYPE stringType IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;\n" + - " PROCEDURE array_out(ids OUT idType);\n" + - " PROCEDURE array_inout(id_in IN NUMBER, contents IN OUT stringType); \n" + - "END;"; + const proc_package = "CREATE OR REPLACE PACKAGE nodb_ref_pkg IS\n" + + " TYPE idType IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;\n" + + " TYPE stringType IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;\n" + + " PROCEDURE array_out(ids OUT idType);\n" + + " PROCEDURE array_inout(id_in IN NUMBER, contents IN OUT stringType); \n" + + "END;"; - var proc_package_body = "CREATE OR REPLACE PACKAGE BODY nodb_ref_pkg IS \n" + - " PROCEDURE array_out(ids OUT idType) IS \n" + - " BEGIN \n" + - " SELECT id BULK COLLECT INTO ids from " + tableName + " order by 1; \n" + - " END; \n" + - " PROCEDURE array_inout(id_in IN NUMBER, contents IN OUT stringType) IS \n" + - " BEGIN \n" + - " update " + tableName + " set content = (contents(1)||' '||to_char(id)) where id > id_in; \n" + - " SELECT content BULK COLLECT INTO contents FROM " + tableName + " where id > id_in ORDER BY id; \n" + - " END; \n " + - "END;"; - var proc_drop = "DROP PACKAGE nodb_ref_pkg"; + const proc_package_body = "CREATE OR REPLACE PACKAGE BODY nodb_ref_pkg IS \n" + + " PROCEDURE array_out(ids OUT idType) IS \n" + + " BEGIN \n" + + " SELECT id BULK COLLECT INTO ids from " + tableName + " order by 1; \n" + + " END; \n" + + " PROCEDURE array_inout(id_in IN NUMBER, contents IN OUT stringType) IS \n" + + " BEGIN \n" + + " update " + tableName + " set content = (contents(1)||' '||to_char(id)) where id > id_in; \n" + + " SELECT content BULK COLLECT INTO contents FROM " + tableName + " where id > id_in ORDER BY id; \n" + + " END; \n " + + "END;"; + const proc_drop = "DROP PACKAGE nodb_ref_pkg"; - before(function(done) { - async.series([ - function(cb) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.execute( - proc_package, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.execute( - proc_package_body, - function(err) { - should.not.exist(err); - cb(); - } - ); - } - ], done); + before(async function() { + await connection.execute(create_table); + await connection.execute(proc_package); + await connection.execute(proc_package_body); }); - after(function(done) { - async.series([ - function(cb) { - connection.execute( - proc_drop, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - cb(); - } - ); - } - ], done); + after(async function() { + await connection.execute(proc_drop); + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.maxRows = default_maxRows; - done(); }); - var proc_query_inout = function(updateFromId, maxArraySizeVal, fetchArraySizeVal, cb) { - connection.execute( + const proc_query_inout = async function(updateFromId, maxArraySizeVal, fetchArraySizeVal) { + let result = await connection.execute( "BEGIN nodb_ref_pkg.array_inout(:id_in, :c); END;", { id_in: { type: oracledb.NUMBER, dir: oracledb.BIND_IN, val: updateFromId }, @@ -276,212 +192,146 @@ describe("153. fetchArraySize6.js", function() { }, { fetchArraySize: fetchArraySizeVal - }, - function(err, result) { - should.not.exist(err); - var rowsAffected = tableSize - updateFromId; - should.strictEqual(result.outBinds.c.length, rowsAffected); - proc_verifyResult_inout(result.outBinds.c, updateFromId, cb); } ); + const rowsAffected = tableSize - updateFromId; + const outVal = result.outBinds.c; + assert.strictEqual(outVal.length, rowsAffected); + for (let element of outVal) { + const index = outVal.indexOf(element) + updateFromId + 1; + assert.strictEqual(element, "something new " + index); + } }; - var proc_verifyResult_inout = function(result, updateFromId, callback) { - async.forEach(result, function(element, cb) { - var index = result.indexOf(element); - var expectedTail = index + updateFromId + 1; - should.strictEqual(element, "something new " + expectedTail); - cb(); - }, function(err) { - should.not.exist(err); - callback(); - }); - }; - - var proc_query_out = function(maxArraySizeVal, fetchArraySizeVal, cb) { - connection.execute( + let proc_query_out = async function(maxArraySizeVal, fetchArraySizeVal) { + let result = await connection.execute( "BEGIN nodb_ref_pkg.array_out(:c); END;", { c: { type: oracledb.NUMBER, dir: oracledb.BIND_OUT, maxArraySize: maxArraySizeVal }, }, { fetchArraySize: fetchArraySizeVal - }, - function(err, result) { - should.not.exist(err); - should.strictEqual(result.outBinds.c.length, tableSize); - proc_verifyResult_out(result.outBinds.c); - cb(); } ); + const outVal = result.outBinds.c; + assert.strictEqual(outVal.length, tableSize); + for (let element of outVal) { + const index = outVal.indexOf(element); + assert.strictEqual(element, index + 1); + } }; - var proc_verifyResult_out = function(result) { - async.forEach(result, function(element, cb) { - var index = result.indexOf(element); - should.strictEqual(element, index + 1); - cb(); - }, function(err) { - should.not.exist(err); - }); - }; - - it("153.2.1 Bind OUT with fetchArraySize = 1", function(done) { - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = 1; - proc_query_out(maxArraySizeVal, fetchArraySizeVal, done); + it("153.2.1 Bind OUT with fetchArraySize = 1", async function() { + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = 1; + await proc_query_out(maxArraySizeVal, fetchArraySizeVal); }); - it("153.2.2 Bind OUT with fetchArraySize = tableSize/20", function(done) { - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize / 20; - proc_query_out(maxArraySizeVal, fetchArraySizeVal, done); + it("153.2.2 Bind OUT with fetchArraySize = tableSize/20", async function() { + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize / 20; + await proc_query_out(maxArraySizeVal, fetchArraySizeVal); }); - it("153.2.3 Bind OUT with fetchArraySize = tableSize/10", function(done) { - var maxArraySizeVal = tableSize * 10; - var fetchArraySizeVal = tableSize / 10; - proc_query_out(maxArraySizeVal, fetchArraySizeVal, done); + it("153.2.3 Bind OUT with fetchArraySize = tableSize/10", async function() { + let maxArraySizeVal = tableSize * 10; + let fetchArraySizeVal = tableSize / 10; + await proc_query_out(maxArraySizeVal, fetchArraySizeVal); }); - it("153.2.4 Bind OUT with fetchArraySize = tableSize", function(done) { - var maxArraySizeVal = tableSize * 2; - var fetchArraySizeVal = tableSize; - proc_query_out(maxArraySizeVal, fetchArraySizeVal, done); + it("153.2.4 Bind OUT with fetchArraySize = tableSize", async function() { + let maxArraySizeVal = tableSize * 2; + let fetchArraySizeVal = tableSize; + await proc_query_out(maxArraySizeVal, fetchArraySizeVal); }); - it("153.2.5 Bind OUT with fetchArraySize = (table size - 1)", function(done) { - var maxArraySizeVal = tableSize * 2; - var fetchArraySizeVal = tableSize - 1; - proc_query_out(maxArraySizeVal, fetchArraySizeVal, done); + it("153.2.5 Bind OUT with fetchArraySize = (table size - 1)", async function() { + let maxArraySizeVal = tableSize * 2; + let fetchArraySizeVal = tableSize - 1; + await proc_query_out(maxArraySizeVal, fetchArraySizeVal); }); - it("153.2.6 Bind IN OUT with fetchArraySize = 1", function(done) { - var updateFromId = 20; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = 1; - proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("153.2.6 Bind IN OUT with fetchArraySize = 1", async function() { + let updateFromId = 20; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = 1; + await proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("153.2.7 Bind IN OUT with fetchArraySize = tableSize/20", function(done) { - var updateFromId = 20; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize / 20; - proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("153.2.7 Bind IN OUT with fetchArraySize = tableSize/20", async function() { + let updateFromId = 20; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize / 20; + await proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("153.2.8 Bind IN OUT with fetchArraySize = tableSize/10", function(done) { - var updateFromId = 10; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize / 10; - proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("153.2.8 Bind IN OUT with fetchArraySize = tableSize/10", async function() { + let updateFromId = 10; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize / 10; + await proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("153.2.9 Bind IN OUT with fetchArraySize = tableSize", function(done) { - var updateFromId = 0; - var maxArraySizeVal = tableSize * 2; - var fetchArraySizeVal = tableSize; - proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("153.2.9 Bind IN OUT with fetchArraySize = tableSize", async function() { + let updateFromId = 0; + let maxArraySizeVal = tableSize * 2; + let fetchArraySizeVal = tableSize; + await proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("153.2.10 Bind IN OUT with fetchArraySize = (table size - 1)", function(done) { - var updateFromId = 0; - var maxArraySizeVal = tableSize * 2; - var fetchArraySizeVal = tableSize - 1; - proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("153.2.10 Bind IN OUT with fetchArraySize = (table size - 1)", async function() { + let updateFromId = 0; + let maxArraySizeVal = tableSize * 2; + let fetchArraySizeVal = tableSize - 1; + await proc_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); }); describe("153.3 function binding", function() { - var proc_package = "CREATE OR REPLACE PACKAGE nodb_ref_fun_pkg AS\n" + - " TYPE idType IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;\n" + - " TYPE stringType IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;\n" + - " FUNCTION array_out(id_in IN NUMBER) RETURN idType;\n" + - " FUNCTION array_inout(id_in IN NUMBER, contents IN OUT stringType) RETURN idType; \n" + - "END;"; + const proc_package = "CREATE OR REPLACE PACKAGE nodb_ref_fun_pkg AS\n" + + " TYPE idType IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;\n" + + " TYPE stringType IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;\n" + + " FUNCTION array_out(id_in IN NUMBER) RETURN idType;\n" + + " FUNCTION array_inout(id_in IN NUMBER, contents IN OUT stringType) RETURN idType; \n" + + "END;"; - var proc_package_body = "CREATE OR REPLACE PACKAGE BODY nodb_ref_fun_pkg AS \n" + - " FUNCTION array_out(id_in IN NUMBER) RETURN idType AS \n" + - " tmp_id1 idType; \n" + - " BEGIN \n" + - " SELECT id BULK COLLECT INTO tmp_id1 from " + tableName + " where id > id_in ORDER BY 1; \n" + - " RETURN tmp_id1; \n" + - " END; \n" + - " FUNCTION array_inout(id_in IN NUMBER, contents IN OUT stringType) RETURN idType AS \n" + - " tmp_id2 idType; \n" + - " BEGIN \n" + - " update " + tableName + " set content = (contents(1)||' '||to_char(id)) where id > id_in; \n" + - " SELECT content BULK COLLECT INTO contents FROM " + tableName + " where id > id_in ORDER BY id; \n" + - " SELECT id BULK COLLECT INTO tmp_id2 FROM " + tableName + " where id > id_in ORDER BY 1; \n" + - " RETURN tmp_id2; \n" + - " END; \n " + - "END;"; - var proc_drop = "DROP PACKAGE nodb_ref_fun_pkg"; + const proc_package_body = "CREATE OR REPLACE PACKAGE BODY nodb_ref_fun_pkg AS \n" + + " FUNCTION array_out(id_in IN NUMBER) RETURN idType AS \n" + + " tmp_id1 idType; \n" + + " BEGIN \n" + + " SELECT id BULK COLLECT INTO tmp_id1 from " + tableName + " where id > id_in ORDER BY 1; \n" + + " RETURN tmp_id1; \n" + + " END; \n" + + " FUNCTION array_inout(id_in IN NUMBER, contents IN OUT stringType) RETURN idType AS \n" + + " tmp_id2 idType; \n" + + " BEGIN \n" + + " update " + tableName + " set content = (contents(1)||' '||to_char(id)) where id > id_in; \n" + + " SELECT content BULK COLLECT INTO contents FROM " + tableName + " where id > id_in ORDER BY id; \n" + + " SELECT id BULK COLLECT INTO tmp_id2 FROM " + tableName + " where id > id_in ORDER BY 1; \n" + + " RETURN tmp_id2; \n" + + " END; \n " + + "END;"; + const proc_drop = "DROP PACKAGE nodb_ref_fun_pkg"; - before(function(done) { - async.series([ - function(cb) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.execute( - proc_package, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.execute( - proc_package_body, - function(err) { - should.not.exist(err); - cb(); - } - ); - } - ], done); + before(async function() { + await connection.execute(create_table); + await connection.execute(proc_package); + await connection.execute(proc_package_body); }); - after(function(done) { - async.series([ - function(cb) { - connection.execute( - proc_drop, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - cb(); - } - ); - } - ], done); + after(async function() { + await connection.execute(proc_drop); + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.maxRows = default_maxRows; - done(); }); - var fun_query_inout = function(updateFromId, maxArraySizeVal, fetchArraySizeVal, cb) { - connection.execute( + const fun_query_inout = async function(updateFromId, maxArraySizeVal, fetchArraySizeVal) { + let result = await connection.execute( "BEGIN :output := nodb_ref_fun_pkg.array_inout(:id_in, :c_inout); END;", { id_in: { type: oracledb.NUMBER, dir: oracledb.BIND_IN, val: updateFromId }, @@ -490,36 +340,28 @@ describe("153. fetchArraySize6.js", function() { }, { fetchArraySize: fetchArraySizeVal - }, - function(err, result) { - should.not.exist(err); - fun_verifyResult_inout(result.outBinds.c_inout, updateFromId); - fun_verifyResult_inout(result.outBinds.output, updateFromId); - cb(); } ); + fun_verifyResult_inout(result.outBinds.c_inout, updateFromId); + fun_verifyResult_inout(result.outBinds.output, updateFromId); }; - var fun_verifyResult_inout = function(result, updateFromId) { - var rowsAffected = tableSize - updateFromId; - should.strictEqual(result.length, rowsAffected); - async.forEach(result, function(element, cb) { - var index = result.indexOf(element); + const fun_verifyResult_inout = function(result, updateFromId) { + let rowsAffected = tableSize - updateFromId; + assert.strictEqual(result.length, rowsAffected); + for (let element of result) { + let index = result.indexOf(element); if (typeof element === "string") { - var expectedTail = index + updateFromId + 1; - should.strictEqual(element, "something new " + expectedTail); + let expectedTail = index + updateFromId + 1; + assert.strictEqual(element, "something new " + expectedTail); } else if (typeof element === "number") { - should.strictEqual(element, index + 1 + updateFromId); + assert.strictEqual(element, index + 1 + updateFromId); } - - cb(); - }, function(err) { - should.not.exist(err); - }); + } }; - var fun_query_out = function(affectFromId, maxArraySizeVal, fetchArraySizeVal, cb) { - connection.execute( + const fun_query_out = async function(affectFromId, maxArraySizeVal, fetchArraySizeVal) { + let result = await connection.execute( "BEGIN :output := nodb_ref_fun_pkg.array_out(:c); END;", { c: { type: oracledb.NUMBER, dir: oracledb.BIND_IN, val: affectFromId }, @@ -527,94 +369,84 @@ describe("153. fetchArraySize6.js", function() { }, { fetchArraySize: fetchArraySizeVal - }, - function(err, result) { - should.not.exist(err); - should.strictEqual(result.outBinds.output.length, tableSize - affectFromId); - fun_verifyResult_out(result.outBinds.output, affectFromId); - cb(); } ); + const outVal = result.outBinds.output; + assert.strictEqual(outVal.length, tableSize - affectFromId); + for (let element of outVal) { + const index = outVal.indexOf(element); + assert.strictEqual(element, index + 1 + affectFromId); + } }; - var fun_verifyResult_out = function(result, affectFromId) { - async.forEach(result, function(element, cb) { - var index = result.indexOf(element); - should.strictEqual(element, index + 1 + affectFromId); - cb(); - }, function(err) { - should.not.exist(err); - }); - }; - - it("153.3.1 Bind OUT with fetchArraySize = 1", function(done) { - var affectFromId = 10; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = 1; - fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("153.3.1 Bind OUT with fetchArraySize = 1", async function() { + let affectFromId = 10; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = 1; + await fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("153.3.2 Bind OUT with fetchArraySize = tableSize/20", function(done) { - var affectFromId = 20; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize / 20; - fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("153.3.2 Bind OUT with fetchArraySize = tableSize/20", async function() { + let affectFromId = 20; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize / 20; + await fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("153.3.3 Bind OUT with fetchArraySize = tableSize/10", function(done) { - var affectFromId = 5; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize / 10; - fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("153.3.3 Bind OUT with fetchArraySize = tableSize/10", async function() { + let affectFromId = 5; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize / 10; + await fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("153.3.4 Bind OUT with fetchArraySize = tableSize", function(done) { - var affectFromId = 29; - var maxArraySizeVal = tableSize * 10; - var fetchArraySizeVal = tableSize; - fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("153.3.4 Bind OUT with fetchArraySize = tableSize", async function() { + let affectFromId = 29; + let maxArraySizeVal = tableSize * 10; + let fetchArraySizeVal = tableSize; + await fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("153.3.5 Bind OUT with fetchArraySize = (table size - 1)", function(done) { - var affectFromId = 0; - var maxArraySizeVal = tableSize * 10; - var fetchArraySizeVal = tableSize - 1; - fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("153.3.5 Bind OUT with fetchArraySize = (table size - 1)", async function() { + let affectFromId = 0; + let maxArraySizeVal = tableSize * 10; + let fetchArraySizeVal = tableSize - 1; + await fun_query_out(affectFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("153.3.6 Bind IN OUT with fetchArraySize = 1", function(done) { - var updateFromId = 20; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = 1; - fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("153.3.6 Bind IN OUT with fetchArraySize = 1", async function() { + let updateFromId = 20; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = 1; + await fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("153.3.7 Bind IN OUT with fetchArraySize = tableSize/20", function(done) { - var updateFromId = 20; - var maxArraySizeVal = tableSize; - var fetchArraySizeVal = tableSize / 20; - fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("153.3.7 Bind IN OUT with fetchArraySize = tableSize/20", async function() { + let updateFromId = 20; + let maxArraySizeVal = tableSize; + let fetchArraySizeVal = tableSize / 20; + await fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("153.3.8 Bind IN OUT with fetchArraySize = tableSize/10", function(done) { - var updateFromId = 0; - var maxArraySizeVal = tableSize * 2; - var fetchArraySizeVal = tableSize / 10; - fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("153.3.8 Bind IN OUT with fetchArraySize = tableSize/10", async function() { + let updateFromId = 0; + let maxArraySizeVal = tableSize * 2; + let fetchArraySizeVal = tableSize / 10; + await fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("153.3.9 Bind IN OUT with fetchArraySize = tableSize", function(done) { - var updateFromId = 0; - var maxArraySizeVal = tableSize * 2; - var fetchArraySizeVal = tableSize; - fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("153.3.9 Bind IN OUT with fetchArraySize = tableSize", async function() { + let updateFromId = 0; + let maxArraySizeVal = tableSize * 2; + let fetchArraySizeVal = tableSize; + await fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); - it("153.3.10 Bind IN OUT with fetchArraySize = (table size - 1)", function(done) { - var updateFromId = 0; - var maxArraySizeVal = tableSize * 2; - var fetchArraySizeVal = tableSize - 1; - fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal, done); + it("153.3.10 Bind IN OUT with fetchArraySize = (table size - 1)", async function() { + let updateFromId = 0; + let maxArraySizeVal = tableSize * 2; + let fetchArraySizeVal = tableSize - 1; + await fun_query_inout(updateFromId, maxArraySizeVal, fetchArraySizeVal); }); }); diff --git a/test/fetchArraySize7.js b/test/fetchArraySize7.js index 7d8756d0..ccb11436 100644 --- a/test/fetchArraySize7.js +++ b/test/fetchArraySize7.js @@ -36,15 +36,15 @@ 'use strict'; const oracledb = require('oracledb'); -const should = require('should'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); describe("154. fetchArraySize7.js", function() { let connection = null; - var default_maxRows = oracledb.maxRows; - var tableName = "nodb_fetchArraySize_154"; - var tableSize = 1000; + let default_maxRows = oracledb.maxRows; + const tableName = "nodb_fetchArraySize_154"; + const tableSize = 1000; const create_table = "BEGIN \n" + " DECLARE \n" + @@ -72,401 +72,326 @@ describe("154. fetchArraySize7.js", function() { const drop_table = "DROP TABLE " + tableName + " PURGE"; - before(function(done) { - oracledb.getConnection(dbConfig, function(err, conn) { - should.strictEqual(default_maxRows, 0); - should.not.exist(err); - connection = conn; - done(); - }); + before(async function() { + connection = await oracledb.getConnection(dbConfig); + assert.strictEqual(default_maxRows, 0); }); - after(function(done) { - connection.close(function(err) { - should.not.exist(err); - done(); - }); + after(async function() { + await connection.close(); }); describe("154.1 getRows() of resultSet = true", function() { - before(function(done) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - done() ; - } - ); + before(async function() { + await connection.execute(create_table); }); - after(function(done) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + after(async function() { + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.maxRows = default_maxRows; - done(); }); - var testGetRow = function(fetchArraySizeVal, numRowsVal, cb) { + const testGetRow = async function(fetchArraySizeVal, numRowsVal) { - connection.execute( + const result = await connection.execute( "select * from " + tableName + " order by id", [], { resultSet: true, fetchArraySize: fetchArraySizeVal - }, - function(err, result) { - should.not.exist(err); - var rowCount = 0; - fetchRowsFromRS(result.resultSet, numRowsVal, rowCount, cb); } ); + let rowCount = 0; + fetchRowsFromRS(result.resultSet, numRowsVal, rowCount); }; - function fetchRowsFromRS(rs, numRowsVal, rowCount, cb) { - rs.getRows(numRowsVal, function(err, rows) { - (rows.length).should.be.belowOrEqual(numRowsVal); - if (rows.length > 0) { - for (var i = 0; i < rows.length; i++) { - rowCount = rowCount + 1; - should.strictEqual(rows[i][0], rowCount); - should.strictEqual(rows[i][1], rowCount.toString()); - } - return fetchRowsFromRS(rs, numRowsVal, rowCount, cb); - } else { - should.strictEqual(rowCount, tableSize); - rs.close(function(err) { - should.not.exist(err); - cb(); - }); + async function fetchRowsFromRS(rs, numRowsVal, rowCount) { + let rows = await rs.getRows(numRowsVal); + assert(rows.length <= numRowsVal); + if (rows.length > 0) { + for (let i = 0; i < rows.length; i++) { + rowCount = rowCount + 1; + assert.strictEqual(rows[i][0], rowCount); + assert.strictEqual(rows[i][1], rowCount.toString()); } - }); + return await fetchRowsFromRS(rs, numRowsVal, rowCount); + } else { + assert.strictEqual(rowCount, tableSize); + await rs.close(); + } } - it("154.1.1 numRows > table size > fetchArraySize", function(done) { - var fetchArraySizeVal = tableSize - 50; - var numRowsVal = tableSize + 10000; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("154.1.1 numRows > table size > fetchArraySize", async function() { + let fetchArraySizeVal = tableSize - 50; + let numRowsVal = tableSize + 10000; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("154.1.2 numRows > fetchArraySize > table size", function(done) { - var fetchArraySizeVal = tableSize + 1200; - var numRowsVal = tableSize + 10000; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("154.1.2 numRows > fetchArraySize > table size", async function() { + let fetchArraySizeVal = tableSize + 1200; + let numRowsVal = tableSize + 10000; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("154.1.3 table size > numRows > fetchArraySize", function(done) { - var fetchArraySizeVal = tableSize - 91; - var numRowsVal = tableSize - 2; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("154.1.3 table size > numRows > fetchArraySize", async function() { + let fetchArraySizeVal = tableSize - 91; + let numRowsVal = tableSize - 2; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("154.1.4 table size > fetchArraySize > maxRow", function(done) { - var fetchArraySizeVal = tableSize - 90; - var numRowsVal = tableSize - 150; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("154.1.4 table size > fetchArraySize > maxRow", async function() { + let fetchArraySizeVal = tableSize - 90; + let numRowsVal = tableSize - 150; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("154.1.5 numRows = fetchArraySize < table size", function(done) { - var fetchArraySizeVal = tableSize - 110; - var numRowsVal = tableSize - 110; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("154.1.5 numRows = fetchArraySize < table size", async function() { + let fetchArraySizeVal = tableSize - 110; + let numRowsVal = tableSize - 110; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("154.1.6 numRows = fetchArraySize = table size", function(done) { - var fetchArraySizeVal = tableSize; - var numRowsVal = tableSize; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("154.1.6 numRows = fetchArraySize = table size", async function() { + let fetchArraySizeVal = tableSize; + let numRowsVal = tableSize; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("154.1.7 numRows = fetchArraySize > table size", function(done) { - var fetchArraySizeVal = tableSize + 9999; - var numRowsVal = tableSize + 9999; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("154.1.7 numRows = fetchArraySize > table size", async function() { + let fetchArraySizeVal = tableSize + 9999; + let numRowsVal = tableSize + 9999; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("154.1.8 numRows = fetchArraySize/10", function(done) { - var fetchArraySizeVal = tableSize / 10 + 1; - var numRowsVal = tableSize / 10; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("154.1.8 numRows = fetchArraySize/10", async function() { + let fetchArraySizeVal = tableSize / 10 + 1; + let numRowsVal = tableSize / 10; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("154.1.9 numRows = 10 * fetchArraySize", function(done) { - var fetchArraySizeVal = 90; - var numRowsVal = 900; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("154.1.9 numRows = 10 * fetchArraySize", async function() { + let fetchArraySizeVal = 90; + let numRowsVal = 900; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("154.1.10 numRows > fetchArraySize, fetchArraySize = (table size)/10", function(done) { - var fetchArraySizeVal = tableSize / 10; - var numRowsVal = tableSize / 10 + 1; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("154.1.10 numRows > fetchArraySize, fetchArraySize = (table size)/10", async function() { + let fetchArraySizeVal = tableSize / 10; + let numRowsVal = tableSize / 10 + 1; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("154.1.11 numRows = (table size - 1), fetchArraySize = table size", function(done) { - var fetchArraySizeVal = tableSize; - var numRowsVal = tableSize - 1; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("154.1.11 numRows = (table size - 1), fetchArraySize = table size", async function() { + let fetchArraySizeVal = tableSize; + let numRowsVal = tableSize - 1; + await testGetRow(fetchArraySizeVal, numRowsVal); }); - it("154.1.12 fetchArraySize = (table size - 1), numRows = table size", function(done) { - var fetchArraySizeVal = tableSize - 1; - var numRowsVal = tableSize; - testGetRow(fetchArraySizeVal, numRowsVal, done); + it("154.1.12 fetchArraySize = (table size - 1), numRows = table size", async function() { + let fetchArraySizeVal = tableSize - 1; + let numRowsVal = tableSize; + await testGetRow(fetchArraySizeVal, numRowsVal); }); }); describe("154.2 getRow() of resultSet = true", function() { - before(function(done) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - done() ; - } - ); + before(async function() { + await connection.execute(create_table); }); - after(function(done) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + after(async function() { + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.maxRows = default_maxRows; - done(); }); - var testGetRows = function(fetchArraySizeVal, cb) { - connection.execute( + const testGetRows = async function(fetchArraySizeVal) { + let result = await connection.execute( "select * from " + tableName + " order by id", [], { resultSet: true, fetchArraySize: fetchArraySizeVal - }, - function(err, result) { - should.not.exist(err); - // should.strictEqual(result.rows.length, default_maxRows); - var rowCount = 0; - fetchRowFromRS(result.resultSet, rowCount, cb); } ); + let rowCount = 0; + // assert.strictEqual(result.rows.length, default_maxRows); + await fetchRowFromRS(result.resultSet, rowCount); }; - function fetchRowFromRS(rs, rowCount, cb) { - rs.getRow(function(err, row) { - if (row) { - rowCount = rowCount + 1; - // console.log(rows[i][0]); - should.strictEqual(row[0], rowCount); - should.strictEqual(row[1], rowCount.toString()); - return fetchRowFromRS(rs, rowCount, cb); - } else { - should.strictEqual(rowCount, tableSize); - rs.close(function(err) { - should.not.exist(err); - cb(); - }); - } - }); + async function fetchRowFromRS(rs, rowCount) { + let row = await rs.getRow(); + if (row) { + rowCount = rowCount + 1; + // console.log(rows[i][0]); + assert.strictEqual(row[0], rowCount); + assert.strictEqual(row[1], rowCount.toString()); + return fetchRowFromRS(rs, rowCount); + } else { + assert.strictEqual(rowCount, tableSize); + await rs.close(); + } } - it("154.2.1 fetchArraySize = 1", function(done) { - testGetRows(1, done); + it("154.2.1 fetchArraySize = 1", async function() { + await testGetRows(1); }); - it("154.2.2 fetchArraySize = tableSize/50", function(done) { - testGetRows(tableSize / 50, done); + it("154.2.2 fetchArraySize = tableSize/50", async function() { + await testGetRows(tableSize / 50); }); - it("154.2.3 fetchArraySize = tableSize/20", function(done) { - testGetRows(tableSize / 20, done); + it("154.2.3 fetchArraySize = tableSize/20", async function() { + await testGetRows(tableSize / 20); }); - it("154.2.4 fetchArraySize = tableSize/10", function(done) { - testGetRows(tableSize / 10, done); + it("154.2.4 fetchArraySize = tableSize/10", async function() { + await testGetRows(tableSize / 10); }); - it("154.2.5 fetchArraySize = tableSize/5", function(done) { - testGetRows(tableSize / 5, done); + it("154.2.5 fetchArraySize = tableSize/5", async function() { + await testGetRows(tableSize / 5); }); - it("154.2.6 fetchArraySize = tableSize", function(done) { - testGetRows(tableSize, done); + it("154.2.6 fetchArraySize = tableSize", async function() { + await testGetRows(tableSize); }); - it("154.2.7 fetchArraySize = (table size - 1)", function(done) { - testGetRows(tableSize - 1, done); + it("154.2.7 fetchArraySize = (table size - 1)", async function() { + await testGetRows(tableSize - 1); }); }); describe("154.3 interleaved calls to getRow() and getRows()", function() { - var numRowsVal_1, numRowsVal_2; + let numRowsVal_1, numRowsVal_2; - before(function(done) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - done() ; - } - ); + before(async function() { + await connection.execute(create_table); }); - after(function(done) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + after(async function() { + await connection.execute(drop_table); }); - afterEach(function(done) { + afterEach(function() { oracledb.maxRows = default_maxRows; - done(); }); - var testRS = function(fetchArraySizeVal, cb) { - connection.execute( + const testRS = async function(fetchArraySizeVal) { + let result = await connection.execute( "select * from " + tableName + " order by id", [], { resultSet: true, fetchArraySize: fetchArraySizeVal - }, - function(err, result) { - should.not.exist(err); - var rowCount = 0; - fetchRowFromRS(result.resultSet, rowCount, cb); } ); + let rowCount = 0; + fetchRowFromRS(result.resultSet, rowCount); }; - function fetchRowFromRS(rs, rowCount, cb) { - rs.getRow(function(err, row) { - if (row) { + async function fetchRowFromRS(rs, rowCount) { + let row = await rs.getRow(); + if (row) { + rowCount = rowCount + 1; + assert.strictEqual(row[0], rowCount); + assert.strictEqual(row[1], rowCount.toString()); + return await fetchRowsFromRS_1(rs, rowCount); + } else { + assert.strictEqual(rowCount, tableSize); + await rs.close(); + } + } + + async function fetchRowsFromRS_1(rs, rowCount, cb) { + let rows = await rs.getRows(numRowsVal_1); + assert(rows.length <= numRowsVal_1); + if (rows.length > 0) { + for (let i = 0; i < rows.length; i++) { rowCount = rowCount + 1; - should.strictEqual(row[0], rowCount); - should.strictEqual(row[1], rowCount.toString()); - return fetchRowsFromRS_1(rs, rowCount, cb); - } else { - should.strictEqual(rowCount, tableSize); - rs.close(function(err) { - should.not.exist(err); - cb(); - }); + assert.strictEqual(rows[i][0], rowCount); + assert.strictEqual(rows[i][1], rowCount.toString()); } - }); + return await fetchRowsFromRS_2(rs, rowCount, cb); + } else { + assert.strictEqual(rowCount, tableSize); + await rs.close(); + } } - function fetchRowsFromRS_1(rs, rowCount, cb) { - rs.getRows(numRowsVal_1, function(err, rows) { - (rows.length).should.be.belowOrEqual(numRowsVal_1); - if (rows.length > 0) { - for (var i = 0; i < rows.length; i++) { - rowCount = rowCount + 1; - should.strictEqual(rows[i][0], rowCount); - should.strictEqual(rows[i][1], rowCount.toString()); - } - return fetchRowsFromRS_2(rs, rowCount, cb); - } else { - should.strictEqual(rowCount, tableSize); - rs.close(function(err) { - should.not.exist(err); - cb(); - }); + async function fetchRowsFromRS_2(rs, rowCount, cb) { + let rows = await rs.getRows(numRowsVal_2); + assert(rows.length <= numRowsVal_2); + if (rows.length > 0) { + for (let i = 0; i < rows.length; i++) { + rowCount = rowCount + 1; + assert.strictEqual(rows[i][0], rowCount); + assert.strictEqual(rows[i][1], rowCount.toString()); } - }); + return await fetchRowFromRS(rs, rowCount, cb); + } else { + assert.strictEqual(rowCount, tableSize); + await rs.close(); + } } - function fetchRowsFromRS_2(rs, rowCount, cb) { - rs.getRows(numRowsVal_2, function(err, rows) { - (rows.length).should.be.belowOrEqual(numRowsVal_2); - if (rows.length > 0) { - for (var i = 0; i < rows.length; i++) { - rowCount = rowCount + 1; - should.strictEqual(rows[i][0], rowCount); - should.strictEqual(rows[i][1], rowCount.toString()); - } - return fetchRowFromRS(rs, rowCount, cb); - } else { - should.strictEqual(rowCount, tableSize); - rs.close(function(err) { - should.not.exist(err); - cb(); - }); - } - }); - } - - it("154.3.1 fetchArraySize = 1", function(done) { - var fetchArraySizeVal = 1; + it("154.3.1 fetchArraySize = 1", async function() { + let fetchArraySizeVal = 1; numRowsVal_1 = 2; numRowsVal_2 = 10; - testRS(fetchArraySizeVal, done); + await testRS(fetchArraySizeVal); }); - it("154.3.2 fetchArraySize = tableSize/50", function(done) { - var fetchArraySizeVal = tableSize / 50; + it("154.3.2 fetchArraySize = tableSize/50", async function() { + let fetchArraySizeVal = tableSize / 50; numRowsVal_1 = 5; numRowsVal_2 = 88; - testRS(fetchArraySizeVal, done); + await testRS(fetchArraySizeVal); }); - it("154.3.3 fetchArraySize = tableSize/20", function(done) { - var fetchArraySizeVal = tableSize / 20; + it("154.3.3 fetchArraySize = tableSize/20", async function() { + let fetchArraySizeVal = tableSize / 20; numRowsVal_1 = 50; numRowsVal_2 = 100; - testRS(fetchArraySizeVal, done); + await testRS(fetchArraySizeVal); }); - it("154.3.4 fetchArraySize = tableSize/10", function(done) { - var fetchArraySizeVal = tableSize / 10; + it("154.3.4 fetchArraySize = tableSize/10", async function() { + let fetchArraySizeVal = tableSize / 10; numRowsVal_1 = 30; numRowsVal_2 = 99; - testRS(fetchArraySizeVal, done); + await testRS(fetchArraySizeVal); }); - it("154.3.5 fetchArraySize = tableSize/5", function(done) { - var fetchArraySizeVal = tableSize / 5; + it("154.3.5 fetchArraySize = tableSize/5", async function() { + let fetchArraySizeVal = tableSize / 5; numRowsVal_1 = 5; numRowsVal_2 = 88; - testRS(fetchArraySizeVal, done); + await testRS(fetchArraySizeVal); }); - it("154.3.6 fetchArraySize = tableSize", function(done) { - var fetchArraySizeVal = tableSize; + it("154.3.6 fetchArraySize = tableSize", async function() { + let fetchArraySizeVal = tableSize; numRowsVal_1 = 15; numRowsVal_2 = tableSize; - testRS(fetchArraySizeVal, done); + await testRS(fetchArraySizeVal); }); - it("154.3.7 fetchArraySize = (tableSize - 1)", function(done) { - var fetchArraySizeVal = tableSize - 1; + it("154.3.7 fetchArraySize = (tableSize - 1)", async function() { + let fetchArraySizeVal = tableSize - 1; numRowsVal_1 = tableSize - 1; numRowsVal_2 = tableSize; - testRS(fetchArraySizeVal, done); + await testRS(fetchArraySizeVal); }); }); diff --git a/test/fetchArraySize8.js b/test/fetchArraySize8.js index 3dd853c0..2df99432 100644 --- a/test/fetchArraySize8.js +++ b/test/fetchArraySize8.js @@ -33,16 +33,15 @@ 'use strict'; const oracledb = require('oracledb'); -const should = require('should'); -const async = require('async'); +const assert = require ('assert'); const dbConfig = require('./dbconfig.js'); describe("155. fetchArraySize8.js", function() { let connection = null; - var default_fetcArraySize = oracledb.fetchArraySize; - var default_maxRows = oracledb.maxRows; - var tableName = "nodb_fetchArraySize_155"; + let default_fetcArraySize = oracledb.fetchArraySize; + let default_maxRows = oracledb.maxRows; + const tableName = "nodb_fetchArraySize_155"; const create_table = "BEGIN \n" + " DECLARE \n" + @@ -64,333 +63,275 @@ describe("155. fetchArraySize8.js", function() { const drop_table = "DROP TABLE " + tableName + " PURGE"; - before(function(done) { - oracledb.getConnection(dbConfig, function(err, conn) { - should.strictEqual(default_fetcArraySize, 100); - should.strictEqual(default_maxRows, 0); - should.not.exist(err); - connection = conn; - done(); - }); + before(async function() { + connection = await oracledb.getConnection(dbConfig); + assert.strictEqual(default_fetcArraySize, 100); + assert.strictEqual(default_maxRows, 0); }); - after(function(done) { - connection.close(function(err) { - should.not.exist(err); - done(); - }); + after(async function() { + await connection.close(); }); describe("155.1 Streaming clobs with different oracledb.fetchArraySize", function() { - afterEach(function(done) { + afterEach(function() { oracledb.fetchArraySize = default_fetcArraySize; oracledb.maxRows = default_maxRows; - done(); }); - var basicFetchWithGlobalOption = function(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, cb) { - async.series([ - function(callback) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - callback() ; - } - ); - }, - function(callback) { - insertData(tableSize, callback); - }, - function(callback) { - oracledb.fetchArraySize = fetchArraySizeVal; - oracledb.maxRows = maxRowsVal; - connection.execute( - "select * from " + tableName + " where id > " + affectedID + " order by id", - function(err, result) { - should.not.exist(err); - var resultLenExpected = maxRowsVal > (tableSize - affectedID) ? (tableSize - affectedID) : maxRowsVal; - if (maxRowsVal === 0) resultLenExpected = tableSize - affectedID; - should.strictEqual(result.rows.length, resultLenExpected); - verifyResult(result.rows, callback); - } - ); - }, - function(callback) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - callback(); - } - ); - } - ], cb); + const basicFetchWithGlobalOption = async function(tableSize, fetchArraySizeVal, maxRowsVal, affectedID) { + await connection.execute(create_table); + await insertData(tableSize); + oracledb.fetchArraySize = fetchArraySizeVal; + oracledb.maxRows = maxRowsVal; + let result = await connection.execute( + "select * from " + tableName + " where id > " + affectedID + " order by id" + ); + let resultLenExpected = maxRowsVal > (tableSize - affectedID) ? (tableSize - affectedID) : maxRowsVal; + if (maxRowsVal === 0) resultLenExpected = tableSize - affectedID; + assert.strictEqual(result.rows.length, resultLenExpected); + await verifyResult(result.rows); + + await connection.execute(drop_table); }; - it("155.1.1 maxRows > table size > oracledb.fetchArraySize", function(done) { - var tableSize = 100; - var fetchArraySizeVal = tableSize / 2; - var maxRowsVal = tableSize * 2; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.1.1 maxRows > table size > oracledb.fetchArraySize", async function() { + let tableSize = 100; + let fetchArraySizeVal = tableSize / 2; + let maxRowsVal = tableSize * 2; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.1.2 maxRows > oracledb.fetchArraySize > table size", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize + 10; - var maxRowsVal = tableSize * 3; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.1.2 maxRows > oracledb.fetchArraySize > table size", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize + 10; + let maxRowsVal = tableSize * 3; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.1.3 table size > maxRows > oracledb.fetchArraySize", function(done) { - var tableSize = 199; - var fetchArraySizeVal = tableSize - 80; - var maxRowsVal = tableSize - 50; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.1.3 table size > maxRows > oracledb.fetchArraySize", async function() { + let tableSize = 199; + let fetchArraySizeVal = tableSize - 80; + let maxRowsVal = tableSize - 50; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.1.4 table size > oracledb.fetchArraySize > maxRow", function(done) { - var tableSize = 290; - var fetchArraySizeVal = tableSize - 90; - var maxRowsVal = tableSize - 150; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.1.4 table size > oracledb.fetchArraySize > maxRow", async function() { + let tableSize = 290; + let fetchArraySizeVal = tableSize - 90; + let maxRowsVal = tableSize - 150; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.1.5 maxRows = oracledb.fetchArraySize < table size", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize - 3; - var maxRowsVal = fetchArraySizeVal; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.1.5 maxRows = oracledb.fetchArraySize < table size", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize - 3; + let maxRowsVal = fetchArraySizeVal; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.1.6 maxRows = oracledb.fetchArraySize = table size", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize; - var maxRowsVal = tableSize; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.1.6 maxRows = oracledb.fetchArraySize = table size", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize; + let maxRowsVal = tableSize; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.1.7 maxRows = oracledb.fetchArraySize > table size", function(done) { - var tableSize = 10; - var fetchArraySizeVal = tableSize + 30; - var maxRowsVal = fetchArraySizeVal; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.1.7 maxRows = oracledb.fetchArraySize > table size", async function() { + let tableSize = 10; + let fetchArraySizeVal = tableSize + 30; + let maxRowsVal = fetchArraySizeVal; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.1.8 maxRows = oracledb.fetchArraySize/10", function(done) { - var tableSize = 100; - var fetchArraySizeVal = 30; - var maxRowsVal = fetchArraySizeVal / 10; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.1.8 maxRows = oracledb.fetchArraySize/10", async function() { + let tableSize = 100; + let fetchArraySizeVal = 30; + let maxRowsVal = fetchArraySizeVal / 10; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.1.9 maxRows = 10 * oracledb.fetchArraySize", function(done) { - var tableSize = 2; - var fetchArraySizeVal = 30; - var maxRowsVal = fetchArraySizeVal * 10; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.1.9 maxRows = 10 * oracledb.fetchArraySize", async function() { + let tableSize = 2; + let fetchArraySizeVal = 30; + let maxRowsVal = fetchArraySizeVal * 10; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.1.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", function(done) { - var tableSize = 200; - var fetchArraySizeVal = tableSize / 10; - var maxRowsVal = fetchArraySizeVal + 50; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.1.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", async function() { + let tableSize = 200; + let fetchArraySizeVal = tableSize / 10; + let maxRowsVal = fetchArraySizeVal + 50; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.1.11 maxRows = 0, fetchArraySize = table size ", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize; - var maxRowsVal = 0; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.1.11 maxRows = 0, fetchArraySize = table size ", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize; + let maxRowsVal = 0; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.1.12 maxRows = (table size - 1), fetchArraySize = table size ", function(done) { - var tableSize = 100; - var fetchArraySizeVal = tableSize; - var maxRowsVal = tableSize - 1; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.1.12 maxRows = (table size - 1), fetchArraySize = table size ", async function() { + let tableSize = 100; + let fetchArraySizeVal = tableSize; + let maxRowsVal = tableSize - 1; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.1.13 fetchArraySize = (table size - 1), maxRows = table size ", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize - 1; - var maxRowsVal = tableSize; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.1.13 fetchArraySize = (table size - 1), maxRows = table size ", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize - 1; + let maxRowsVal = tableSize; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); }); describe("155.2 Streaming clobs with different execute() option fetchArraySize", function() { - afterEach(function(done) { + afterEach(function() { oracledb.maxRows = default_maxRows; - done(); }); - var basicFetchWithExecOption = function(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, cb) { - async.series([ - function(callback) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - callback() ; - } - ); - }, - function(callback) { - insertData(tableSize, callback); - }, - function(callback) { - oracledb.maxRows = maxRowsVal; - connection.execute( - "select * from " + tableName + " where id > " + affectedID + " order by id", - [], - { - fetchArraySize: fetchArraySizeVal - }, - function(err, result) { - should.not.exist(err); - var resultLenExpected = maxRowsVal > (tableSize - affectedID) ? (tableSize - affectedID) : maxRowsVal; - if (maxRowsVal === 0) resultLenExpected = tableSize - affectedID; - should.strictEqual(result.rows.length, resultLenExpected); - verifyResult(result.rows, callback); - } - ); - }, - function(callback) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - callback(); - } - ); + const basicFetchWithExecOption = async function(tableSize, fetchArraySizeVal, maxRowsVal, affectedID) { + await connection.execute(create_table); + await insertData(tableSize); + + oracledb.maxRows = maxRowsVal; + let result = await connection.execute( + "select * from " + tableName + " where id > " + affectedID + " order by id", + [], + { + fetchArraySize: fetchArraySizeVal } - ], cb); + ); + let resultLenExpected = maxRowsVal > (tableSize - affectedID) ? (tableSize - affectedID) : maxRowsVal; + if (maxRowsVal === 0) resultLenExpected = tableSize - affectedID; + assert.strictEqual(result.rows.length, resultLenExpected); + await verifyResult(result.rows); }; - it("155.2.1 maxRows > table size > oracledb.fetchArraySize", function(done) { - var tableSize = 100; - var fetchArraySizeVal = tableSize - 50; - var maxRowsVal = tableSize + 200; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.2.1 maxRows > table size > oracledb.fetchArraySize", async function() { + let tableSize = 100; + let fetchArraySizeVal = tableSize - 50; + let maxRowsVal = tableSize + 200; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.2.2 maxRows > oracledb.fetchArraySize > table size", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize + 30; - var maxRowsVal = tableSize + 50; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.2.2 maxRows > oracledb.fetchArraySize > table size", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize + 30; + let maxRowsVal = tableSize + 50; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.2.3 table size > maxRows > oracledb.fetchArraySize", function(done) { - var tableSize = 199; - var fetchArraySizeVal = tableSize - 130; - var maxRowsVal = tableSize - 50; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.2.3 table size > maxRows > oracledb.fetchArraySize", async function() { + let tableSize = 199; + let fetchArraySizeVal = tableSize - 130; + let maxRowsVal = tableSize - 50; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.2.4 table size > oracledb.fetchArraySize > maxRow", function(done) { - var tableSize = 290; - var fetchArraySizeVal = tableSize - 10; - var maxRowsVal = tableSize - 50; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.2.4 table size > oracledb.fetchArraySize > maxRow", async function() { + let tableSize = 290; + let fetchArraySizeVal = tableSize - 10; + let maxRowsVal = tableSize - 50; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.2.5 maxRows = oracledb.fetchArraySize < table size", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize - 3; - var maxRowsVal = fetchArraySizeVal; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.2.5 maxRows = oracledb.fetchArraySize < table size", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize - 3; + let maxRowsVal = fetchArraySizeVal; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.2.6 maxRows = oracledb.fetchArraySize = table size", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize; - var maxRowsVal = tableSize; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.2.6 maxRows = oracledb.fetchArraySize = table size", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize; + let maxRowsVal = tableSize; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.2.7 maxRows = oracledb.fetchArraySize > table size", function(done) { - var tableSize = 10; - var fetchArraySizeVal = tableSize + 30; - var maxRowsVal = fetchArraySizeVal; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.2.7 maxRows = oracledb.fetchArraySize > table size", async function() { + let tableSize = 10; + let fetchArraySizeVal = tableSize + 30; + let maxRowsVal = fetchArraySizeVal; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.2.8 maxRows = oracledb.fetchArraySize/10", function(done) { - var tableSize = 100; - var fetchArraySizeVal = 30; - var maxRowsVal = fetchArraySizeVal / 10; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.2.8 maxRows = oracledb.fetchArraySize/10", async function() { + let tableSize = 100; + let fetchArraySizeVal = 30; + let maxRowsVal = fetchArraySizeVal / 10; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.2.9 maxRows = 10 * oracledb.fetchArraySize", function(done) { - var tableSize = 2; - var fetchArraySizeVal = 30; - var maxRowsVal = fetchArraySizeVal * 10; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.2.9 maxRows = 10 * oracledb.fetchArraySize", async function() { + let tableSize = 2; + let fetchArraySizeVal = 30; + let maxRowsVal = fetchArraySizeVal * 10; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.2.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", function(done) { - var tableSize = 200; - var fetchArraySizeVal = tableSize / 10; - var maxRowsVal = fetchArraySizeVal + 50; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.2.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", async function() { + let tableSize = 200; + let fetchArraySizeVal = tableSize / 10; + let maxRowsVal = fetchArraySizeVal + 50; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.2.11 maxRows = 0, fetchArraySize = table size ", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize; - var maxRowsVal = 0; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.2.11 maxRows = 0, fetchArraySize = table size ", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize; + let maxRowsVal = 0; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.2.12 maxRows = (table size - 1), fetchArraySize = table size ", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize; - var maxRowsVal = tableSize - 1; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.2.12 maxRows = (table size - 1), fetchArraySize = table size ", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize; + let maxRowsVal = tableSize - 1; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("155.2.13 fetchArraySize = (table size - 1), maxRows = table size ", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize - 1; - var maxRowsVal = tableSize; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("155.2.13 fetchArraySize = (table size - 1), maxRows = table size ", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize - 1; + let maxRowsVal = tableSize; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); }); - var insertData = function(tableSize, cb) { - var insert_data = "BEGIN \n" + + let insertData = async function(tableSize) { + const insert_data = "BEGIN \n" + " FOR i IN 1.." + tableSize + " LOOP \n" + " EXECUTE IMMEDIATE (' \n" + " insert into " + tableName + " values (' || i || ',''CLOB' || to_char(i) || ''') \n" + @@ -399,65 +340,25 @@ describe("155. fetchArraySize8.js", function() { " commit; \n" + "END; "; - async.series([ - function(callback) { - connection.execute( - insert_data, - function(err) { - should.not.exist(err); - callback(); - } - ); - }, - function(callback) { - connection.execute( - "select id from " + tableName, - function(err, result) { - should.not.exist(err); - should.strictEqual(result.rows.length, tableSize); - callback(); - } - ); - } - ], cb); - }; - - var verifyResult = function(rows, cb) { - async.eachSeries( - rows, - verifyEachRow, - function(err) { - should.not.exist(err); - return cb(); - } + await connection.execute(insert_data); + let result = await connection.execute( + "select id from " + tableName ); + assert.strictEqual(result.rows.length, tableSize); }; - var verifyEachRow = function(row, cb) { - var id = row[0]; - should.strictEqual(row[0], id); - var lob = row[1]; - should.exist(lob); - lob.setEncoding('utf8'); - var clobData = ''; + const verifyResult = async function(rows) { + for (let row of rows) { + await verifyEachRow(row); + } + }; - lob.on('data', function(chunk) { - clobData += chunk; - }); - - lob.on('error', function(err) { - should.not.exist(err); - }); - - lob.on('end', function(err) { - should.not.exist(err); - should.strictEqual(clobData, "CLOB" + String(id)); - }); - - lob.on('close', function(err) { - should.not.exist(err); - cb(err); - }); + const verifyEachRow = async function(row) { + const id = row[0]; + assert.strictEqual(row[0], id); + const lob = row[1]; + const clobData = await lob.getData(); + assert.strictEqual(clobData, "CLOB" + String(id)); }; }); diff --git a/test/fetchArraySize9.js b/test/fetchArraySize9.js index f5b05578..2cce6cd8 100644 --- a/test/fetchArraySize9.js +++ b/test/fetchArraySize9.js @@ -33,17 +33,15 @@ 'use strict'; const oracledb = require('oracledb'); -const should = require('should'); -const async = require('async'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); -const assist = require('./dataTypeAssist.js'); describe("156. fetchArraySize9.js", function() { let connection = null; - var default_fetcArraySize = oracledb.fetchArraySize; - var default_maxRows = oracledb.maxRows; - var tableName = "nodb_fetchArraySize_156"; + let default_fetcArraySize = oracledb.fetchArraySize; + let default_maxRows = oracledb.maxRows; + const tableName = "nodb_fetchArraySize_156"; const create_table = "BEGIN \n" + " DECLARE \n" + @@ -65,400 +63,306 @@ describe("156. fetchArraySize9.js", function() { const drop_table = "DROP TABLE " + tableName + " PURGE"; - before(function(done) { - oracledb.getConnection(dbConfig, function(err, conn) { - should.strictEqual(default_fetcArraySize, 100); - should.strictEqual(default_maxRows, 0); - should.not.exist(err); - connection = conn; - done(); - }); + before(async function() { + connection = await oracledb.getConnection(dbConfig); + assert.strictEqual(default_fetcArraySize, 100); + assert.strictEqual(default_maxRows, 0); }); - after(function(done) { - connection.close(function(err) { - should.not.exist(err); - done(); - }); + after(async function() { + await connection.close(); }); describe("156.1 Streaming blobs with different oracledb.fetchArraySize", function() { - afterEach(function(done) { + afterEach(function() { oracledb.fetchArraySize = default_fetcArraySize; oracledb.maxRows = default_maxRows; - done(); }); - var basicFetchWithGlobalOption = function(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, cb) { - async.series([ - function(callback) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - callback() ; - } - ); - }, - function(callback) { - insertData(tableSize, callback); - }, - function(callback) { - oracledb.fetchArraySize = fetchArraySizeVal; - oracledb.maxRows = maxRowsVal; - connection.execute( - "select * from " + tableName + " where id > " + affectedID + " order by id", - function(err, result) { - should.not.exist(err); - var resultLenExpected = maxRowsVal > (tableSize - affectedID) ? (tableSize - affectedID) : maxRowsVal; - if (maxRowsVal === 0) resultLenExpected = tableSize - affectedID; - should.strictEqual(result.rows.length, resultLenExpected); - verifyResult(result.rows, callback); - } - ); - }, - function(callback) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - callback(); - } - ); - } - ], cb); + const basicFetchWithGlobalOption = async function(tableSize, fetchArraySizeVal, maxRowsVal, affectedID) { + await connection.execute(create_table); + await insertData(tableSize); + oracledb.fetchArraySize = fetchArraySizeVal; + oracledb.maxRows = maxRowsVal; + let result = await connection.execute( + "select * from " + tableName + " where id > " + affectedID + " order by id" + ); + let resultLenExpected = maxRowsVal > (tableSize - affectedID) ? (tableSize - affectedID) : maxRowsVal; + if (maxRowsVal === 0) resultLenExpected = tableSize - affectedID; + assert.strictEqual(result.rows.length, resultLenExpected); + await verifyResult(result.rows); + + await connection.execute(drop_table); }; - it("156.1.1 maxRows > table size > oracledb.fetchArraySize", function(done) { - var tableSize = 100; - var fetchArraySizeVal = tableSize - 50; - var maxRowsVal = tableSize + 200; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.1.1 maxRows > table size > oracledb.fetchArraySize", async function() { + let tableSize = 100; + let fetchArraySizeVal = tableSize - 50; + let maxRowsVal = tableSize + 200; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.1.2 maxRows > oracledb.fetchArraySize > table size", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize + 30; - var maxRowsVal = tableSize + 50; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.1.2 maxRows > oracledb.fetchArraySize > table size", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize + 30; + let maxRowsVal = tableSize + 50; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.1.3 table size > maxRows > oracledb.fetchArraySize", function(done) { - var tableSize = 199; - var fetchArraySizeVal = tableSize - 130; - var maxRowsVal = tableSize - 50; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.1.3 table size > maxRows > oracledb.fetchArraySize", async function() { + let tableSize = 199; + let fetchArraySizeVal = tableSize - 130; + let maxRowsVal = tableSize - 50; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.1.4 table size > oracledb.fetchArraySize > maxRow", function(done) { - var tableSize = 290; - var fetchArraySizeVal = tableSize - 90; - var maxRowsVal = tableSize - 150; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.1.4 table size > oracledb.fetchArraySize > maxRow", async function() { + let tableSize = 290; + let fetchArraySizeVal = tableSize - 90; + let maxRowsVal = tableSize - 150; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.1.5 maxRows = oracledb.fetchArraySize < table size", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize - 3; - var maxRowsVal = fetchArraySizeVal; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.1.5 maxRows = oracledb.fetchArraySize < table size", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize - 3; + let maxRowsVal = fetchArraySizeVal; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.1.6 maxRows = oracledb.fetchArraySize = table size", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize; - var maxRowsVal = tableSize; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.1.6 maxRows = oracledb.fetchArraySize = table size", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize; + let maxRowsVal = tableSize; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.1.7 maxRows = oracledb.fetchArraySize > table size", function(done) { - var tableSize = 10; - var fetchArraySizeVal = tableSize + 30; - var maxRowsVal = fetchArraySizeVal; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.1.7 maxRows = oracledb.fetchArraySize > table size", async function() { + let tableSize = 10; + let fetchArraySizeVal = tableSize + 30; + let maxRowsVal = fetchArraySizeVal; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.1.8 maxRows = oracledb.fetchArraySize/10", function(done) { - var tableSize = 100; - var fetchArraySizeVal = 30; - var maxRowsVal = fetchArraySizeVal / 10; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.1.8 maxRows = oracledb.fetchArraySize/10", async function() { + let tableSize = 100; + let fetchArraySizeVal = 30; + let maxRowsVal = fetchArraySizeVal / 10; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.1.9 maxRows = 10 * oracledb.fetchArraySize", function(done) { - var tableSize = 2; - var fetchArraySizeVal = 30; - var maxRowsVal = fetchArraySizeVal * 10; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.1.9 maxRows = 10 * oracledb.fetchArraySize", async function() { + let tableSize = 2; + let fetchArraySizeVal = 30; + let maxRowsVal = fetchArraySizeVal * 10; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.1.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", function(done) { - var tableSize = 200; - var fetchArraySizeVal = tableSize / 10; - var maxRowsVal = fetchArraySizeVal + 50; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.1.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", async function() { + let tableSize = 200; + let fetchArraySizeVal = tableSize / 10; + let maxRowsVal = fetchArraySizeVal + 50; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.1.11 maxRows = 0, fetchArraySize = table size ", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize; - var maxRowsVal = 0; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.1.11 maxRows = 0, fetchArraySize = table size ", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize; + let maxRowsVal = 0; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.1.12 maxRows = (table size - 1), fetchArraySize = table size ", function(done) { - var tableSize = 100; - var fetchArraySizeVal = tableSize; - var maxRowsVal = tableSize - 1; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.1.12 maxRows = (table size - 1), fetchArraySize = table size ", async function() { + let tableSize = 100; + let fetchArraySizeVal = tableSize; + let maxRowsVal = tableSize - 1; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.1.13 fetchArraySize = (table size - 1), maxRows = table size ", function(done) { - var tableSize = 100; - var fetchArraySizeVal = tableSize - 1; - var maxRowsVal = tableSize; - var affectedID = 0; - basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.1.13 fetchArraySize = (table size - 1), maxRows = table size ", async function() { + let tableSize = 100; + let fetchArraySizeVal = tableSize - 1; + let maxRowsVal = tableSize; + let affectedID = 0; + await basicFetchWithGlobalOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); }); describe("156.2 Streaming blobs with different execute() option fetchArraySize", function() { - afterEach(function(done) { + afterEach(function() { oracledb.maxRows = default_maxRows; - done(); }); - var basicFetchWithExecOption = function(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, cb) { - async.series([ - function(callback) { - connection.execute( - create_table, - function(err) { - should.not.exist(err); - callback() ; - } - ); - }, - function(callback) { - insertData(tableSize, callback); - }, - function(callback) { - oracledb.maxRows = maxRowsVal; - connection.execute( - "select * from " + tableName + " where id > " + affectedID + " order by id", - [], - { - fetchArraySize: fetchArraySizeVal - }, - function(err, result) { - should.not.exist(err); - var resultLenExpected = maxRowsVal > (tableSize - affectedID) ? (tableSize - affectedID) : maxRowsVal; - if (maxRowsVal === 0) resultLenExpected = tableSize - affectedID; - should.strictEqual(result.rows.length, resultLenExpected); - verifyResult(result.rows, callback); - } - ); - }, - function(callback) { - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - callback(); - } - ); + let basicFetchWithExecOption = async function(tableSize, fetchArraySizeVal, maxRowsVal, affectedID) { + await connection.execute(create_table); + await insertData(tableSize); + + oracledb.maxRows = maxRowsVal; + let result = await connection.execute( + "select * from " + tableName + " where id > " + affectedID + " order by id", + [], + { + fetchArraySize: fetchArraySizeVal } - ], cb); + ); + let resultLenExpected = maxRowsVal > (tableSize - affectedID) ? (tableSize - affectedID) : maxRowsVal; + if (maxRowsVal === 0) resultLenExpected = tableSize - affectedID; + assert.strictEqual(result.rows.length, resultLenExpected); + await verifyResult(result.rows); + + await connection.execute(drop_table); }; - it("156.2.1 maxRows > table size > oracledb.fetchArraySize", function(done) { - var tableSize = 100; - var fetchArraySizeVal = tableSize - 50; - var maxRowsVal = tableSize + 200; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.2.1 maxRows > table size > oracledb.fetchArraySize", async function() { + let tableSize = 100; + let fetchArraySizeVal = tableSize - 50; + let maxRowsVal = tableSize + 200; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.2.2 maxRows > oracledb.fetchArraySize > table size", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize + 30; - var maxRowsVal = tableSize + 50; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.2.2 maxRows > oracledb.fetchArraySize > table size", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize + 30; + let maxRowsVal = tableSize + 50; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.2.3 table size > maxRows > oracledb.fetchArraySize", function(done) { - var tableSize = 199; - var fetchArraySizeVal = tableSize - 30; - var maxRowsVal = tableSize - 10; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.2.3 table size > maxRows > oracledb.fetchArraySize", async function() { + let tableSize = 199; + let fetchArraySizeVal = tableSize - 30; + let maxRowsVal = tableSize - 10; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.2.4 table size > oracledb.fetchArraySize > maxRow", function(done) { - var tableSize = 290; - var fetchArraySizeVal = tableSize - 90; - var maxRowsVal = tableSize - 150; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.2.4 table size > oracledb.fetchArraySize > maxRow", async function() { + let tableSize = 290; + let fetchArraySizeVal = tableSize - 90; + let maxRowsVal = tableSize - 150; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.2.5 maxRows = oracledb.fetchArraySize < table size", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize - 3; - var maxRowsVal = fetchArraySizeVal; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.2.5 maxRows = oracledb.fetchArraySize < table size", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize - 3; + let maxRowsVal = fetchArraySizeVal; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.2.6 maxRows = oracledb.fetchArraySize = table size", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize; - var maxRowsVal = tableSize; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.2.6 maxRows = oracledb.fetchArraySize = table size", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize; + let maxRowsVal = tableSize; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.2.7 maxRows = oracledb.fetchArraySize > table size", function(done) { - var tableSize = 10; - var fetchArraySizeVal = tableSize + 30; - var maxRowsVal = fetchArraySizeVal; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.2.7 maxRows = oracledb.fetchArraySize > table size", async function() { + let tableSize = 10; + let fetchArraySizeVal = tableSize + 30; + let maxRowsVal = fetchArraySizeVal; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.2.8 maxRows = oracledb.fetchArraySize/10", function(done) { - var tableSize = 100; - var fetchArraySizeVal = 30; - var maxRowsVal = fetchArraySizeVal / 10; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.2.8 maxRows = oracledb.fetchArraySize/10", async function() { + let tableSize = 100; + let fetchArraySizeVal = 30; + let maxRowsVal = fetchArraySizeVal / 10; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.2.9 maxRows = 10 * oracledb.fetchArraySize", function(done) { - var tableSize = 2; - var fetchArraySizeVal = 30; - var maxRowsVal = fetchArraySizeVal * 10; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.2.9 maxRows = 10 * oracledb.fetchArraySize", async function() { + let tableSize = 2; + let fetchArraySizeVal = 30; + let maxRowsVal = fetchArraySizeVal * 10; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.2.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", function(done) { - var tableSize = 200; - var fetchArraySizeVal = tableSize / 10; - var maxRowsVal = tableSize / 10 + 50; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.2.10 maxRows > fetchArraySize, fetchArraySize = (table size)/10", async function() { + let tableSize = 200; + let fetchArraySizeVal = tableSize / 10; + let maxRowsVal = tableSize / 10 + 50; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.2.11 maxRows = 0, fetchArraySize = table size ", function(done) { - var tableSize = 20; - var fetchArraySizeVal = tableSize; - var maxRowsVal = 0; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.2.11 maxRows = 0, fetchArraySize = table size ", async function() { + let tableSize = 20; + let fetchArraySizeVal = tableSize; + let maxRowsVal = 0; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.2.12 maxRows = (table size - 1), fetchArraySize = table size ", function(done) { - var tableSize = 100; - var fetchArraySizeVal = tableSize; - var maxRowsVal = tableSize - 1; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.2.12 maxRows = (table size - 1), fetchArraySize = table size ", async function() { + let tableSize = 100; + let fetchArraySizeVal = tableSize; + let maxRowsVal = tableSize - 1; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); - it("156.2.13 fetchArraySize = (table size - 1), maxRows = table size ", function(done) { - var tableSize = 100; - var fetchArraySizeVal = tableSize - 1; - var maxRowsVal = tableSize; - var affectedID = 0; - basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID, done); + it("156.2.13 fetchArraySize = (table size - 1), maxRows = table size ", async function() { + let tableSize = 100; + let fetchArraySizeVal = tableSize - 1; + let maxRowsVal = tableSize; + let affectedID = 0; + await basicFetchWithExecOption(tableSize, fetchArraySizeVal, maxRowsVal, affectedID); }); }); - var insertData = function(tableSize, cb) { - var insert_data = "DECLARE \n" + - " tmpchar VARCHAR2(2000); \n" + - " tmplob BLOB; \n" + - "BEGIN \n" + - " FOR i IN 1.." + tableSize + " LOOP \n" + - " select to_char(i) into tmpchar from dual; \n" + - " select utl_raw.cast_to_raw(tmpchar) into tmplob from dual; \n" + - " insert into " + tableName + " values (i, tmplob); \n" + - " END LOOP; \n" + - " commit; \n" + - "END; "; - async.series([ - function(callback) { - connection.execute( - insert_data, - function(err) { - should.not.exist(err); - callback(); - } - ); - }, - function(callback) { - connection.execute( - "select id from " + tableName, - function(err, result) { - should.not.exist(err); - should.strictEqual(result.rows.length, tableSize); - callback(); - } - ); - } - ], cb); - }; - - var verifyResult = function(rows, cb) { - async.eachSeries( - rows, - verifyEachRow, - function(err) { - should.not.exist(err); - return cb(); - } + const insertData = async function(tableSize) { + const insert_data = "DECLARE \n" + + " tmpchar VARCHAR2(2000); \n" + + " tmplob BLOB; \n" + + "BEGIN \n" + + " FOR i IN 1.." + tableSize + " LOOP \n" + + " select to_char(i) into tmpchar from dual; \n" + + " select utl_raw.cast_to_raw(tmpchar) into tmplob from dual; \n" + + " insert into " + tableName + " values (i, tmplob); \n" + + " END LOOP; \n" + + " commit; \n" + + "END; "; + await connection.execute(insert_data); + const result = await connection.execute( + "select id from " + tableName ); + assert.strictEqual(result.rows.length, tableSize); }; - var verifyEachRow = function(row, cb) { - var id = row[0]; - var lob = row[1]; - should.exist(lob); - var blobData = 0; - var totalLength = 0; - blobData = Buffer.alloc(0); + const verifyResult = async function(rows) { + for (let row of rows) { + await verifyEachRow(row); + } + }; - lob.on('data', function(chunk) { - totalLength = totalLength + chunk.length; - blobData = Buffer.concat([blobData, chunk], totalLength); - }); - - lob.on('error', function(err) { - should.not.exist(err, "lob.on 'error' event."); - }); - - lob.on('end', function(err) { - should.not.exist(err); - var expected = Buffer.from((String(id)), "utf-8"); - should.strictEqual(assist.compare2Buffers(blobData, expected), true); - cb(err); - }); + const verifyEachRow = async function(row) { + const id = row[0]; + const lob = row[1]; + const blobData = await lob.getData(); + const expected = Buffer.from((String(id)), "utf-8"); + assert.deepStrictEqual(blobData, expected); }; }); diff --git a/test/fetchAs.js b/test/fetchAs.js index 1b8824a7..941a0a02 100644 --- a/test/fetchAs.js +++ b/test/fetchAs.js @@ -32,8 +32,7 @@ 'use strict'; const oracledb = require ('oracledb'); -const should = require ('should'); -const async = require ('async'); +const assert = require('assert'); const dbConfig = require ('./dbconfig.js'); const assist = require ('./dataTypeAssist.js'); @@ -41,61 +40,49 @@ const assist = require ('./dataTypeAssist.js'); describe('56. fetchAs.js', function() { let connection = null; - beforeEach('get one connection', function(done) { - oracledb.getConnection(dbConfig, function(err, conn) { - should.not.exist(err); - connection = conn; - done(); - }); + beforeEach('get one connection', async function() { + connection = await oracledb.getConnection(dbConfig); }); - afterEach('release connection, reset fetchAsString property', function(done) { + afterEach('release connection, reset fetchAsString property', async function() { oracledb.fetchAsString = []; - connection.close(function(err) { - should.not.exist(err); - done(); - }); + await connection.close(); }); it('56.1 property value check', function() { - (oracledb.fetchAsString).should.eql([]); + assert.deepStrictEqual(oracledb.fetchAsString, []); oracledb.fetchAsString = [oracledb.DATE]; - should.deepEqual(oracledb.fetchAsString, [ oracledb.DATE ]); + assert.deepStrictEqual(oracledb.fetchAsString, [ oracledb.DATE ]); oracledb.fetchAsString = [ oracledb.NUMBER ]; - should.deepEqual(oracledb.fetchAsString, [ oracledb.NUMBER ]); + assert.deepStrictEqual(oracledb.fetchAsString, [ oracledb.NUMBER ]); oracledb.fetchAsString = [ oracledb.DATE, oracledb.NUMBER ]; - should.deepEqual(oracledb.fetchAsString, [ oracledb.DATE, oracledb.NUMBER ]); + assert.deepStrictEqual(oracledb.fetchAsString, [ oracledb.DATE, oracledb.NUMBER ]); oracledb.fetchAsString = [ oracledb.DB_TYPE_JSON ]; - should.deepEqual(oracledb.fetchAsString, [ oracledb.DB_TYPE_JSON ]); + assert.deepStrictEqual(oracledb.fetchAsString, [ oracledb.DB_TYPE_JSON ]); oracledb.fetchAsString = [ oracledb.DB_TYPE_JSON, oracledb.DATE, oracledb.NUMBER ]; - should.deepEqual(oracledb.fetchAsString, [ oracledb.DB_TYPE_JSON, oracledb.DATE, oracledb.NUMBER ]); + assert.deepStrictEqual(oracledb.fetchAsString, [ oracledb.DB_TYPE_JSON, oracledb.DATE, oracledb.NUMBER ]); }); - it('56.2 Fetch DATE column values as STRING - by-Column name', function(done) { - connection.execute( + it('56.2 Fetch DATE column values as STRING - by-Column name', async function() { + let result = await connection.execute( "SELECT TO_DATE('2005-01-06', 'YYYY-DD-MM') AS TS_DATE FROM DUAL", [], { outFormat: oracledb.OUT_FORMAT_OBJECT, fetchInfo : { "TS_DATE": { type : oracledb.STRING } } - }, - function(err, result) { - should.not.exist(err); - // console.log(result.rows[0]); - result.rows[0].TS_DATE.should.be.a.String(); - done(); } ); + assert.strictEqual(typeof result.rows[0].TS_DATE, "string"); }); - it('56.3 Fetch DATE, NUMBER column values STRING - by Column-name', function(done) { - connection.execute( + it('56.3 Fetch DATE, NUMBER column values STRING - by Column-name', async function() { + let result = await connection.execute( "SELECT 1234567 AS TS_NUM, TO_TIMESTAMP('1999-12-01 11:10:01.00123', 'YYYY-MM-DD HH:MI:SS.FF') AS TS_DATE FROM DUAL", [], { @@ -105,22 +92,17 @@ describe('56. fetchAs.js', function() { "TS_DATE" : { type : oracledb.STRING }, "TS_NUM" : { type : oracledb.STRING } } - }, - function(err, result) { - should.not.exist(err); - // console.log(result.rows[0]); - result.rows[0].TS_DATE.should.be.a.String(); - result.rows[0].TS_NUM.should.be.a.String(); - Number(result.rows[0].TS_NUM).should.equal(1234567); - done(); } ); + assert.strictEqual(typeof result.rows[0].TS_DATE, "string"); + assert.strictEqual(typeof result.rows[0].TS_NUM, "string"); + assert.strictEqual(Number(result.rows[0].TS_NUM), 1234567); }); - it('56.4 Fetch DATE, NUMBER as STRING by-time configuration and by-name', function(done) { + it('56.4 Fetch DATE, NUMBER as STRING by-time configuration and by-name', async function() { oracledb.fetchAsString = [ oracledb.DATE, oracledb.NUMBER ]; - connection.execute( + let result = await connection.execute( "SELECT 1234567 AS TS_NUM, TO_TIMESTAMP('1999-12-01 11:10:01.00123', 'YYYY-MM-DD HH:MI:SS.FF') AS TS_DATE FROM DUAL", [], { @@ -130,22 +112,17 @@ describe('56. fetchAs.js', function() { "TS_DATE" : { type : oracledb.STRING }, "TS_NUM" : { type : oracledb.STRING } } - }, - function(err, result) { - should.not.exist(err); - // console.log(result.rows[0]); - result.rows[0].TS_DATE.should.be.a.String(); - result.rows[0].TS_NUM.should.be.a.String(); - Number(result.rows[0].TS_NUM).should.equal(1234567); - done(); } ); + assert.strictEqual(typeof result.rows[0].TS_DATE, "string"); + assert.strictEqual(typeof result.rows[0].TS_NUM, "string"); + assert.strictEqual(Number(result.rows[0].TS_NUM), 1234567); }); - it('56.5 Fetch DATE, NUMBER column as STRING by-type and override at execute time', function(done) { + it('56.5 Fetch DATE, NUMBER column as STRING by-type and override at execute time', async function() { oracledb.fetchAsString = [ oracledb.DATE, oracledb.NUMBER ]; - connection.execute( + let result = await connection.execute( "SELECT 1234567 AS TS_NUM, TO_TIMESTAMP('1999-12-01 11:10:01.00123', 'YYYY-MM-DD HH:MI:SS.FF') AS TS_DATE FROM DUAL", [], { @@ -155,20 +132,15 @@ describe('56. fetchAs.js', function() { "TS_DATE" : { type : oracledb.DEFAULT }, "TS_NUM" : { type : oracledb.STRING } } - }, - function(err, result) { - should.not.exist(err); - // console.log(result.rows[0]); - result.rows[0].TS_DATE.should.be.an.Object; - result.rows[0].TS_NUM.should.be.a.String(); - Number(result.rows[0].TS_NUM).should.equal(1234567); - done(); } ); + assert.strictEqual(typeof result.rows[0].TS_DATE, "object"); + assert.strictEqual(typeof result.rows[0].TS_NUM, "string"); + assert.strictEqual(Number(result.rows[0].TS_NUM), 1234567); }); - it('56.6 Fetch ROWID column values STRING - non-ResultSet', function(done) { - connection.execute( + it('56.6 Fetch ROWID column values STRING - non-ResultSet', async function() { + let result = await connection.execute( "SELECT ROWID from DUAL", [], { @@ -177,18 +149,13 @@ describe('56. fetchAs.js', function() { { "ROWID" : { type : oracledb.STRING } } - }, - function(err, result) { - should.not.exist(err); - // console.log(result.rows[0].TS_DATA); - result.rows[0].ROWID.should.be.a.String(); - done(); } ); + assert.strictEqual(typeof result.rows[0].ROWID, "string"); }); - it('56.7 Fetch ROWID column values STRING - ResultSet', function(done) { - connection.execute( + it('56.7 Fetch ROWID column values STRING - ResultSet', async function() { + let result = await connection.execute( "SELECT ROWID from DUAL", [], { @@ -198,21 +165,11 @@ describe('56. fetchAs.js', function() { { "ROWID" : { type : oracledb.STRING } } - }, - function(err, result) { - should.not.exist(err); - - result.resultSet.getRow(function(err, row) { - should.not.exist(err); - // console.log(row); - row.ROWID.should.be.a.String(); - result.resultSet.close(function(err) { - should.not.exist(err); - done(); - }); - }); } ); + let row = await result.resultSet.getRow(); + assert.strictEqual(typeof row.ROWID, "string"); + await result.resultSet.close(); }); /* @@ -221,7 +178,7 @@ describe('56. fetchAs.js', function() { * Numbers out of above range will be rounded. * The last element is out of Oracle database standard Number range. It will be rounded by database. */ - var numStrs = + let numStrs = [ '17249138680355831', '-17249138680355831', @@ -230,7 +187,7 @@ describe('56. fetchAs.js', function() { '0.1724913868035583123456789123456789123456' ]; - var numResults = + let numResults = [ '17249138680355831', '-17249138680355831', @@ -239,9 +196,9 @@ describe('56. fetchAs.js', function() { '.172491386803558312345678912345678912346' ]; - it('56.8 large numbers with fetchInfo', function(done) { - async.eachSeries(numStrs, function(element, callback) { - connection.execute( + it('56.8 large numbers with fetchInfo', async function() { + for (let element of numStrs) { + let result = await connection.execute( "SELECT TO_NUMBER( " + element + " ) AS TS_NUM FROM DUAL", [], { @@ -250,62 +207,49 @@ describe('56. fetchAs.js', function() { { "TS_NUM" : { type : oracledb.STRING } } - }, - function(err, result) { - should.not.exist(err); - result.rows[0].TS_NUM.should.be.a.String(); - (result.rows[0].TS_NUM).should.eql(numResults[numStrs.indexOf(element)]); - callback(); } ); - }, function(err) { - should.not.exist(err); - done(); - }); + assert.strictEqual(typeof result.rows[0].TS_NUM, "string"); + assert.strictEqual(result.rows[0].TS_NUM, numResults[numStrs.indexOf(element)]); + } }); - it('56.9 large numbers with setting fetchAsString property', function(done) { + it('56.9 large numbers with setting fetchAsString property', async function() { oracledb.fetchAsString = [ oracledb.NUMBER ]; - async.eachSeries(numStrs, function(element, callback) { - connection.execute( + for (let element of numStrs) { + let result = await connection.execute( "SELECT TO_NUMBER( " + element + " ) AS TS_NUM FROM DUAL", [], - { outFormat : oracledb.OUT_FORMAT_OBJECT }, - function(err, result) { - should.not.exist(err); - // console.log(result.rows[0].TS_NUM); - result.rows[0].TS_NUM.should.be.a.String(); - (result.rows[0].TS_NUM).should.eql(numResults[numStrs.indexOf(element)]); - callback(); - } + { outFormat : oracledb.OUT_FORMAT_OBJECT } ); - }, function(err) { - should.not.exist(err); - done(); - }); + assert.strictEqual(typeof result.rows[0].TS_NUM, "string"); + assert.strictEqual(result.rows[0].TS_NUM, numResults[numStrs.indexOf(element)]); + } }); // FetchInfo format should : {type : oracledb. } - it('56.10 invalid syntax for type should result in error', function(done) { - connection.execute ( - "SELECT SYSDATE AS THE_DATE FROM DUAL", - { }, - { fetchInfo : { "THE_DATE" : oracledb.STRING }}, - function(err) { - should.exist (err) ; - should.strictEqual(err.message, 'NJS-015: type was not specified for conversion'); - done (); - }); + it('56.10 invalid syntax for type should result in error', async function() { + await assert.rejects( + async () => { + await connection.execute( + "SELECT SYSDATE AS THE_DATE FROM DUAL", + { }, + { fetchInfo : { "THE_DATE" : oracledb.STRING }} + ); + }, + // NJS-015: type was not specified for conversion + / NJS-015:/ + ); }); it('56.11 assigns an empty array to fetchAsString', function() { oracledb.fetchAsString = []; - (oracledb.fetchAsString).should.eql([]); + assert.deepStrictEqual(oracledb.fetchAsString, []); }); it('56.12 Negative - empty string', function() { - should.throws( + assert.throws( function() { oracledb.fetchAsString = ''; }, @@ -314,7 +258,7 @@ describe('56. fetchAs.js', function() { }); it('56.13 Negative - null', function() { - should.throws( + assert.throws( function() { oracledb.fetchAsString = null; }, @@ -323,7 +267,7 @@ describe('56. fetchAs.js', function() { }); it('56.14 Negative - undefined', function() { - should.throws( + assert.throws( function() { oracledb.fetchAsString = undefined; }, @@ -332,7 +276,7 @@ describe('56. fetchAs.js', function() { }); it('56.15 Negative - NaN', function() { - should.throws( + assert.throws( function() { oracledb.fetchAsString = NaN; }, @@ -341,7 +285,7 @@ describe('56. fetchAs.js', function() { }); it('56.16 Negative - invalid type of value, number', function() { - should.throws( + assert.throws( function() { oracledb.fetchAsString = 10; }, @@ -350,7 +294,7 @@ describe('56. fetchAs.js', function() { }); it('56.17 Negative - invalid type of value, string', function() { - should.throws( + assert.throws( function() { oracledb.fetchAsString = 'abc'; }, @@ -358,64 +302,54 @@ describe('56. fetchAs.js', function() { ); }); - it('56.18 Negative - passing oracledb.DATE type to fetchInfo', function(done) { - connection.execute( - "select sysdate as ts_date from dual", - { }, - { - fetchInfo: { ts_date: { type: oracledb.DATE } } - }, - function(err, result) { - should.exist(err); - should.strictEqual( - err.message, - 'NJS-021: invalid type for conversion specified' + it('56.18 Negative - passing oracledb.DATE type to fetchInfo', async function() { + await assert.rejects( + async () => { + await connection.execute( + "select sysdate as ts_date from dual", + { }, + { + fetchInfo: { ts_date: { type: oracledb.DATE } } + } ); - should.not.exist(result); - done(); - } + }, + // NJS-021: invalid type for conversion specified + /NJS-021:/ ); }); - it('56.19 Negative - passing empty JSON to fetchInfo', function(done) { - connection.execute( + it('56.19 Negative - passing empty JSON to fetchInfo', async function() { + let result = await connection.execute( "select sysdate as ts_date from dual", { }, { fetchInfo: {} - }, - function(err, result) { - should.not.exist(err); - should.exist(result); - (result.rows[0][0]).should.be.a.Date(); - done(); } ); + assert(result); + assert.strictEqual(result.rows[0][0] instanceof Date, true); }); - it('56.20 Negative - passing oracledb.NUMBER type to fetchInfo', function(done) { - connection.execute( - "select sysdate as ts_date from dual", - { }, - { - fetchInfo: { ts_date: { type: oracledb.NUMBER } } - }, - function(err, result) { - should.exist(err); - should.strictEqual( - err.message, - 'NJS-021: invalid type for conversion specified' + it('56.20 Negative - passing oracledb.NUMBER type to fetchInfo', async function() { + await assert.rejects( + async () => { + await connection.execute( + "select sysdate as ts_date from dual", + { }, + { + fetchInfo: { ts_date: { type: oracledb.NUMBER } } + } ); - should.not.exist(result); - done(); - } + }, + // NJS-021: invalid type for conversion specified + /NJS-021:/ ); }); it('56.21 Negative - invalid type of value, Date', function() { - should.throws( + assert.throws( function() { - var dt = new Date (); + let dt = new Date (); oracledb.fetchAsString = dt; }, /NJS-004:/ @@ -423,9 +357,9 @@ describe('56. fetchAs.js', function() { }); it('56.22 Negative - invalid type of value, Buffer', function() { - should.throws( + assert.throws( function() { - var buf = assist.createBuffer (10) ; // arbitary sized buffer + let buf = assist.createBuffer (10) ; // arbitary sized buffer oracledb.fetchAsString = buf; }, /NJS-004:/ diff --git a/test/fetchAsStringWithRefCursor.js b/test/fetchAsStringWithRefCursor.js index 6269f8bb..7cb8883e 100644 --- a/test/fetchAsStringWithRefCursor.js +++ b/test/fetchAsStringWithRefCursor.js @@ -34,126 +34,72 @@ 'use strict'; const oracledb = require('oracledb'); -const async = require('async'); -const should = require('should'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); describe('139. fetchAsStringWithRefCursor.js', function() { let connection = null; - var tableName = "nodb_tab_fetchAsRefCursor"; + const tableName = "nodb_tab_fetchAsRefCursor"; - before(function(done) { - async.series([ - function(cb) { - oracledb.getConnection(dbConfig, function(err, conn) { - should.not.exist(err); - connection = conn; - cb(); - }); - }, - function createTable(cb) { - let sql = "BEGIN \n" + - " DECLARE \n" + - " e_table_missing EXCEPTION; \n" + - " PRAGMA EXCEPTION_INIT(e_table_missing, -00942);\n" + - " BEGIN \n" + - " EXECUTE IMMEDIATE ('DROP TABLE " + tableName + " PURGE' ); \n" + - " EXCEPTION \n" + - " WHEN e_table_missing \n" + - " THEN NULL; \n" + - " END; \n" + - " EXECUTE IMMEDIATE ( ' \n" + - " CREATE TABLE " + tableName + " ( \n" + - " id NUMBER(10), \n" + - " content VARCHAR2(20), \n" + - " hiredate DATE \n" + - " ) \n" + - " '); \n" + - "END; "; + before(async function() { + connection = await oracledb.getConnection(dbConfig); + // PL/SQL procedure to create the table + let sql = "BEGIN \n" + + " DECLARE \n" + + " e_table_missing EXCEPTION; \n" + + " PRAGMA EXCEPTION_INIT(e_table_missing, -00942);\n" + + " BEGIN \n" + + " EXECUTE IMMEDIATE ('DROP TABLE " + tableName + " PURGE' ); \n" + + " EXCEPTION \n" + + " WHEN e_table_missing \n" + + " THEN NULL; \n" + + " END; \n" + + " EXECUTE IMMEDIATE ( ' \n" + + " CREATE TABLE " + tableName + " ( \n" + + " id NUMBER(10), \n" + + " content VARCHAR2(20), \n" + + " hiredate DATE \n" + + " ) \n" + + " '); \n" + + "END; "; + await connection.execute(sql); - connection.execute( - sql, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function insertData(cb) { - let sql = "DECLARE \n" + - " x NUMBER := 0; \n" + - " n VARCHAR2(20); \n" + - "BEGIN \n" + - " FOR i IN 1..300 LOOP \n" + - " x := x + 1; \n" + - " n := 'staff ' || x; \n" + - " INSERT INTO " + tableName + " VALUES(x, n, TO_DATE('2012-02-18', 'YYYY-MM-DD')); \n" + - " END LOOP; \n" + - "END; "; + // PL/SQL procedure to insert data into the table + sql = "DECLARE \n" + + " x NUMBER := 0; \n" + + " n VARCHAR2(20); \n" + + "BEGIN \n" + + " FOR i IN 1..300 LOOP \n" + + " x := x + 1; \n" + + " n := 'staff ' || x; \n" + + " INSERT INTO " + tableName + " VALUES(x, n, TO_DATE('2012-02-18', 'YYYY-MM-DD')); \n" + + " END LOOP; \n" + + "END; "; + await connection.execute(sql); - connection.execute( - sql, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function createProc(cb) { - let proc = "CREATE OR REPLACE PROCEDURE nodb_proc_fetchcursor (p_in IN NUMBER, p_out OUT SYS_REFCURSOR) \n" + - "AS \n" + - "BEGIN \n" + - " OPEN p_out FOR \n" + - " SELECT * FROM " + tableName + " WHERE id > p_in; \n" + - "END; "; - connection.execute( - proc, - function(err) { - should.not.exist(err); - cb(); - } - ); - } - ], done); + // PL/SQL procedure for the ref cursor + let proc = "CREATE OR REPLACE PROCEDURE nodb_proc_fetchcursor (p_in IN NUMBER, p_out OUT SYS_REFCURSOR) \n" + + "AS \n" + + "BEGIN \n" + + " OPEN p_out FOR \n" + + " SELECT * FROM " + tableName + " WHERE id > p_in; \n" + + "END; "; + await connection.execute(proc); }); - after(function(done) { - async.series([ - function(cb) { - let sql = "DROP PROCEDURE nodb_proc_fetchcursor"; - connection.execute( - sql, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - let sql = "DROP TABLE " + tableName + " PURGE"; - connection.execute( - sql, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.close(function(err) { - should.not.exist(err); - cb(); - }); - }, - function restoreSettings(cb) { - oracledb.fetchAsString = []; - cb(); - } - ], done); + after(async function() { + let sql = "DROP PROCEDURE nodb_proc_fetchcursor"; + await connection.execute(sql); + + sql = "DROP TABLE " + tableName + " PURGE"; + await connection.execute(sql); + + await connection.close(); + oracledb.fetchAsString = []; }); - it('139.1 columns fetched from REF CURSORS can be mapped by fetchInfo settings', function(done) { - connection.execute( + it('139.1 columns fetched from REF CURSORS can be mapped by fetchInfo settings', async function() { + let result = await connection.execute( "begin nodb_proc_fetchcursor(:in, :out); end;", { in: 290, @@ -166,63 +112,48 @@ describe('139. fetchAsStringWithRefCursor.js', function() { "ID": { type: oracledb.STRING }, "HIREDATE": { type: oracledb.STRING } } - }, - function(err, result) { - should.not.exist(err); - fetchRowFromRC(result.outBinds.out, done); } ); - var fetchRowFromRC = function(rc, callback) { - rc.getRow(function(err, row) { - should.not.exist(err); - if (row) { - (row.ID).should.be.a.String(); - (row.HIREDATE).should.be.a.String(); - return fetchRowFromRC(rc, callback); - } else { - rc.close(function(err) { - should.not.exist(err); - callback(); - }); - } - }); + const fetchRowFromRC = async function(rc) { + const row = await rc.getRow(); + if (row) { + assert.strictEqual(typeof row.ID, "string"); + assert.strictEqual(typeof row.HIREDATE, "string"); + return await fetchRowFromRC(rc); + } else { + await rc.close(); + } }; // fetchRowFromRC() + await fetchRowFromRC(result.outBinds.out); + }); // 139.1 - it('139.2 fetchAsString takes effect as well', function(done) { + it('139.2 fetchAsString takes effect as well', async function() { oracledb.fetchAsString = [ oracledb.DATE ]; - connection.execute( + let result = await connection.execute( "begin nodb_proc_fetchcursor(:in, :out); end;", { in: 295, out: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } }, - { outFormat: oracledb.OUT_FORMAT_OBJECT }, - function(err, result) { - should.not.exist(err); - fetchRowFromRC(result.outBinds.out, done); - } + { outFormat: oracledb.OUT_FORMAT_OBJECT } ); - var fetchRowFromRC = function(rc, callback) { - rc.getRow(function(err, row) { - should.not.exist(err); - if (row) { - (row.ID).should.not.be.a.String(); - (row.HIREDATE).should.be.a.String(); - return fetchRowFromRC(rc, callback); - } else { - rc.close(function(err) { - should.not.exist(err); - callback(); - }); - } - }); + const fetchRowFromRC = async function(rc) { + const row = await rc.getRow(); + if (row) { + assert.notStrictEqual(typeof row.ID, "string"); + assert.strictEqual(typeof row.HIREDATE, "string"); + return await fetchRowFromRC(rc); + } else { + await rc.close(); + } }; // fetchRowFromRC() + await fetchRowFromRC(result.outBinds.out); }); // 139.2 }); diff --git a/test/fetchBlobAsBuffer1.js b/test/fetchBlobAsBuffer1.js index 71aab507..7ae0506b 100644 --- a/test/fetchBlobAsBuffer1.js +++ b/test/fetchBlobAsBuffer1.js @@ -38,7 +38,6 @@ const assert = require('assert'); const fs = require('fs'); const dbConfig = require('./dbconfig.js'); const random = require('./random.js'); -const assist = require('./dataTypeAssist.js'); describe('87. fetchBlobAsBuffer1.js', function() { @@ -104,18 +103,6 @@ describe('87. fetchBlobAsBuffer1.js', function() { assert.strictEqual(result.rowsAffected, 1); }; - // compare fetch result - const compareClientFetchResult = async function(resultVal, specialStr, content, contentLength) { - await compareBuffers(resultVal, specialStr, content, contentLength); - }; - - // compare two buffers - const compareBuffers = function(resultVal, specialStr, content, contentLength) { - assert.equal(resultVal.length, contentLength); - const compareBuffer = assist.compare2Buffers(resultVal, content); - assert.strictEqual(compareBuffer, true); - }; - describe('87.1 fetch BLOB columns by setting oracledb.fetchAsBuffer', function() { before('Create table and populate', async function() { @@ -126,16 +113,16 @@ describe('87. fetchBlobAsBuffer1.js', function() { await connection.execute(drop_table1); }); // after - const insertAndFetch = async function(id, specialStr, insertContent, insertContentLength) { + const insertAndFetch = async function(id, specialStr, insertContent) { await insertIntoBlobTable1(id, insertContent); const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE ID = :id", { id : id }); const resultVal = result.rows[0][1]; if (specialStr === null) { - assert.equal(resultVal, null); + assert.strictEqual(resultVal, null); } else { - await compareClientFetchResult(resultVal, specialStr, insertContent, insertContentLength); + assert.deepStrictEqual(resultVal, insertContent); } }; @@ -150,13 +137,13 @@ describe('87. fetchBlobAsBuffer1.js', function() { it('87.1.1 works with NULL value', async function() { const id = insertID++; const content = null; - await insertAndFetch(id, null, content, null); + await insertAndFetch(id, null, content); }); // 87.1.1 it('87.1.2 works with empty Buffer', async function() { const id = insertID++; const content = Buffer.from("", "utf-8"); - await insertAndFetch(id, null, content, null); + await insertAndFetch(id, null, content); }); // 87.1.2 it('87.1.3 works with small value', async function() { @@ -165,7 +152,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { const contentLength = 20; const strBuf = random.getRandomString(contentLength, specialStr); const content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.1.3 it('87.1.4 works with (64K - 1) value', async function() { @@ -174,7 +161,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { const contentLength = 65535; const strBuf = random.getRandomString(contentLength, specialStr); const content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.1.4 it('87.1.5 works with (64K + 1) value', async function() { @@ -183,7 +170,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { const contentLength = 65537; const strBuf = random.getRandomString(contentLength, specialStr); const content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.1.5 it('87.1.6 works with (1MB + 1) data', async function() { @@ -192,7 +179,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { const contentLength = 1048577; // 1MB + 1 const strBuf = random.getRandomString(contentLength, specialStr); const content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.1.6 it('87.1.7 works with dbms_lob.substr()', async function() { @@ -208,13 +195,13 @@ describe('87. fetchBlobAsBuffer1.js', function() { { id : id }); const resultVal = result.rows[0][0]; const buffer2Compare = Buffer.from(specialStr, "utf-8"); - await compareClientFetchResult(resultVal, specialStr, buffer2Compare, specialStrLength); + assert.deepStrictEqual(resultVal, buffer2Compare); }); // 87.1.7 it('87.1.8 works with EMPTY_BLOB()', async function() { const id = insertID++; const content = "EMPTY_BLOB"; - await insertAndFetch(id, null, content, null); + await insertAndFetch(id, null, content); }); // 87.1.8 it('87.1.9 fetch multiple BLOB rows as Buffer', async function() { @@ -233,10 +220,8 @@ describe('87. fetchBlobAsBuffer1.js', function() { const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE ID = " + id_1 + " or id = " + id_2); - let resultVal = result.rows[0][1]; - await compareClientFetchResult(resultVal, specialStr_1, content_1, contentLength_1); - resultVal = result.rows[1][1]; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); + assert.deepStrictEqual(result.rows[0][1], content_1); + assert.deepStrictEqual(result.rows[1][1], content_2); }); // 87.1.9 it('87.1.10 fetch the same BLOB column multiple times', async function() { @@ -248,11 +233,8 @@ describe('87. fetchBlobAsBuffer1.js', function() { await insertIntoBlobTable1(id, content); const result = await connection.execute( "SELECT ID, B AS B1, B AS B2 from nodb_blob1 WHERE ID = " + id); - let resultVal = result.rows[0][1]; - await compareClientFetchResult(resultVal, specialStr, content, contentLength); - resultVal = result.rows[0][2]; - await compareClientFetchResult(resultVal, specialStr, content, contentLength); - + assert.deepStrictEqual(result.rows[0][1], content); + assert.deepStrictEqual(result.rows[0][2], content); }); // 87.1.10 it('87.1.11 works with update statement', async function() { @@ -265,11 +247,10 @@ describe('87. fetchBlobAsBuffer1.js', function() { const contentLength_2 = 200; const strBuf_2 = random.getRandomString(contentLength_2, specialStr_2); const content_2 = Buffer.from(strBuf_2, "utf-8"); - await insertAndFetch(id, specialStr_1, content_1, contentLength_1); + await insertAndFetch(id, specialStr_1, content_1); await updateBlobTable1(id, content_2); const result = await connection.execute("SELECT ID, B from nodb_blob1 WHERE ID = " + id); - const resultVal = result.rows[0][1]; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); + assert.deepStrictEqual(result.rows[0][1], content_2); }); // 87.1.11 it('87.1.12 works with REF CURSOR', async function() { @@ -292,8 +273,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { }; const result = await connection.execute(sql, bindVar); const rows = await result.outBinds.b.getRows(3); - const resultVal = rows[0][0]; - await compareClientFetchResult(resultVal, specialStr, content, contentLength); + assert.deepStrictEqual(rows[0][0], content); await result.outBinds.b.close(); const ref_proc_drop = "DROP PROCEDURE nodb_ref"; await connection.execute(ref_proc_drop); @@ -319,7 +299,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { lob.on('end', lob.destroy); lob.on('close', resolve); }); - await compareClientFetchResult(blobData, specialStr, content, contentLength); + assert.deepStrictEqual(blobData, content); }); // 87.1.13 it('87.1.14 works with setting oracledb.maxRows < actual number of rows in the table', async function() { @@ -341,8 +321,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE id = " + id_1 + " or id = " + id_2); assert.strictEqual(result.rows.length, 1); - const resultVal = result.rows[0][1]; - await compareClientFetchResult(resultVal, specialStr_1, content_1, contentLength_1); + assert.deepStrictEqual(result.rows[0][1], content_1); oracledb.maxRows = maxRowsBak; }); // 87.1.14 @@ -364,10 +343,8 @@ describe('87. fetchBlobAsBuffer1.js', function() { const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE id = " + id_1 + " or id = " + id_2); assert.strictEqual(result.rows.length, 2); - let resultVal = result.rows[0][1]; - await compareClientFetchResult(resultVal, specialStr_1, content_1, contentLength_1); - resultVal = result.rows[1][1]; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); + assert.deepStrictEqual(result.rows[0][1], content_1); + assert.deepStrictEqual(result.rows[1][1], content_2); oracledb.maxRows = maxRowsBak; }); // 87.1.15 @@ -387,7 +364,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { const lob = result.rows[0][1]; const blobData = await lob.getData(); - await compareClientFetchResult(blobData, specialStr, content, contentLength); + assert.deepStrictEqual(blobData, content); lob.destroy(); }); // 87.1.16 @@ -407,7 +384,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { stream.on('end', stream.destroy); stream.on('close', resolve); stream.on('data', function(data) { - compareBuffers(data[1], specialStr, content, contentLength); + assert.deepStrictEqual(data[1], content); counter++; }); }); @@ -441,14 +418,14 @@ describe('87. fetchBlobAsBuffer1.js', function() { const result = data[1]; counter++; if (counter == 1) { - compareBuffers(result, specialStr_1, content_1, contentLength_1); + assert.deepStrictEqual(result, content_1); } else { - compareBuffers(result, specialStr_2, content_2, contentLength_2); + assert.deepStrictEqual(result, content_2); } }); }); oracledb.maxRows = maxRowsBak; - assert.equal(counter, 2); + assert.strictEqual(counter, 2); }); // 87.1.18 it('87.1.19 works with await connection.queryStream() and oracledb.maxRows = actual number of rows in the table', async function() { @@ -483,14 +460,14 @@ describe('87. fetchBlobAsBuffer1.js', function() { const result = data[1]; counter++; if (counter == 1) { - compareBuffers(result, specialStr_1, content_1, contentLength_1); + assert.deepStrictEqual(result, content_1); } else { - compareBuffers(result, specialStr_2, content_2, contentLength_2); + assert.deepStrictEqual(result, content_2); } }); stream.on('end', function() { - assert.equal(counter, 2); + assert.strictEqual(counter, 2); oracledb.maxRows = maxRowsBak; stream.destroy(); }); @@ -534,14 +511,14 @@ describe('87. fetchBlobAsBuffer1.js', function() { const result = data[1]; counter++; if (counter == 1) { - compareBuffers(result, specialStr_1, content_1, contentLength_1); + assert.deepStrictEqual(result, content_1); } else { - compareBuffers(result, specialStr_2, content_2, contentLength_2); + assert.deepStrictEqual(result, content_2); } }); stream.on('end', function() { - assert.equal(counter, 2); + assert.strictEqual(counter, 2); oracledb.maxRows = maxRowsBak; stream.destroy(); }); @@ -572,19 +549,18 @@ describe('87. fetchBlobAsBuffer1.js', function() { oracledb.fetchAsBuffer = []; }); // afterEach - let insertAndFetch = async function(id, specialStr, insertContent, insertContentLength) { - let result = null; + const insertAndFetch = async function(id, specialStr, insertContent) { await insertIntoBlobTable1(id, insertContent); - result = await connection.execute( + const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE ID = :id", { id : id }, { outFormat : oracledb.OUT_FORMAT_OBJECT }); let resultVal = result.rows[0].B; if (specialStr === null) { - assert.equal(resultVal, null); + assert.strictEqual(resultVal, null); } else { - await compareClientFetchResult(resultVal, specialStr, insertContent, insertContentLength); + assert.deepStrictEqual(resultVal, insertContent); } }; @@ -592,14 +568,14 @@ describe('87. fetchBlobAsBuffer1.js', function() { let id = insertID++; let content = null; - await insertAndFetch(id, null, content, null); + await insertAndFetch(id, null, content); }); // 87.2.1 it('87.2.2 works with empty Buffer', async function() { let id = insertID++; let content = Buffer.from("", "utf-8"); - await insertAndFetch(id, null, content, null); + await insertAndFetch(id, null, content); }); // 87.2.2 it('87.2.3 works with small value', async function() { @@ -609,7 +585,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.2.3 it('87.2.4 works with (64K - 1) value', async function() { @@ -619,7 +595,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.2.4 it('87.2.5 works with (64K + 1) value', async function() { @@ -629,7 +605,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.2.5 it('87.2.6 works with (1MB + 1) data', async function() { @@ -639,7 +615,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.2.6 it('87.2.7 works with dbms_lob.substr()', async function() { @@ -660,14 +636,14 @@ describe('87. fetchBlobAsBuffer1.js', function() { let resultVal = result.rows[0].B1; let buffer2Compare = Buffer.from(specialStr, "utf-8"); - await compareClientFetchResult(resultVal, specialStr, buffer2Compare, specialStrLength); + assert.deepStrictEqual(resultVal, buffer2Compare); }); // 87.2.7 it('87.2.8 works with EMPTY_BLOB()', async function() { let id = insertID++; let content = "EMPTY_BLOB"; - await insertAndFetch(id, null, content, null); + await insertAndFetch(id, null, content); }); // 87.2.8 it('87.2.9 fetch multiple BLOB rows as Buffer', async function() { @@ -688,10 +664,8 @@ describe('87. fetchBlobAsBuffer1.js', function() { "SELECT ID, B from nodb_blob1 WHERE ID = " + id_1 + " or id = " + id_2, { }, { outFormat : oracledb.OUT_FORMAT_OBJECT }); - let resultVal = result.rows[0].B; - await compareClientFetchResult(resultVal, specialStr_1, content_1, contentLength_1); - resultVal = result.rows[1].B; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); + assert.deepStrictEqual(result.rows[0].B, content_1); + assert.deepStrictEqual(result.rows[1].B, content_2); }); // 87.2.9 it('87.2.10 fetch the same BLOB column multiple times', async function() { @@ -709,10 +683,8 @@ describe('87. fetchBlobAsBuffer1.js', function() { { }, { outFormat : oracledb.OUT_FORMAT_OBJECT }); - let resultVal = result.rows[0].B1; - await compareClientFetchResult(resultVal, specialStr, content, contentLength); - resultVal = result.rows[0].B2; - await compareClientFetchResult(resultVal, specialStr, content, contentLength); + assert.deepStrictEqual(result.rows[0].B1, content); + assert.deepStrictEqual(result.rows[0].B2, content); }); // 87.2.10 it('87.2.11 works with update statement', async function() { @@ -727,7 +699,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let content_2 = Buffer.from(strBuf_2, "utf-8"); let result = null; - await insertAndFetch(id, specialStr_1, content_1, contentLength_1); + await insertAndFetch(id, specialStr_1, content_1); await updateBlobTable1(id, content_2); @@ -735,8 +707,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { "SELECT ID, B from nodb_blob1 WHERE ID = " + id, { }, { outFormat : oracledb.OUT_FORMAT_OBJECT }); - let resultVal = result.rows[0].B; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); + assert.deepStrictEqual(result.rows[0].B, content_2); }); // 87.2.11 it('87.2.12 works with REF CURSOR', async function() { @@ -745,7 +716,6 @@ describe('87. fetchBlobAsBuffer1.js', function() { let contentLength = 100; let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - let result = null; await insertIntoBlobTable1(id, content); let ref_proc = "CREATE OR REPLACE PROCEDURE nodb_ref(blob_cursor OUT SYS_REFCURSOR)\n" + "AS \n" + @@ -759,14 +729,11 @@ describe('87. fetchBlobAsBuffer1.js', function() { let bindVar = { b: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } }; - result = await connection.execute( - sql, - bindVar); - let rows = await result.outBinds.b.getRows(3); - let resultVal = rows[0][0]; - await compareClientFetchResult(resultVal, specialStr, content, contentLength); + const result = await connection.execute(sql, bindVar); + const rows = await result.outBinds.b.getRows(3); + assert.deepStrictEqual(rows[0][0], content); await result.outBinds.b.close(); - let ref_proc_drop = "DROP PROCEDURE nodb_ref"; + const ref_proc_drop = "DROP PROCEDURE nodb_ref"; await connection.execute(ref_proc_drop); }); // 87.2.12 @@ -783,29 +750,16 @@ describe('87. fetchBlobAsBuffer1.js', function() { result = await connection.execute("SELECT B from nodb_blob1 WHERE ID = " + id); let lob = result.rows[0][0]; - assert(lob); let blobData = Buffer.alloc(0); - let totalLength = 0; await new Promise((resolve, reject) => { + lob.on('error', reject); + lob.on('end', lob.destroy); + lob.on('close', resolve); lob.on('data', function(chunk) { - totalLength = totalLength + chunk.length; - blobData = Buffer.concat([blobData, chunk], totalLength); - }); - - lob.on('error', function(err) { - assert.ifError(err, "lob.on 'error' event."); - reject(); - }); - - lob.on('end', async function() { - await compareClientFetchResult(blobData, specialStr, content, contentLength); - lob.destroy(); - }); - - lob.on('close', function() { - resolve(); + blobData = Buffer.concat([blobData, chunk]); }); }); + assert.deepStrictEqual(blobData, content); }); // 87.2.13 it('87.2.14 works with setting oracledb.maxRows < actual number of rows in the table', async function() { @@ -833,8 +787,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { { outFormat : oracledb.OUT_FORMAT_OBJECT }); assert.strictEqual(result.rows.length, 1); - let resultVal = result.rows[0].B; - await compareClientFetchResult(resultVal, specialStr_1, content_1, contentLength_1); + assert.deepStrictEqual(result.rows[0].B, content_1); oracledb.maxRows = maxRowsBak; }); // 87.2.14 @@ -861,10 +814,8 @@ describe('87. fetchBlobAsBuffer1.js', function() { { outFormat : oracledb.OUT_FORMAT_OBJECT }); assert.strictEqual(result.rows.length, 2); - let resultVal = result.rows[0].B; - await compareClientFetchResult(resultVal, specialStr_1, content_1, contentLength_1); - resultVal = result.rows[1].B; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); + assert.deepStrictEqual(result.rows[0].B, content_1); + assert.deepStrictEqual(result.rows[1].B, content_2); oracledb.maxRows = maxRowsBak; }); // 87.2.15 @@ -874,41 +825,19 @@ describe('87. fetchBlobAsBuffer1.js', function() { let contentLength = 20; let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - let result = null; await insertIntoBlobTable1(id, content); - result = await connection.execute( + const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE ID = :id", { id : id }, { fetchInfo : { B : { type : oracledb.DEFAULT } } }); - await new Promise((resolve, reject) => { - let lob = result.rows[0][1]; - assert(lob); - let blobData = Buffer.alloc(0); - let totalLength = 0; - - lob.on('data', function(chunk) { - totalLength = totalLength + chunk.length; - blobData = Buffer.concat([blobData, chunk], totalLength); - }); - - lob.on('error', function(err) { - assert.ifError(err, "lob.on 'error' event."); - reject(); - }); - - lob.on('end', async function() { - await compareClientFetchResult(blobData, specialStr, content, contentLength); - lob.destroy(); - }); - - lob.on('close', function() { - resolve(); - }); - }); + const lob = result.rows[0][1]; + const blobData = await lob.getData(); + await lob.close(); + assert.deepStrictEqual(blobData, content); }); // 87.2.16 }); // 87.2 @@ -933,10 +862,9 @@ describe('87. fetchBlobAsBuffer1.js', function() { }); // afterEach - let insertAndFetch = async function(id, specialStr, insertContent, insertContentLength) { - let result = null; + const insertAndFetch = async function(id, specialStr, insertContent) { await insertIntoBlobTable1(id, insertContent); - result = await connection.execute( + const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE ID = :id", { id : id }, { @@ -947,25 +875,25 @@ describe('87. fetchBlobAsBuffer1.js', function() { let resultVal; resultVal = row.B; if (specialStr === null) { - assert.equal(resultVal, null); + assert.strictEqual(resultVal, null); } else { - await compareClientFetchResult(resultVal, specialStr, insertContent, insertContentLength); + assert.deepStrictEqual(resultVal, insertContent); } - result.resultSet.close(); + await result.resultSet.close(); }; it('87.3.1 works with NULL value', async function() { let id = insertID++; let content = null; - await insertAndFetch(id, null, content, null); + await insertAndFetch(id, null, content); }); // 87.3.1 it('87.3.2 works with empty Buffer', async function() { let id = insertID++; let content = Buffer.from("", "utf-8"); - await insertAndFetch(id, null, content, null); + await insertAndFetch(id, null, content); }); // 87.3.2 it('87.3.3 works with small value', async function() { @@ -975,7 +903,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.3.3 it('87.3.4 works with (64K - 1) value', async function() { @@ -985,7 +913,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.3.4 it('87.3.5 works with (64K + 1) value', async function() { @@ -995,7 +923,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.3.5 it('87.3.6 works with (1MB + 1) data', async function() { @@ -1005,7 +933,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.3.6 it('87.3.7 works with dbms_lob.substr()', async function() { @@ -1016,28 +944,26 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - let result = null; await insertIntoBlobTable1(id, content); - result = await connection.execute( + const result = await connection.execute( "SELECT dbms_lob.substr(B, " + specialStrLength + ", 1) AS B1 from nodb_blob1 WHERE ID = :id", { id : id }, { outFormat : oracledb.OUT_FORMAT_OBJECT, resultSet : true }); - let row = await result.resultSet.getRow(); - let resultVal = row.B1; - let buffer2Compare = Buffer.from(specialStr, "utf-8"); - await compareClientFetchResult(resultVal, specialStr, buffer2Compare, specialStrLength); - result.resultSet.close(); + const row = await result.resultSet.getRow(); + const buffer2Compare = Buffer.from(specialStr, "utf-8"); + assert.deepStrictEqual(row.B1, buffer2Compare); + await result.resultSet.close(); }); // 87.3.7 it('87.3.8 works with EMPTY_BLOB()', async function() { let id = insertID++; let content = "EMPTY_BLOB"; - await insertAndFetch(id, null, content, null); + await insertAndFetch(id, null, content); }); // 87.3.8 it('87.3.9 fetch multiple BLOB rows as Buffer', async function() { @@ -1068,11 +994,9 @@ describe('87. fetchBlobAsBuffer1.js', function() { let row = await result.resultSet.getRows( rowNumFetched); - let resultVal = row[0].B; - await compareClientFetchResult(resultVal, specialStr_1, content_1, contentLength_1); - resultVal = row[1].B; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); - result.resultSet.close(); + assert.deepStrictEqual(row[0].B, content_1); + assert.deepStrictEqual(row[1].B, content_2); + await result.resultSet.close(); }); // 87.3.9 it('87.3.10 fetch the same BLOB column multiple times', async function() { @@ -1093,12 +1017,10 @@ describe('87. fetchBlobAsBuffer1.js', function() { resultSet : true }); - let row = await result.resultSet.getRow(); - let resultVal = row.B1; - await compareClientFetchResult(resultVal, specialStr, content, contentLength); - resultVal = row.B2; - await compareClientFetchResult(resultVal, specialStr, content, contentLength); - result.resultSet.close(); + const row = await result.resultSet.getRow(); + assert.deepStrictEqual(row.B1, content); + assert.deepStrictEqual(row.B2, content); + await result.resultSet.close(); }); // 87.3.10 it('87.3.11 works with update statement', async function() { @@ -1111,22 +1033,20 @@ describe('87. fetchBlobAsBuffer1.js', function() { let contentLength_2 = 208; let strBuf_2 = random.getRandomString(contentLength_2, specialStr_2); let content_2 = Buffer.from(strBuf_2, "utf-8"); - let result = null; - await insertAndFetch(id, specialStr_1, content_1, contentLength_1); + await insertAndFetch(id, specialStr_1, content_1); await updateBlobTable1(id, content_2); - result = await connection.execute( + const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE ID = " + id, { }, { outFormat : oracledb.OUT_FORMAT_OBJECT, resultSet : true }); - let row = await result.resultSet.getRow(); - let resultVal = row.B; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); - result.resultSet.close(); + const row = await result.resultSet.getRow(); + assert.deepStrictEqual(row.B, content_2); + await result.resultSet.close(); }); // 87.3.11 it('87.3.12 works with REF CURSOR', async function() { @@ -1135,7 +1055,6 @@ describe('87. fetchBlobAsBuffer1.js', function() { let contentLength = 100; let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - let result = null; await insertIntoBlobTable1(id, content); @@ -1145,20 +1064,16 @@ describe('87. fetchBlobAsBuffer1.js', function() { " OPEN blob_cursor FOR \n" + " SELECT B from nodb_blob1 WHERE ID = " + id + "; \n" + "END;"; - await connection.execute( - ref_proc); + await connection.execute(ref_proc); - let sql = "BEGIN nodb_ref(:b); END;"; - let bindVar = { + const sql = "BEGIN nodb_ref(:b); END;"; + const bindVar = { b: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } }; - result = await connection.execute( - sql, - bindVar); - let rows = await result.outBinds.b.getRows(3); + const result = await connection.execute(sql, bindVar); + const rows = await result.outBinds.b.getRows(3); - let resultVal = rows[0][0]; - await compareClientFetchResult(resultVal, specialStr, content, contentLength); + assert.deepStrictEqual(rows[0][0], content); await result.outBinds.b.close(); let ref_proc_drop = "DROP PROCEDURE nodb_ref"; await connection.execute(ref_proc_drop); @@ -1170,39 +1085,23 @@ describe('87. fetchBlobAsBuffer1.js', function() { let contentLength = 200; let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - let result = null; await insertIntoBlobTable1(id, content); oracledb.fetchAsBuffer = []; - result = await connection.execute( + const result = await connection.execute( "SELECT B from nodb_blob1 WHERE ID = " + id); - - let lob = result.rows[0][0]; - assert(lob); + const lob = result.rows[0][0]; let blobData = Buffer.alloc(0); - let totalLength = 0; await new Promise((resolve, reject) => { - + lob.on('error', reject); + lob.on('end', lob.destroy); + lob.on('close', resolve); lob.on('data', function(chunk) { - totalLength = totalLength + chunk.length; - blobData = Buffer.concat([blobData, chunk], totalLength); - }); - - lob.on('error', function(err) { - assert.ifError(err, "lob.on 'error' event."); - reject(); - }); - - lob.on('end', async function() { - await compareClientFetchResult(blobData, specialStr, content, contentLength); - lob.destroy(); - }); - - lob.on('close', function() { - resolve(); + blobData = Buffer.concat([blobData, chunk]); }); }); + assert.deepStrictEqual(blobData, content); }); // 87.3.13 it('87.3.14 works with setting oracledb.maxRows < actual number of rows in the table', async function() { @@ -1218,14 +1117,13 @@ describe('87. fetchBlobAsBuffer1.js', function() { let content_2 = Buffer.from(strBuf_2, "utf-8"); let maxRowsBak = oracledb.maxRows; oracledb.maxRows = 1; - let result = null; await insertIntoBlobTable1(id_1, content_1); await insertIntoBlobTable1(id_2, content_2); let rowNumFetched = 2; - result = await connection.execute( + const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE id = " + id_1 + " or id = " + id_2, { }, { @@ -1233,14 +1131,12 @@ describe('87. fetchBlobAsBuffer1.js', function() { resultSet : true }); - let row = await result.resultSet.getRows(rowNumFetched); + const row = await result.resultSet.getRows(rowNumFetched); assert.strictEqual(row.length, 2); - let resultVal = row[0].B; - await compareClientFetchResult(resultVal, specialStr_1, content_1, contentLength_1); - resultVal = row[1].B; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); + assert.deepStrictEqual(row[0].B, content_1); + assert.deepStrictEqual(row[1].B, content_2); oracledb.maxRows = maxRowsBak; - result.resultSet.close(); + await result.resultSet.close(); }); // 87.3.14 it('87.3.15 works with setting oracledb.maxRows > actual number of rows in the table', async function() { @@ -1256,12 +1152,10 @@ describe('87. fetchBlobAsBuffer1.js', function() { let content_2 = Buffer.from(strBuf_2, "utf-8"); let maxRowsBak = oracledb.maxRows; oracledb.maxRows = 10; - let result = null; await insertIntoBlobTable1(id_1, content_1); await insertIntoBlobTable1(id_2, content_2); - let rowNumFetched = 2; - result = await connection.execute( + const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE id = " + id_1 + " or id = " + id_2, { }, { @@ -1269,15 +1163,12 @@ describe('87. fetchBlobAsBuffer1.js', function() { resultSet : true }); - let row = await result.resultSet.getRows(rowNumFetched); - - assert.strictEqual(row.length, 2); - let resultVal = row[0].B; - await compareClientFetchResult(resultVal, specialStr_1, content_1, contentLength_1); - resultVal = row[1].B; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); + const rows = await result.resultSet.getRows(2); + assert.strictEqual(rows.length, 2); + assert.deepStrictEqual(rows[0].B, content_1); + assert.deepStrictEqual(rows[1].B, content_2); oracledb.maxRows = maxRowsBak; - result.resultSet.close(); + await result.resultSet.close(); }); // 87.3.15 it('87.3.16 override oracledb.fetchAsBuffer with fetchInfo set to oracledb.DEFAULT', async function() { @@ -1297,34 +1188,13 @@ describe('87. fetchBlobAsBuffer1.js', function() { fetchInfo : { B : { type : oracledb.DEFAULT } } }); - let lob = result.rows[0][1]; - assert(lob); - let blobData = Buffer.alloc(0); - let totalLength = 0; - await new Promise((resolve, reject) => { - lob.on('data', function(chunk) { - totalLength = totalLength + chunk.length; - blobData = Buffer.concat([blobData, chunk], totalLength); - }); + const lob = result.rows[0][1]; + const blobData = await lob.getData(); + await lob.close(); + assert.deepStrictEqual(blobData, content); + }); // 87.3.16 - lob.on('error', function(err) { - assert.ifError(err, "lob.on 'error' event."); - reject(); - }); - - lob.on('end', async function() { - await compareClientFetchResult(blobData, specialStr, content, contentLength); - lob.destroy(); - }); - - lob.on('close', function() { - resolve(); - }); - } - ); - }); - }); // 87.3.16 - // 87.3 + }); // 87.3 describe('87.4 fetch BLOB columns by setting oracledb.fetchAsBuffer and outFormat = oracledb.OUT_FORMAT_ARRAY', function() { @@ -1347,7 +1217,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { }); // afterEach - let insertAndFetch = async function(id, specialStr, insertContent, insertContentLength) { + let insertAndFetch = async function(id, specialStr, insertContent) { let result = null; await insertIntoBlobTable1(id, insertContent); @@ -1358,9 +1228,9 @@ describe('87. fetchBlobAsBuffer1.js', function() { let resultVal = result.rows[0][1]; if (specialStr === null) { - assert.equal(resultVal, null); + assert.strictEqual(resultVal, null); } else { - await compareClientFetchResult(resultVal, specialStr, insertContent, insertContentLength); + assert.deepStrictEqual(resultVal, insertContent); } }; @@ -1368,14 +1238,14 @@ describe('87. fetchBlobAsBuffer1.js', function() { let id = insertID++; let content = null; - await insertAndFetch(id, null, content, null); + await insertAndFetch(id, null, content); }); // 87.4.1 it('87.4.2 works with empty Buffer', async function() { let id = insertID++; let content = Buffer.from("", "utf-8"); - await insertAndFetch(id, null, content, null); + await insertAndFetch(id, null, content); }); // 87.4.2 it('87.4.3 works with small value', async function() { @@ -1385,7 +1255,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.4.3 it('87.4.4 works with (64K - 1) value', async function() { @@ -1395,7 +1265,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.4.4 it('87.4.5 works with (64K + 1) value', async function() { @@ -1405,7 +1275,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.4.5 it('87.4.6 works with (1MB + 1) data', async function() { @@ -1415,7 +1285,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.4.6 it('87.4.7 works with dbms_lob.substr()', async function() { @@ -1434,14 +1304,14 @@ describe('87. fetchBlobAsBuffer1.js', function() { { outFormat : oracledb.OUT_FORMAT_ARRAY }); let resultVal = result.rows[0][0]; let buffer2Compare = Buffer.from(specialStr, "utf-8"); - await compareClientFetchResult(resultVal, specialStr, buffer2Compare, specialStrLength); + assert.deepStrictEqual(resultVal, buffer2Compare); }); // 87.4.7 it('87.4.8 works with EMPTY_BLOB()', async function() { let id = insertID++; let content = "EMPTY_BLOB"; - await insertAndFetch(id, null, content, null); + await insertAndFetch(id, null, content); }); // 87.4.8 it('87.4.9 fetch multiple BLOB rows as Buffer', async function() { @@ -1466,10 +1336,8 @@ describe('87. fetchBlobAsBuffer1.js', function() { { }, { outFormat : oracledb.OUT_FORMAT_ARRAY }); - let resultVal = result.rows[0][1]; - await compareClientFetchResult(resultVal, specialStr_1, content_1, contentLength_1); - resultVal = result.rows[1][1]; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); + assert.deepStrictEqual(result.rows[0][1], content_1); + assert.deepStrictEqual(result.rows[1][1], content_2); }); // 87.4.9 it('87.4.10 fetch the same BLOB column multiple times', async function() { @@ -1485,10 +1353,8 @@ describe('87. fetchBlobAsBuffer1.js', function() { "SELECT ID, B AS B1, B AS B2 from nodb_blob1 WHERE ID = " + id, { }, { outFormat : oracledb.OUT_FORMAT_ARRAY }); - let resultVal = result.rows[0][1]; - await compareClientFetchResult(resultVal, specialStr, content, contentLength); - resultVal = result.rows[0][2]; - await compareClientFetchResult(resultVal, specialStr, content, contentLength); + assert.deepStrictEqual(result.rows[0][1], content); + assert.deepStrictEqual(result.rows[0][2], content); }); // 87.4.10 it('87.4.11 works with update statement', async function() { @@ -1501,19 +1367,17 @@ describe('87. fetchBlobAsBuffer1.js', function() { let contentLength_2 = 208; let strBuf_2 = random.getRandomString(contentLength_2, specialStr_2); let content_2 = Buffer.from(strBuf_2, "utf-8"); - let result = null; - await insertAndFetch(id, specialStr_1, content_1, contentLength_1); + await insertAndFetch(id, specialStr_1, content_1); await updateBlobTable1(id, content_2); - result = await connection.execute( + const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE ID = " + id, { }, { outFormat : oracledb.OUT_FORMAT_ARRAY }); - let resultVal = result.rows[0][1]; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); + assert.deepStrictEqual(result.rows[0][1], content_2); }); // 87.4.11 it('87.4.12 works with REF CURSOR', async function() { @@ -1522,7 +1386,6 @@ describe('87. fetchBlobAsBuffer1.js', function() { let contentLength = 100; let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - let result = null; await insertIntoBlobTable1(id, content); let ref_proc = "CREATE OR REPLACE PROCEDURE nodb_ref(blob_cursor OUT SYS_REFCURSOR)\n" + @@ -1538,13 +1401,10 @@ describe('87. fetchBlobAsBuffer1.js', function() { b: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } }; - result = await connection.execute( - sql, - bindVar); + const result = await connection.execute(sql, bindVar); - let rows = await result.outBinds.b.getRows(3); - let resultVal = rows[0][0]; - await compareClientFetchResult(resultVal, specialStr, content, contentLength); + const rows = await result.outBinds.b.getRows(3); + assert.deepStrictEqual(rows[0][0], content); await result.outBinds.b.close(); let ref_proc_drop = "DROP PROCEDURE nodb_ref"; await connection.execute(ref_proc_drop); @@ -1563,31 +1423,17 @@ describe('87. fetchBlobAsBuffer1.js', function() { result = await connection.execute( "SELECT B from nodb_blob1 WHERE ID = " + id); + const lob = result.rows[0][0]; + let blobData = Buffer.alloc(0); await new Promise((resolve, reject) => { - let lob = result.rows[0][0]; - assert(lob); - let blobData = Buffer.alloc(0); - let totalLength = 0; - + lob.on('error', reject); + lob.on('end', lob.destroy); + lob.on('close', resolve); lob.on('data', function(chunk) { - totalLength = totalLength + chunk.length; - blobData = Buffer.concat([blobData, chunk], totalLength); - }); - - lob.on('error', function(err) { - assert.ifError(err, "lob.on 'error' event."); - reject(); - }); - - lob.on('end', async function() { - await compareClientFetchResult(blobData, specialStr, content, contentLength); - lob.destroy(); - }); - - lob.on('close', function() { - resolve(); + blobData = Buffer.concat([blobData, chunk]); }); }); + assert.deepStrictEqual(blobData, content); }); // 87.4.13 it('87.4.14 works with setting oracledb.maxRows < actual number of rows in the table', async function() { @@ -1603,20 +1449,18 @@ describe('87. fetchBlobAsBuffer1.js', function() { let content_2 = Buffer.from(strBuf_2, "utf-8"); let maxRowsBak = oracledb.maxRows; oracledb.maxRows = 1; - let result = null; await insertIntoBlobTable1(id_1, content_1); await insertIntoBlobTable1(id_2, content_2); - result = await connection.execute( + const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE id = " + id_1 + " or id = " + id_2, { }, { outFormat : oracledb.OUT_FORMAT_ARRAY }); assert.strictEqual(result.rows.length, 1); - let resultVal = result.rows[0][1]; - await compareClientFetchResult(resultVal, specialStr_1, content_1, contentLength_1); + assert.deepStrictEqual(result.rows[0][1], content_1); oracledb.maxRows = maxRowsBak; }); // 87.4.14 @@ -1633,24 +1477,20 @@ describe('87. fetchBlobAsBuffer1.js', function() { let content_2 = Buffer.from(strBuf_2, "utf-8"); let maxRowsBak = oracledb.maxRows; oracledb.maxRows = 10; - let result = null; await insertIntoBlobTable1(id_1, content_1); await insertIntoBlobTable1(id_2, content_2); - result = await connection.execute( + const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE id = " + id_1 + " or id = " + id_2, { }, { outFormat : oracledb.OUT_FORMAT_ARRAY }); assert.strictEqual(result.rows.length, 2); - let resultVal = result.rows[0][1]; - await compareClientFetchResult(resultVal, specialStr_1, content_1, contentLength_1); - resultVal = result.rows[1][1]; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); + assert.deepStrictEqual(result.rows[0][1], content_1); + assert.deepStrictEqual(result.rows[1][1], content_2); oracledb.maxRows = maxRowsBak; - }); // 87.4.15 it('87.4.16 override oracledb.fetchAsBuffer with fetchInfo set to oracledb.DEFAULT', async function() { @@ -1670,30 +1510,10 @@ describe('87. fetchBlobAsBuffer1.js', function() { fetchInfo : { B : { type : oracledb.DEFAULT } } }); - let lob = result.rows[0][1]; - assert(lob); - let blobData = Buffer.alloc(0); - let totalLength = 0; - await new Promise((resolve, reject) => { - lob.on('data', function(chunk) { - totalLength = totalLength + chunk.length; - blobData = Buffer.concat([blobData, chunk], totalLength); - }); - - lob.on('error', function(err) { - assert.ifError(err, "lob.on 'error' event."); - reject(); - }); - - lob.on('end', async function() { - await compareClientFetchResult(blobData, specialStr, content, contentLength); - lob.destroy(); - }); - - lob.on('close', function() { - resolve(); - }); - }); + const lob = result.rows[0][1]; + const blobData = await lob.getData(); + await lob.close(); + assert.deepStrictEqual(blobData, content); }); // 87.4.16 }); // 87.4 @@ -1718,7 +1538,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { }); // afterEach - let insertAndFetch = async function(id, specialStr, insertContent, insertContentLength) { + const insertAndFetch = async function(id, specialStr, insertContent) { let result = null; await insertIntoBlobTable1(id, insertContent); @@ -1734,25 +1554,25 @@ describe('87. fetchBlobAsBuffer1.js', function() { let resultVal; resultVal = row[1]; if (specialStr === null) { - assert.equal(resultVal, null); + assert.strictEqual(resultVal, null); } else { - await compareClientFetchResult(resultVal, specialStr, insertContent, insertContentLength); + assert.deepStrictEqual(resultVal, insertContent); } - result.resultSet.close(); + await result.resultSet.close(); }; it('87.5.1 works with NULL value', async function() { let id = insertID++; let content = null; - await insertAndFetch(id, null, content, null); + await insertAndFetch(id, null, content); }); // 87.5.1 it('87.5.2 works with empty Buffer', async function() { let id = insertID++; let content = Buffer.from("", "utf-8"); - await insertAndFetch(id, null, content, null); + await insertAndFetch(id, null, content); }); // 87.5.2 it('87.5.3 works with small value', async function() { @@ -1762,7 +1582,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.5.3 it('87.5.4 works with (64K - 1) value', async function() { @@ -1772,7 +1592,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.5.4 it('87.5.5 works with (64K + 1) value', async function() { @@ -1782,7 +1602,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.5.5 it('87.5.6 works with (1MB + 1) data', async function() { @@ -1792,7 +1612,7 @@ describe('87. fetchBlobAsBuffer1.js', function() { let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - await insertAndFetch(id, specialStr, content, contentLength); + await insertAndFetch(id, specialStr, content); }); // 87.5.6 it('87.5.7 works with dbms_lob.substr()', async function() { @@ -1815,15 +1635,15 @@ describe('87. fetchBlobAsBuffer1.js', function() { let row = await result.resultSet.getRow(); let resultVal = row[0]; let buffer2Compare = Buffer.from(specialStr, "utf-8"); - await compareClientFetchResult(resultVal, specialStr, buffer2Compare, specialStrLength); - result.resultSet.close(); + assert.deepStrictEqual(resultVal, buffer2Compare); + await result.resultSet.close(); }); // 87.5.7 it('87.5.8 works with EMPTY_BLOB()', async function() { let id = insertID++; let content = "EMPTY_BLOB"; - await insertAndFetch(id, null, content, null); + await insertAndFetch(id, null, content); }); // 87.5.8 it('87.5.9 fetch multiple BLOB rows as Buffer', async function() { @@ -1837,14 +1657,12 @@ describe('87. fetchBlobAsBuffer1.js', function() { let contentLength_2 = 100; let strBuf_2 = random.getRandomString(contentLength_2, specialStr_2); let content_2 = Buffer.from(strBuf_2, "utf-8"); - let result = null; await insertIntoBlobTable1(id_1, content_1); await insertIntoBlobTable1(id_2, content_2); - let rowNumFetched = 2; - result = await connection.execute( + const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE ID = " + id_1 + " or id = " + id_2, { }, { @@ -1852,12 +1670,10 @@ describe('87. fetchBlobAsBuffer1.js', function() { resultSet : true }); - let row = await result.resultSet.getRows(rowNumFetched); - let resultVal = row[0][1]; - await compareClientFetchResult(resultVal, specialStr_1, content_1, contentLength_1); - resultVal = row[1][1]; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); - result.resultSet.close(); + const rows = await result.resultSet.getRows(2); + assert.deepStrictEqual(rows[0][1], content_1); + assert.deepStrictEqual(rows[1][1], content_2); + await result.resultSet.close(); }); // 87.5.9 it('87.5.10 fetch the same BLOB column multiple times', async function() { @@ -1866,11 +1682,10 @@ describe('87. fetchBlobAsBuffer1.js', function() { let contentLength = 200; let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - let result = null; await insertIntoBlobTable1(id, content); - result = await connection.execute( + const result = await connection.execute( "SELECT ID, B AS B1, B AS B2 from nodb_blob1 WHERE ID = " + id, { }, { @@ -1878,14 +1693,10 @@ describe('87. fetchBlobAsBuffer1.js', function() { resultSet : true }); - let row = await result.resultSet.getRow(); - - let resultVal = row[1]; - await compareClientFetchResult(resultVal, specialStr, content, contentLength); - resultVal = row[2]; - await compareClientFetchResult(resultVal, specialStr, content, contentLength); - result.resultSet.close(); - + const row = await result.resultSet.getRow(); + assert.deepStrictEqual(row[1], content); + assert.deepStrictEqual(row[2], content); + await result.resultSet.close(); }); // 87.5.10 it('87.5.11 works with update statement', async function() { @@ -1898,13 +1709,12 @@ describe('87. fetchBlobAsBuffer1.js', function() { let contentLength_2 = 208; let strBuf_2 = random.getRandomString(contentLength_2, specialStr_2); let content_2 = Buffer.from(strBuf_2, "utf-8"); - let result = null; - await insertAndFetch(id, specialStr_1, content_1, contentLength_1); + await insertAndFetch(id, specialStr_1, content_1); await updateBlobTable1(id, content_2); - result = await connection.execute( + const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE ID = " + id, { }, { @@ -1912,11 +1722,10 @@ describe('87. fetchBlobAsBuffer1.js', function() { resultSet : true }); - let row = await result.resultSet.getRow(); + const row = await result.resultSet.getRow(); - let resultVal = row[1]; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); - result.resultSet.close(); + assert.deepStrictEqual(row[1], content_2); + await result.resultSet.close(); }); // 87.5.11 it('87.5.12 works with REF CURSOR', async function() { @@ -1943,9 +1752,8 @@ describe('87. fetchBlobAsBuffer1.js', function() { result = await connection.execute( sql, bindVar); - let rows = await result.outBinds.b.getRows(3); - let resultVal = rows[0][0]; - await compareClientFetchResult(resultVal, specialStr, content, contentLength); + const rows = await result.outBinds.b.getRows(3); + assert.deepStrictEqual(rows[0][0], content); await result.outBinds.b.close(); let ref_proc_drop = "DROP PROCEDURE nodb_ref"; @@ -1958,38 +1766,17 @@ describe('87. fetchBlobAsBuffer1.js', function() { let contentLength = 200; let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - let result = null; await insertIntoBlobTable1(id, content); oracledb.fetchAsBuffer = []; - result = await connection.execute( + const result = await connection.execute( "SELECT B from nodb_blob1 WHERE ID = " + id); - let lob = result.rows[0][0]; - assert(lob); - let blobData = Buffer.alloc(0); - let totalLength = 0; - await new Promise((resolve, reject) => { - lob.on('data', function(chunk) { - totalLength = totalLength + chunk.length; - blobData = Buffer.concat([blobData, chunk], totalLength); - }); - - lob.on('error', function(err) { - assert.ifError(err, "lob.on 'error' event."); - reject(); - }); - - lob.on('end', async function() { - await compareClientFetchResult(blobData, specialStr, content, contentLength); - lob.destroy(); - }); - - lob.on('close', function() { - resolve(); - }); - }); + const lob = result.rows[0][0]; + const blobData = await lob.getData(); + await lob.close(); + assert.deepStrictEqual(blobData, content); }); // 87.5.13 it('87.5.14 works with setting oracledb.maxRows < actual number of rows in the table', async function() { @@ -2005,14 +1792,12 @@ describe('87. fetchBlobAsBuffer1.js', function() { let content_2 = Buffer.from(strBuf_2, "utf-8"); let maxRowsBak = oracledb.maxRows; oracledb.maxRows = 1; - let result = null; await insertIntoBlobTable1(id_1, content_1); await insertIntoBlobTable1(id_2, content_2); - let rowNumFetched = 2; - result = await connection.execute( + const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE id = " + id_1 + " or id = " + id_2, { }, { @@ -2020,15 +1805,12 @@ describe('87. fetchBlobAsBuffer1.js', function() { resultSet : true }); - let row = await result.resultSet.getRows( - rowNumFetched); - assert.strictEqual(row.length, 2); - let resultVal = row[0][1]; - await compareClientFetchResult(resultVal, specialStr_1, content_1, contentLength_1); - resultVal = row[1][1]; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); + const rows = await result.resultSet.getRows(2); + assert.strictEqual(rows.length, 2); + assert.deepStrictEqual(rows[0][1], content_1); + assert.deepStrictEqual(rows[1][1], content_2); oracledb.maxRows = maxRowsBak; - result.resultSet.close(); + await result.resultSet.close(); }); // 87.5.14 it('87.5.15 works with setting oracledb.maxRows > actual number of rows in the table', async function() { @@ -2044,14 +1826,12 @@ describe('87. fetchBlobAsBuffer1.js', function() { let content_2 = Buffer.from(strBuf_2, "utf-8"); let maxRowsBak = oracledb.maxRows; oracledb.maxRows = 10; - let result = null; await insertIntoBlobTable1(id_1, content_1); await insertIntoBlobTable1(id_2, content_2); - let rowNumFetched = 2; - result = await connection.execute( + const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE id = " + id_1 + " or id = " + id_2, { }, { @@ -2059,15 +1839,12 @@ describe('87. fetchBlobAsBuffer1.js', function() { resultSet : true }); - let row = await result.resultSet.getRows(rowNumFetched); - - assert.strictEqual(row.length, 2); - let resultVal = row[0][1]; - await compareClientFetchResult(resultVal, specialStr_1, content_1, contentLength_1); - resultVal = row[1][1]; - await compareClientFetchResult(resultVal, specialStr_2, content_2, contentLength_2); + const rows = await result.resultSet.getRows(2); + assert.strictEqual(rows.length, 2); + assert.deepStrictEqual(rows[0][1], content_1); + assert.deepStrictEqual(rows[1][1], content_2); oracledb.maxRows = maxRowsBak; - result.resultSet.close(); + await result.resultSet.close(); }); // 87.5.15 it('87.5.16 override oracledb.fetchAsBuffer with fetchInfo set to oracledb.DEFAULT', async function() { @@ -2076,40 +1853,19 @@ describe('87. fetchBlobAsBuffer1.js', function() { let contentLength = 20; let strBuf = random.getRandomString(contentLength, specialStr); let content = Buffer.from(strBuf, "utf-8"); - let result = null; await insertIntoBlobTable1(id, content); - result = await connection.execute( + const result = await connection.execute( "SELECT ID, B from nodb_blob1 WHERE ID = :id", { id : id }, { fetchInfo : { B : { type : oracledb.DEFAULT } } }); - let lob = result.rows[0][1]; - assert(lob); - let blobData = Buffer.alloc(0); - let totalLength = 0; - await new Promise((resolve, reject) => { - lob.on('data', function(chunk) { - totalLength = totalLength + chunk.length; - blobData = Buffer.concat([blobData, chunk], totalLength); - }); - - lob.on('error', function(err) { - assert.ifError(err, "lob.on 'error' event."); - reject(); - }); - - lob.on('end', async function() { - await compareClientFetchResult(blobData, specialStr, content, contentLength); - lob.destroy(); - }); - - lob.on('close', function() { - resolve(); - }); - }); + const lob = result.rows[0][1]; + const blobData = await lob.getData(); + await lob.close(); + assert.deepStrictEqual(blobData, content); }); // 87.5.16 }); // 87.5 diff --git a/test/fetchBlobAsBuffer2.js b/test/fetchBlobAsBuffer2.js index 2ff7d2d2..7d283a1d 100644 --- a/test/fetchBlobAsBuffer2.js +++ b/test/fetchBlobAsBuffer2.js @@ -36,7 +36,6 @@ const oracledb = require('oracledb'); const assert = require('assert'); const dbConfig = require('./dbconfig.js'); const random = require('./random.js'); -const assist = require('./dataTypeAssist.js'); describe('88. fetchBlobAsBuffer2.js', function() { @@ -104,8 +103,7 @@ describe('88. fetchBlobAsBuffer2.js', function() { // compare fetch result const compareClientFetchResult = function(resultVal, specialStr, content, contentLength) { assert.strictEqual(resultVal.length, contentLength); - const compareBuffer = assist.compare2Buffers(resultVal, content); - assert.strictEqual(compareBuffer, true); + assert.deepStrictEqual(resultVal, content); }; describe('88.1 fetch BLOB columns by setting fetchInfo option', function() { diff --git a/test/fetchBlobAsBuffer3.js b/test/fetchBlobAsBuffer3.js index 07b62f6a..02de23b1 100644 --- a/test/fetchBlobAsBuffer3.js +++ b/test/fetchBlobAsBuffer3.js @@ -33,8 +33,7 @@ 'use strict'; const oracledb = require('oracledb'); -const async = require('async'); -const should = require('should'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); const random = require('./random.js'); const assist = require('./dataTypeAssist.js'); @@ -42,9 +41,9 @@ const assist = require('./dataTypeAssist.js'); describe('89. fetchBlobAsBuffer3.js', function() { let connection = null; - var insertID = 1; // assume id for insert into db starts from 1 + let insertID = 1; // assume id for insert into db starts from 1 - var proc_create_table2 = "BEGIN \n" + + const proc_create_table2 = "BEGIN \n" + " DECLARE \n" + " e_table_missing EXCEPTION; \n" + " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + @@ -62,181 +61,96 @@ describe('89. fetchBlobAsBuffer3.js', function() { " ) \n" + " '); \n" + "END; "; - var drop_table2 = "DROP TABLE nodb_blob2 PURGE"; - var defaultStmtCache = oracledb.stmtCacheSize; + const drop_table2 = "DROP TABLE nodb_blob2 PURGE"; + const defaultStmtCache = oracledb.stmtCacheSize; - before('get one connection', function(done) { + before('get one connection', async function() { oracledb.stmtCacheSize = 0; - oracledb.getConnection(dbConfig, function(err, conn) { - should.not.exist(err); - connection = conn; - done(); - }); - + connection = await oracledb.getConnection(dbConfig); }); // before - after('release connection', function(done) { + after('release connection', async function() { oracledb.stmtCacheSize = defaultStmtCache; - connection.close(function(err) { - should.not.exist(err); - done(); - }); + await connection.close(); }); // after - var insertIntoBlobTable2 = function(id, content1, content2, callback) { - connection.execute( + const insertIntoBlobTable2 = async function(id, content1, content2) { + let result = await connection.execute( "INSERT INTO nodb_blob2 VALUES (:ID, :B1, :B2)", - [ id, content1, content2 ], - function(err, result) { - should.not.exist(err); - should.strictEqual(result.rowsAffected, 1); - callback(); - } + [ id, content1, content2 ] ); - }; - - // compare fetch result - var compareClientFetchResult = function(err, resultVal, specialStr, content, contentLength) { - should.not.exist(err); - compareBuffers(resultVal, specialStr, content, contentLength); - }; - - // compare two buffers - var compareBuffers = function(resultVal, specialStr, content, contentLength) { - should.equal(resultVal.length, contentLength); - var compareBuffer = assist.compare2Buffers(resultVal, content); - should.strictEqual(compareBuffer, true); + assert.strictEqual(result.rowsAffected, 1); }; describe('89.1 fetch multiple BLOBs', function() { - before('create Table and populate', function(done) { - connection.execute( - proc_create_table2, - function(err) { - should.not.exist(err); - done() ; - } - ); + before('create Table and populate', async function() { + await connection.execute(proc_create_table2); }); // before - after('drop table', function(done) { - connection.execute( - drop_table2, - function(err) { - should.not.exist(err); - done(); - } - ); + after('drop table', async function() { + await connection.execute(drop_table2); }); // after - beforeEach('set oracledb.fetchAsBuffer', function(done) { + beforeEach('set oracledb.fetchAsBuffer', function() { oracledb.fetchAsBuffer = [ oracledb.BLOB ]; - done(); }); // beforeEach - afterEach('clear the By type specification', function(done) { + afterEach('clear the By type specification', function() { oracledb.fetchAsBuffer = []; - done(); }); // afterEach - it('89.1.1 fetch multiple BLOB columns as Buffer', function(done) { - var id = insertID++; - var specialStr_1 = '89.1.1_1'; - var contentLength_1 = 26; - var strBuf_1 = random.getRandomString(contentLength_1, specialStr_1); - var content_1 = Buffer.from(strBuf_1, "utf-8"); - var specialStr_2 = '89.1.1_2'; - var contentLength_2 = 100; - var strBuf_2 = random.getRandomString(contentLength_2, specialStr_2); - var content_2 = Buffer.from(strBuf_2, "utf-8"); - - async.series([ - function(cb) { - insertIntoBlobTable2(id, content_1, content_2, cb); - }, - function(cb) { - connection.execute( - "SELECT ID, B1, B2 from nodb_blob2", - function(err, result) { - should.not.exist(err); - var resultVal = result.rows[0][1]; - compareClientFetchResult(err, resultVal, specialStr_1, content_1, contentLength_1); - resultVal = result.rows[0][2]; - compareClientFetchResult(err, resultVal, specialStr_2, content_2, contentLength_2); - cb(); - } - ); - } - ], done); + it('89.1.1 fetch multiple BLOB columns as Buffer', async function() { + const id = insertID++; + const specialStr_1 = '89.1.1_1'; + const contentLength_1 = 26; + const strBuf_1 = random.getRandomString(contentLength_1, specialStr_1); + const content_1 = Buffer.from(strBuf_1, "utf-8"); + const specialStr_2 = '89.1.1_2'; + const contentLength_2 = 100; + const strBuf_2 = random.getRandomString(contentLength_2, specialStr_2); + const content_2 = Buffer.from(strBuf_2, "utf-8"); + await insertIntoBlobTable2(id, content_1, content_2); + const result = await connection.execute( + "SELECT ID, B1, B2 from nodb_blob2" + ); + assert.deepStrictEqual(result.rows[0][1], content_1); + assert.deepStrictEqual(result.rows[0][2], content_2); }); // 89.1.1 - it('89.1.2 fetch two BLOB columns, one as string, another streamed', function(done) { - var id = insertID++; - var specialStr_1 = '89.1.2_1'; - var contentLength_1 = 30; - var strBuf_1 = random.getRandomString(contentLength_1, specialStr_1); - var content_1 = Buffer.from(strBuf_1, "utf-8"); - var specialStr_2 = '89.1.2_2'; - var contentLength_2 = 50; - var strBuf_2 = random.getRandomString(contentLength_2, specialStr_2); - var content_2 = Buffer.from(strBuf_2, "utf-8"); + it('89.1.2 fetch two BLOB columns, one as string, another streamed', async function() { + const id = insertID++; + const specialStr_1 = '89.1.2_1'; + const contentLength_1 = 30; + const strBuf_1 = random.getRandomString(contentLength_1, specialStr_1); + const content_1 = Buffer.from(strBuf_1, "utf-8"); + const specialStr_2 = '89.1.2_2'; + const contentLength_2 = 50; + const strBuf_2 = random.getRandomString(contentLength_2, specialStr_2); + const content_2 = Buffer.from(strBuf_2, "utf-8"); - async.series([ - function(cb) { - insertIntoBlobTable2(id, content_1, content_2, cb); - }, - function(cb) { - connection.execute( - "SELECT ID, B1 from nodb_blob2 where ID = :id", - { id : id }, - function(err, result) { - should.not.exist(err); - var resultVal = result.rows[0][1]; - compareClientFetchResult(err, resultVal, specialStr_1, content_1, contentLength_1); - cb(); - } - ); - }, - function(cb) { - oracledb.fetchAsBuffer = []; + await insertIntoBlobTable2(id, content_1, content_2); - connection.execute( - "SELECT B2 from nodb_blob2 where ID = :id", - { id : id }, - function(err, result) { - should.not.exist(err); - (result.rows.length).should.not.eql(0); - var lob = result.rows[0][0]; - should.exist(lob); + let result = await connection.execute( + "SELECT ID, B1 from nodb_blob2 where ID = :id", + { id : id } + ); + assert.deepStrictEqual(result.rows[0][1], content_1); - // set the encoding so we get a 'string' not a 'buffer' - lob.setEncoding('utf8'); - var clobData = ''; + oracledb.fetchAsBuffer = []; - lob.on('data', function(chunk) { - clobData += chunk; - }); - - lob.on('error', function(err) { - should.not.exist(err, "lob.on 'error' event."); - }); - - lob.on('end', function() { - should.not.exist(err); - var specialStrLen_2 = specialStr_2.length; - var resultLen_2 = clobData.length; - should.equal(clobData.length, contentLength_2); - should.strictEqual(clobData.substring(0, specialStrLen_2), specialStr_2); - should.strictEqual(clobData.substring(resultLen_2 - specialStrLen_2, resultLen_2), specialStr_2); - - cb(); - }); - } - ); - } - ], done); + result = await connection.execute( + "SELECT B2 from nodb_blob2 where ID = :id", + { id : id } + ); + assert.notStrictEqual(result.rows.length, 0); + const clobData = (await result.rows[0][0].getData()).toString(); + const specialStrLen_2 = specialStr_2.length; + const resultLen_2 = clobData.length; + assert.strictEqual(clobData.length, contentLength_2); + assert.strictEqual(clobData.substring(0, specialStrLen_2), specialStr_2); + assert.strictEqual(clobData.substring(resultLen_2 - specialStrLen_2, resultLen_2), specialStr_2); }); // 89.1.2 @@ -244,165 +158,150 @@ describe('89. fetchBlobAsBuffer3.js', function() { describe('89.2 types support for fetchAsBuffer property', function() { - afterEach ('clear the by-type specification', function(done) { + afterEach('clear the by-type specification', function() { oracledb.fetchAsBuffer = []; - done (); }); - it('89.2.1 String not supported in fetchAsBuffer', function(done) { - should.throws( + it('89.2.1 String not supported in fetchAsBuffer', function() { + assert.throws( function() { oracledb.fetchAsBuffer = [ oracledb.STRING ]; }, /NJS-021: invalid type for conversion specified/ ); - done(); }); // 89.2.1 - it('89.2.2 CLOB not supported in fetchAsBuffer', function(done) { - should.throws( + it('89.2.2 CLOB not supported in fetchAsBuffer', function() { + assert.throws( function() { oracledb.fetchAsBuffer = [ oracledb.CLOB ]; }, /NJS-021: invalid type for conversion specified/ ); - done(); }); // 89.2.2 - it('89.2.3 Number not supported in fetchAsBuffer', function(done) { - should.throws( + it('89.2.3 Number not supported in fetchAsBuffer', function() { + assert.throws( function() { oracledb.fetchAsBuffer = [ oracledb.NUMBER ]; }, /NJS-021: invalid type for conversion specified/ ); - done(); }); // 89.2.3 - it('89.2.4 Date not supported in fetchAsBuffer', function(done) { - should.throws( + it('89.2.4 Date not supported in fetchAsBuffer', function() { + assert.throws( function() { oracledb.fetchAsBuffer = [ oracledb.DATE ]; }, /NJS-021: invalid type for conversion specified/ ); - done(); }); // 89.2.4 - it('89.2.5 Cursor not supported in fetchAsBuffer', function(done) { - should.throws( + it('89.2.5 Cursor not supported in fetchAsBuffer', function() { + assert.throws( function() { oracledb.fetchAsBuffer = [ oracledb.CURSOR ]; }, /NJS-021: invalid type for conversion specified/ ); - done(); }); // 89.2.5 - it('89.2.6 Buffer not supported in fetchAsBuffer', function(done) { - should.throws( + it('89.2.6 Buffer not supported in fetchAsBuffer', function() { + assert.throws( function() { oracledb.fetchAsBuffer = [ oracledb.BUFFER ]; }, /NJS-021: invalid type for conversion specified/ ); - done(); }); // 89.2.6 - it('89.2.7 BLOB supported in fetchAsBuffer', function(done) { - should.doesNotThrow( + it('89.2.7 BLOB supported in fetchAsBuffer', function() { + assert.doesNotThrow( function() { oracledb.fetchAsBuffer = [ oracledb.BLOB ]; } ); - should.strictEqual(oracledb.fetchAsBuffer.length, 1); - should.strictEqual(oracledb.fetchAsBuffer[0], oracledb.BLOB); - done(); + assert.strictEqual(oracledb.fetchAsBuffer.length, 1); + assert.strictEqual(oracledb.fetchAsBuffer[0], oracledb.BLOB); }); // 89.2.7 - it('89.2.8 negative null value for fetchAsBuffer', function(done) { - should.throws( + it('89.2.8 negative null value for fetchAsBuffer', function() { + assert.throws( function() { oracledb.fetchAsBuffer = null; }, /NJS-004:/ ); - done(); }); // 89.2.8 - it('89.2.9 negative undefined value for fetchAsBuffer', function(done) { - should.throws( + it('89.2.9 negative undefined value for fetchAsBuffer', function() { + assert.throws( function() { oracledb.fetchAsBuffer = undefined; }, /NJS-004:/ ); - done(); }); // 89.2.9 - it('89.2.10 negative numeric value for fetchAsBuffer', function(done) { - should.throws( + it('89.2.10 negative numeric value for fetchAsBuffer', function() { + assert.throws( function() { oracledb.fetchAsBuffer = 89210; }, /NJS-004:/ ); - done(); }); // 89.2.10 - it('89.2.11 negative emtpy string value for fetchAsBuffer', function(done) { - should.throws( + it('89.2.11 negative emtpy string value for fetchAsBuffer', function() { + assert.throws( function() { oracledb.fetchAsBuffer = ' '; }, /NJS-004:/ ); - done(); }); // 89.2.11 - it('89.2.12 negative arbitary string value for fetchAsBuffer', function(done) { - should.throws( + it('89.2.12 negative arbitary string value for fetchAsBuffer', function() { + assert.throws( function() { oracledb.fetchAsBuffer = "89.2.12"; }, /NJS-004:/ ); - done(); }); // 89.2.12 - it('89.2.13 negative date value for fetchAsBuffer', function(done) { - should.throws( + it('89.2.13 negative date value for fetchAsBuffer', function() { + assert.throws( function() { - var dt = new Date (); + let dt = new Date (); oracledb.fetchAsBuffer = dt; }, /NJS-004:/ ); - done(); }); // 89.2.13 - it('89.2.14 negative arbitary buffer value for fetchAsBuffer', function(done) { - should.throws( + it('89.2.14 negative arbitary buffer value for fetchAsBuffer', function() { + assert.throws( function() { - var buf = assist.createBuffer (10) ; + let buf = assist.createBuffer(10) ; oracledb.fetchAsBuffer = buf; }, /NJS-004:/ ); - done(); }); // 89.2.14 }); // 89.2 diff --git a/test/fetchBlobAsBuffer4.js b/test/fetchBlobAsBuffer4.js index 3b81ba1d..492ada25 100644 --- a/test/fetchBlobAsBuffer4.js +++ b/test/fetchBlobAsBuffer4.js @@ -32,17 +32,15 @@ 'use strict'; const oracledb = require('oracledb'); -const should = require('should'); -const async = require('async'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); const random = require('./random.js'); -const assist = require('./dataTypeAssist.js'); describe('91. fetchBlobAsBuffer4.js', function() { let connection = null; - var insertID = 1; // assume id for insert into db starts from 1 - var proc_blob_in_tab = "BEGIN \n" + + let insertID = 1; // assume id for insert into db starts from 1 + const proc_blob_in_tab = "BEGIN \n" + " DECLARE \n" + " e_table_missing EXCEPTION; \n" + " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + @@ -62,662 +60,471 @@ describe('91. fetchBlobAsBuffer4.js', function() { " '); \n" + "END; "; - before(function(done) { - async.series([ - function(cb) { - oracledb.getConnection(dbConfig, function(err, conn) { - should.not.exist(err); - connection = conn; - cb(); - }); - }, - function(cb) { - connection.execute( - proc_blob_in_tab, - function(err) { - should.not.exist(err); - cb(); - }); - } - ], done); - + before(async function() { + connection = await oracledb.getConnection(dbConfig); + await connection.execute(proc_blob_in_tab); }); // before - after(function(done) { - async.series([ - function(cb) { - oracledb.fetchAsBuffer = []; - connection.execute( - "DROP TABLE nodb_blob_1 PURGE", - function(err) { - should.not.exist(err); - cb(); - }); - }, - function(cb) { - connection.close(function(err) { - should.not.exist(err); - cb(); - }); - } - ], done); - + after(async function() { + oracledb.fetchAsBuffer = []; + await connection.execute("DROP TABLE nodb_blob_1 PURGE"); + await connection.close(); }); // after - var executeSQL = function(sql, callback) { - connection.execute( - sql, - function(err) { - should.not.exist(err); - return callback(); - } - ); - }; - - var insertTable = function(sql, bindVar, callback) { - connection.execute( - sql, - bindVar, - function(err, result) { - should.not.exist(err); - should.strictEqual(result.rowsAffected, 1); - callback(); - } - ); + const insertTable = async function(sql, bindVar) { + const result = await connection.execute(sql, bindVar); + assert.strictEqual(result.rowsAffected, 1); }; describe('91.1 PLSQL FUNCTION RETURN BLOB to BUFFER', function() { - beforeEach('set oracledb.fetchAsBuffer', function(done) { + beforeEach('set oracledb.fetchAsBuffer', function() { oracledb.fetchAsBuffer = [ oracledb.BLOB ]; - done(); }); // beforeEach - afterEach('clear the By type specification', function(done) { + afterEach('clear the By type specification', function() { oracledb.fetchAsBuffer = []; - done(); }); // afterEach - it('91.1.1 bind by position - 1', function(done) { - var proc = "CREATE OR REPLACE FUNCTION nodb_blobs_out_94 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN RAW) RETURN BLOB \n" + + it('91.1.1 bind by position - 1', async function() { + const proc = "CREATE OR REPLACE FUNCTION nodb_blobs_out_94 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN RAW) RETURN BLOB \n" + "IS \n" + " tmpLOB4 BLOB; \n" + "BEGIN \n" + " select blob into tmpLOB4 from nodb_blob_1 where num_1 = ID_1;\n" + " RETURN tmpLOB4; \n" + "END;"; - var sqlRun = "begin :output := nodb_blobs_out_94 (:i1, :i2, :i3); end;"; - var proc_drop = "DROP FUNCTION nodb_blobs_out_94"; + const sqlRun = "begin :output := nodb_blobs_out_94 (:i1, :i2, :i3); end;"; + const proc_drop = "DROP FUNCTION nodb_blobs_out_94"; - var len = 400; - var sequence = insertID++; - var specialStr = "91.1.1"; - var strBuf = random.getRandomString(len, specialStr); - var content = Buffer.from(strBuf, "utf-8"); + let len = 400; + let sequence = insertID++; + let specialStr = "91.1.1"; + let strBuf = random.getRandomString(len, specialStr); + let content = Buffer.from(strBuf, "utf-8"); - async.series([ - function(cb) { - executeSQL(proc, cb); - }, - function(cb) { - var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - [ { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, content ], - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds[0]; - var compareBuffer = assist.compare2Buffers(content, resultVal); - should.strictEqual(compareBuffer, true); - cb(); - } - ); - }, - function(cb) { - executeSQL(proc_drop, cb); - } - ], done); + await connection.execute(proc); + + const sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + [ { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, content ] + ); + let resultVal = result.outBinds[0]; + assert.deepStrictEqual(content, resultVal); + + await connection.execute(proc_drop); }); // 91.1.1 - it('91.1.2 bind by name - 1', function(done) { - var proc = "CREATE OR REPLACE FUNCTION nodb_blobs_out_94 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN RAW) RETURN BLOB \n" + + it('91.1.2 bind by name - 1', async function() { + const proc = "CREATE OR REPLACE FUNCTION nodb_blobs_out_94 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN RAW) RETURN BLOB \n" + "IS \n" + " tmpLOB4 BLOB; \n" + "BEGIN \n" + " select blob into tmpLOB4 from nodb_blob_1 where num_1 = ID_1;\n" + " RETURN tmpLOB4; \n" + "END;"; - var sqlRun = "begin :output := nodb_blobs_out_94 (:i1, :i2, :c); end;"; - var proc_drop = "DROP FUNCTION nodb_blobs_out_94"; + const sqlRun = "begin :output := nodb_blobs_out_94 (:i1, :i2, :c); end;"; + const proc_drop = "DROP FUNCTION nodb_blobs_out_94"; - var len = 400; - var sequence = insertID++; - var specialStr = "91.1.2"; - var strBuf = random.getRandomString(len, specialStr); - var content = Buffer.from(strBuf, "utf-8"); + let len = 400; + let sequence = insertID++; + let specialStr = "91.1.2"; + let strBuf = random.getRandomString(len, specialStr); + let content = Buffer.from(strBuf, "utf-8"); - async.series([ - function(cb) { - executeSQL(proc, cb); - }, - function(cb) { - var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN }, - output: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } - }, - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds.output; - var compareBuffer = assist.compare2Buffers(resultVal, content); - should.strictEqual(compareBuffer, true); - cb(); - } - ); - }, - function(cb) { - executeSQL(proc_drop, cb); + await connection.execute(proc); + + const sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN }, + output: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } } - ], done); + ); + let resultVal = result.outBinds.output; + assert.deepStrictEqual(resultVal, content); + + await connection.execute(proc_drop); }); // 91.1.2 - it('91.1.3 bind by position - 2', function(done) { - var proc = "CREATE OR REPLACE FUNCTION nodb_blobs_out_94 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN RAW) RETURN BLOB \n" + + it('91.1.3 bind by position - 2', async function() { + const proc = "CREATE OR REPLACE FUNCTION nodb_blobs_out_94 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN RAW) RETURN BLOB \n" + "IS \n" + " tmpLOB4 BLOB; \n" + "BEGIN \n" + " select blob into tmpLOB4 from nodb_blob_1 where num_1 = ID_1;\n" + " RETURN tmpLOB4; \n" + "END;"; - var sqlRun = "begin :output := nodb_blobs_out_94 (:i1, :i2, :c); end;"; - var proc_drop = "DROP FUNCTION nodb_blobs_out_94"; + const sqlRun = "begin :output := nodb_blobs_out_94 (:i1, :i2, :c); end;"; + const proc_drop = "DROP FUNCTION nodb_blobs_out_94"; - var len = 400; - var sequence = insertID++; - var specialStr = "91.1.3"; - var strBuf = random.getRandomString(len, specialStr); - var content = Buffer.from(strBuf, "utf-8"); + let len = 400; + let sequence = insertID++; + let specialStr = "91.1.3"; + let strBuf = random.getRandomString(len, specialStr); + let content = Buffer.from(strBuf, "utf-8"); - async.series([ - function(cb) { - executeSQL(proc, cb); - }, - function(cb) { - var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - [ { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null ], - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds[0]; - var compareBuffer = assist.compare2Buffers(resultVal, content); - should.strictEqual(compareBuffer, true); - cb(); - } - ); - }, - function(cb) { - executeSQL(proc_drop, cb); - } - ], done); + await connection.execute(proc); + + const sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + [ { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null ] + ); + let resultVal = result.outBinds[0]; + assert.deepStrictEqual(resultVal, content); + + await connection.execute(proc_drop); }); // 91.1.3 - it('91.1.4 bind by name - 2', function(done) { - var proc = "CREATE OR REPLACE FUNCTION nodb_blobs_out_94 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN RAW) RETURN BLOB \n" + + it('91.1.4 bind by name - 2', async function() { + const proc = "CREATE OR REPLACE FUNCTION nodb_blobs_out_94 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN RAW) RETURN BLOB \n" + "IS \n" + " tmpLOB4 BLOB; \n" + "BEGIN \n" + " select blob into tmpLOB4 from nodb_blob_1 where num_1 = ID_1;\n" + " RETURN tmpLOB4; \n" + "END;"; - var sqlRun = "begin :output := nodb_blobs_out_94 (:i1, :i2, :c); end;"; - var proc_drop = "DROP FUNCTION nodb_blobs_out_94"; + const sqlRun = "begin :output := nodb_blobs_out_94 (:i1, :i2, :c); end;"; + const proc_drop = "DROP FUNCTION nodb_blobs_out_94"; - var len = 400; - var sequence = insertID++; - var specialStr = "91.1.4"; - var strBuf = random.getRandomString(len, specialStr); - var content = Buffer.from(strBuf, "utf-8"); + let len = 400; + let sequence = insertID++; + let specialStr = "91.1.4"; + let strBuf = random.getRandomString(len, specialStr); + let content = Buffer.from(strBuf, "utf-8"); - async.series([ - function(cb) { - executeSQL(proc, cb); - }, - function(cb) { - var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c: { val: null, type: oracledb.BUFFER, dir: oracledb.BIND_IN }, - output: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } - }, - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds.output; - var compareBuffer = assist.compare2Buffers(resultVal, content); - should.strictEqual(compareBuffer, true); - cb(); - } - ); - }, - function(cb) { - executeSQL(proc_drop, cb); + await connection.execute(proc); + + const sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c: { val: null, type: oracledb.BUFFER, dir: oracledb.BIND_IN }, + output: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } } - ], done); + ); + let resultVal = result.outBinds.output; + assert.deepStrictEqual(resultVal, content); + + await connection.execute(proc_drop); }); // 91.1.4 }); // 91.1 describe('91.2 PLSQL PROCEDURE BIND OUT BLOB to BUFFER', function() { - var proc = "CREATE OR REPLACE PROCEDURE nodb_blobs_out_92 (ID_1 IN NUMBER, ID_2 IN NUMBER, C1 IN RAW, C2 OUT BLOB) \n" + - "AS \n" + - "BEGIN \n" + - " select blob into C2 from nodb_blob_1 where num_1 = ID_1;\n" + - "END;"; - var sqlRun = "begin nodb_blobs_out_92 (:i1, :i2, :c1, :c2); end;"; - var proc_drop = "DROP PROCEDURE nodb_blobs_out_92"; + const proc = "CREATE OR REPLACE PROCEDURE nodb_blobs_out_92 (ID_1 IN NUMBER, ID_2 IN NUMBER, C1 IN RAW, C2 OUT BLOB) \n" + + "AS \n" + + "BEGIN \n" + + " select blob into C2 from nodb_blob_1 where num_1 = ID_1;\n" + + "END;"; + const sqlRun = "begin nodb_blobs_out_92 (:i1, :i2, :c1, :c2); end;"; + const proc_drop = "DROP PROCEDURE nodb_blobs_out_92"; - beforeEach('set oracledb.fetchAsBuffer', function(done) { + beforeEach('set oracledb.fetchAsBuffer', function() { oracledb.fetchAsBuffer = [ oracledb.BLOB ]; - done(); }); // beforeEach - afterEach('clear the By type specification', function(done) { + afterEach('clear the By type specification', function() { oracledb.fetchAsBuffer = []; - done(); }); // afterEach - it('91.2.1 bind by position - 1', function(done) { - var len = 500; - var sequence = insertID++; - var specialStr = "91.2.1"; - var strBuf = random.getRandomString(len, specialStr); - var content = Buffer.from(strBuf, "utf-8"); + it('91.2.1 bind by position - 1', async function() { + let len = 500; + let sequence = insertID++; + let specialStr = "91.2.1"; + let strBuf = random.getRandomString(len, specialStr); + let content = Buffer.from(strBuf, "utf-8"); - async.series([ - function(cb) { - executeSQL(proc, cb); - }, - function(cb) { - var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - [ sequence, null, content, { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } ], - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds[0]; - var compareBuffer = assist.compare2Buffers(resultVal, content); - should.strictEqual(compareBuffer, true); - cb(); - } - ); - }, - function(cb) { - executeSQL(proc_drop, cb); - } - ], done); + await connection.execute(proc); + const sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + [ sequence, null, content, { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } ] + ); + let resultVal = result.outBinds[0]; + assert.deepStrictEqual(resultVal, content); + + await connection.execute(proc_drop); }); // 91.2.1 - it('91.2.2 bind by name - 1', function(done) { - var len = 400; - var sequence = insertID++; - var specialStr = "91.2.2"; - var strBuf = random.getRandomString(len, specialStr); - var content = Buffer.from(strBuf, "utf-8"); + it('91.2.2 bind by name - 1', async function() { + let len = 400; + let sequence = insertID++; + let specialStr = "91.2.2"; + let strBuf = random.getRandomString(len, specialStr); + let content = Buffer.from(strBuf, "utf-8"); - async.series([ - function(cb) { - executeSQL(proc, cb); - }, - function(cb) { - var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN }, - c2: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } - }, - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds.c2; - var compareBuffer = assist.compare2Buffers(resultVal, content); - should.strictEqual(compareBuffer, true); - cb(); - } - ); - }, - function(cb) { - executeSQL(proc_drop, cb); + await connection.execute(proc); + + const sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN }, + c2: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } } - ], done); + ); + let resultVal = result.outBinds.c2; + assert.deepStrictEqual(resultVal, content); + + await connection.execute(proc_drop); }); // 91.2.2 - it('91.2.3 bind by position - 2', function(done) { - var len = 500; - var sequence = insertID++; - var specialStr = "91.2.3"; - var strBuf = random.getRandomString(len, specialStr); - var content = Buffer.from(strBuf, "utf-8"); + it('91.2.3 bind by position - 2', async function() { + let len = 500; + let sequence = insertID++; + let specialStr = "91.2.3"; + let strBuf = random.getRandomString(len, specialStr); + let content = Buffer.from(strBuf, "utf-8"); - async.series([ - function(cb) { - executeSQL(proc, cb); - }, - function(cb) { - var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - [ sequence, sequence, null, { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } ], - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds[0]; - var compareBuffer = assist.compare2Buffers(resultVal, content); - should.strictEqual(compareBuffer, true); - cb(); - } - ); - }, - function(cb) { - executeSQL(proc_drop, cb); - } - ], done); + await connection.execute(proc); + + const sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + [ sequence, sequence, null, { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } ] + ); + let resultVal = result.outBinds[0]; + assert.deepStrictEqual(resultVal, content); + + await connection.execute(proc_drop); }); // 91.2.3 - it('91.2.4 bind by name - 2', function(done) { - var len = 400; - var sequence = insertID++; - var specialStr = "91.2.4"; - var strBuf = random.getRandomString(len, specialStr); - var content = Buffer.from(strBuf, "utf-8"); + it('91.2.4 bind by name - 2', async function() { + let len = 400; + let sequence = insertID++; + let specialStr = "91.2.4"; + let strBuf = random.getRandomString(len, specialStr); + let content = Buffer.from(strBuf, "utf-8"); - async.series([ - function(cb) { - executeSQL(proc, cb); - }, - function(cb) { - var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: null, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, - c2: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } - }, - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds.c2; - var compareBuffer = assist.compare2Buffers(resultVal, content); - should.strictEqual(compareBuffer, true); - cb(); - } - ); - }, - function(cb) { - executeSQL(proc_drop, cb); + await connection.execute(proc); + + const sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: null, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, + c2: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } } - ], done); + ); + let resultVal = result.outBinds.c2; + assert.deepStrictEqual(resultVal, content); + + await connection.execute(proc_drop); }); // 91.2.4 }); // 91.2 describe('91.3 PLSQL FUNCTION RETURN BLOB to RAW', function() { - var proc = "CREATE OR REPLACE FUNCTION nodb_blobs_out_92 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN VARCHAR2) RETURN RAW \n" + + const proc = "CREATE OR REPLACE FUNCTION nodb_blobs_out_92 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN VARCHAR2) RETURN RAW \n" + "IS \n" + " tmpLOB2 BLOB; \n" + "BEGIN \n" + " select blob into tmpLOB2 from nodb_blob_1 where num_1 = ID_1;\n" + " RETURN tmpLOB2; \n" + "END;"; - var sqlRun = "begin :output := nodb_blobs_out_92 (:i1, :i2, :c); end;"; - var proc_drop = "DROP FUNCTION nodb_blobs_out_92"; + const sqlRun = "begin :output := nodb_blobs_out_92 (:i1, :i2, :c); end;"; + const proc_drop = "DROP FUNCTION nodb_blobs_out_92"; - before(function(done) { - executeSQL(proc, done); + before(async function() { + await connection.execute(proc); }); // before - after(function(done) { - executeSQL(proc_drop, done); + after(async function() { + await connection.execute(proc_drop); }); // after - beforeEach('set oracledb.fetchAsBuffer', function(done) { + beforeEach('set oracledb.fetchAsBuffer', function() { oracledb.fetchAsBuffer = [ oracledb.BLOB ]; - done(); }); // beforeEach - afterEach('clear the By type specification', function(done) { + afterEach('clear the By type specification', function() { oracledb.fetchAsBuffer = []; - done(); }); // afterEach - it('91.3.1 bind by name - 1', function(done) { - var len = 1000; - var sequence = insertID++; - var specialStr = "91.3.1"; - var strBuf = random.getRandomString(len, specialStr); - var content = Buffer.from(strBuf, "utf-8"); + it('91.3.1 bind by name - 1', async function() { + let len = 1000; + let sequence = insertID++; + let specialStr = "91.3.1"; + let strBuf = random.getRandomString(len, specialStr); + let content = Buffer.from(strBuf, "utf-8"); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN }, - output: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } - }, - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds.output; - var compareBuffer = assist.compare2Buffers(resultVal, content); - should.strictEqual(compareBuffer, true); - cb(); - } - ); + const sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN }, + output: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } } - ], done); + ); + let resultVal = result.outBinds.output; + assert.deepStrictEqual(resultVal, content); }); // 91.3.1 - it('91.3.2 bind by position - 1', function(done) { - var len = 1000; - var sequence = insertID++; - var specialStr = "91.3.2"; - var strBuf = random.getRandomString(len, specialStr); - var content = Buffer.from(strBuf, "utf-8"); + it('91.3.2 bind by position - 1', async function() { + let len = 1000; + let sequence = insertID++; + let specialStr = "91.3.2"; + let strBuf = random.getRandomString(len, specialStr); + let content = Buffer.from(strBuf, "utf-8"); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - [ - { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, content - ], - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds[0]; - var compareBuffer = assist.compare2Buffers(resultVal, content); - should.strictEqual(compareBuffer, true); - cb(); - } - ); - } - ], done); + const sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + [ + { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, content + ] + ); + let resultVal = result.outBinds[0]; + assert.deepStrictEqual(resultVal, content); }); // 91.3.2 - it('91.3.3 bind by name - 2', function(done) { - var len = 1000; - var sequence = insertID++; - var specialStr = "91.3.3"; - var strBuf = random.getRandomString(len, specialStr); - var content = Buffer.from(strBuf, "utf-8"); + it('91.3.3 bind by name - 2', async function() { + let len = 1000; + let sequence = insertID++; + let specialStr = "91.3.3"; + let strBuf = random.getRandomString(len, specialStr); + let content = Buffer.from(strBuf, "utf-8"); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c: { val: null, type: oracledb.BUFFER, dir: oracledb.BIND_IN }, - output: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } - }, - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds.output; - var compareBuffer = assist.compare2Buffers(resultVal, content); - should.strictEqual(compareBuffer, true); - cb(); - } - ); + const sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c: { val: null, type: oracledb.BUFFER, dir: oracledb.BIND_IN }, + output: { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len } } - ], done); + ); + let resultVal = result.outBinds.output; + assert.deepStrictEqual(resultVal, content); }); // 91.3.3 - it('91.3.4 bind by position - 2', function(done) { - var len = 1000; - var sequence = insertID++; - var specialStr = "91.3.4"; - var strBuf = random.getRandomString(len, specialStr); - var content = Buffer.from(strBuf, "utf-8"); + it('91.3.4 bind by position - 2', async function() { + let len = 1000; + let sequence = insertID++; + let specialStr = "91.3.4"; + let strBuf = random.getRandomString(len, specialStr); + let content = Buffer.from(strBuf, "utf-8"); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - [ - { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null - ], - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds[0]; - var compareBuffer = assist.compare2Buffers(resultVal, content); - should.strictEqual(compareBuffer, true); - cb(); - } - ); - } - ], done); + const sql = "INSERT INTO nodb_blob_1 (num_1, num_2, content, blob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: content, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + [ + { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null + ] + ); + let resultVal = result.outBinds[0]; + assert.deepStrictEqual(resultVal, content); }); // 91.3.4 }); // 91.3 diff --git a/test/fetchClobAsString2.js b/test/fetchClobAsString2.js index 67d15b47..cd8084e2 100644 --- a/test/fetchClobAsString2.js +++ b/test/fetchClobAsString2.js @@ -109,7 +109,7 @@ describe('85. fetchClobAsString2.js', function() { const compareStrings = function(resultVal, specialStr, content, contentLength) { let specialStrLen = specialStr.length; let resultLen = resultVal.length; - assert.equal(resultLen, contentLength); + assert.strictEqual(resultLen, contentLength); assert.strictEqual(resultVal.substring(0, specialStrLen), specialStr); assert.strictEqual(resultVal.substring(resultLen - specialStrLen, resultLen), specialStr); }; @@ -137,7 +137,7 @@ describe('85. fetchClobAsString2.js', function() { ); let resultVal = result.rows[0][1]; if (specialStr === null) { - assert.equal(resultVal, null); + assert.strictEqual(resultVal, null); } else { compareStrings(resultVal, specialStr, insertContent, insertContentLength); } @@ -543,7 +543,7 @@ describe('85. fetchClobAsString2.js', function() { ); let resultVal = result.rows[0].C; if (specialStr === null) { - assert.equal(resultVal, null); + assert.strictEqual(resultVal, null); } else { compareStrings(resultVal, specialStr, insertContent, insertContentLength); } @@ -824,7 +824,7 @@ describe('85. fetchClobAsString2.js', function() { let resultVal = row.C; if (specialStr === null) { - assert.equal(resultVal, null); + assert.strictEqual(resultVal, null); } else { compareStrings(resultVal, specialStr, insertContent, insertContentLength); } @@ -1092,7 +1092,7 @@ describe('85. fetchClobAsString2.js', function() { ); let resultVal = result.rows[0][1]; if (specialStr === null) { - assert.equal(resultVal, null); + assert.strictEqual(resultVal, null); } else { compareStrings(resultVal, specialStr, insertContent, insertContentLength); } @@ -1370,7 +1370,7 @@ describe('85. fetchClobAsString2.js', function() { let resultVal = row[1]; if (specialStr === null) { - assert.equal(resultVal, null); + assert.strictEqual(resultVal, null); } else { compareStrings(resultVal, specialStr, insertContent, insertContentLength); } diff --git a/test/fetchClobAsString3.js b/test/fetchClobAsString3.js index d35ba0db..3502133a 100644 --- a/test/fetchClobAsString3.js +++ b/test/fetchClobAsString3.js @@ -34,357 +34,260 @@ 'use strict'; const oracledb = require('oracledb'); -const async = require('async'); -const should = require('should'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); const random = require('./random.js'); describe('86. fetchClobAsString3.js', function() { let connection = null; - var insertID = 1; // assume id for insert into db starts from 1 - var proc_create_table2 = "BEGIN \n" + - " DECLARE \n" + - " e_table_missing EXCEPTION; \n" + - " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + - " BEGIN \n" + - " EXECUTE IMMEDIATE('DROP TABLE nodb_clob2 PURGE'); \n" + - " EXCEPTION \n" + - " WHEN e_table_missing \n" + - " THEN NULL; \n" + - " END; \n" + - " EXECUTE IMMEDIATE (' \n" + - " CREATE TABLE nodb_clob2 ( \n" + - " ID NUMBER, \n" + - " C1 CLOB, \n" + - " C2 CLOB \n" + - " ) \n" + - " '); \n" + - "END; "; - var drop_table2 = "DROP TABLE nodb_clob2 PURGE"; - var defaultStmtCache = oracledb.stmtCacheSize; + let insertID = 1; // assume id for insert into db starts from 1 + const proc_create_table2 = "BEGIN \n" + + " DECLARE \n" + + " e_table_missing EXCEPTION; \n" + + " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + + " BEGIN \n" + + " EXECUTE IMMEDIATE('DROP TABLE nodb_clob2 PURGE'); \n" + + " EXCEPTION \n" + + " WHEN e_table_missing \n" + + " THEN NULL; \n" + + " END; \n" + + " EXECUTE IMMEDIATE (' \n" + + " CREATE TABLE nodb_clob2 ( \n" + + " ID NUMBER, \n" + + " C1 CLOB, \n" + + " C2 CLOB \n" + + " ) \n" + + " '); \n" + + "END; "; + const drop_table2 = "DROP TABLE nodb_clob2 PURGE"; + let defaultStmtCache = oracledb.stmtCacheSize; - before('get one connection', function(done) { + before('get one connection', async function() { oracledb.stmtCacheSize = 0; - oracledb.getConnection(dbConfig, function(err, conn) { - should.not.exist(err); - connection = conn; - done(); - }); + connection = await oracledb.getConnection(dbConfig); }); // before - after('release connection', function(done) { + after('release connection', async function() { oracledb.stmtCacheSize = defaultStmtCache; - connection.close(function(err) { - should.not.exist(err); - done(); - }); + await connection.close(); }); // after - var insertIntoClobTable2 = function(id, content1, content2, callback) { - connection.execute( + const insertIntoClobTable2 = async function(id, content1, content2) { + let result = await connection.execute( "INSERT INTO nodb_clob2 VALUES (:ID, :C1, :C2)", - [ id, content1, content2 ], - function(err, result) { - should.not.exist(err); - should.strictEqual(result.rowsAffected, 1); - callback(); - } + [ id, content1, content2 ] ); + assert.strictEqual(result.rowsAffected, 1); }; describe('86.1 fetch multiple CLOBs and result set', function() { - before('create Table and populate', function(done) { - connection.execute( - proc_create_table2, - function(err) { - should.not.exist(err); - done() ; - } - ); + before('create Table and populate', async function() { + await connection.execute(proc_create_table2); }); // before - after('drop table', function(done) { + after('drop table', async function() { oracledb.fetchAsString = []; - connection.execute( - drop_table2, - function(err) { - should.not.exist(err); - done(); - } - ); + await connection.execute(drop_table2); }); // after - beforeEach('set oracledb.fetchAsString', function(done) { + beforeEach('set oracledb.fetchAsString', function() { oracledb.fetchAsString = [ oracledb.CLOB ]; - done(); }); // beforeEach - afterEach('clear the By type specification', function(done) { + afterEach('clear the By type specification', function() { oracledb.fetchAsString = []; - done(); }); // afterEach - it('86.1.1 fetch multiple CLOB columns as String', function(done) { - var id = insertID++; - var specialStr_1 = '86.1.1_1'; - var contentLength_1 = 26; - var content_1 = random.getRandomString(contentLength_1, specialStr_1); - var specialStr_2 = '86.1.1_2'; - var contentLength_2 = 100; - var content_2 = random.getRandomString(contentLength_2, specialStr_2); + it('86.1.1 fetch multiple CLOB columns as String', async function() { + let id = insertID++; + let specialStr_1 = '86.1.1_1'; + const contentLength_1 = 26; + let content_1 = random.getRandomString(contentLength_1, specialStr_1); + let specialStr_2 = '86.1.1_2'; + const contentLength_2 = 100; + let content_2 = random.getRandomString(contentLength_2, specialStr_2); - async.series([ - function(cb) { - insertIntoClobTable2(id, content_1, content_2, cb); - }, - function(cb) { - connection.execute( - "SELECT ID, C1, C2 from nodb_clob2", - function(err, result) { - should.not.exist(err); - var specialStrLen_1 = specialStr_1.length; - var resultLen_1 = result.rows[0][1].length; - should.equal(result.rows[0][1].length, contentLength_1); - should.strictEqual(result.rows[0][1].substring(0, specialStrLen_1), specialStr_1); - should.strictEqual(result.rows[0][1].substring(resultLen_1 - specialStrLen_1, resultLen_1), specialStr_1); + await insertIntoClobTable2(id, content_1, content_2); - var specialStrLen_2 = specialStr_2.length; - var resultLen_2 = result.rows[0][2].length; - should.equal(result.rows[0][2].length, contentLength_2); - should.strictEqual(result.rows[0][2].substring(0, specialStrLen_2), specialStr_2); - should.strictEqual(result.rows[0][2].substring(resultLen_2 - specialStrLen_2, resultLen_2), specialStr_2); - cb(); - } - ); - } - ], done); + let result = await connection.execute("SELECT ID, C1, C2 from nodb_clob2"); + let specialStrLen_1 = specialStr_1.length; + let resultLen_1 = result.rows[0][1].length; + assert.strictEqual(result.rows[0][1].length, contentLength_1); + assert.strictEqual(result.rows[0][1].substring(0, specialStrLen_1), specialStr_1); + assert.strictEqual(result.rows[0][1].substring(resultLen_1 - specialStrLen_1, resultLen_1), specialStr_1); + let specialStrLen_2 = specialStr_2.length; + let resultLen_2 = result.rows[0][2].length; + assert.strictEqual(result.rows[0][2].length, contentLength_2); + assert.strictEqual(result.rows[0][2].substring(0, specialStrLen_2), specialStr_2); + assert.strictEqual(result.rows[0][2].substring(resultLen_2 - specialStrLen_2, resultLen_2), specialStr_2); }); // 86.1.1 - it('86.1.2 fetch two CLOB columns, one as string, another streamed', function(done) { - var id = insertID++; - var specialStr_1 = '86.1.2_1'; - var contentLength_1 = 30; - var content_1 = random.getRandomString(contentLength_1, specialStr_1); - var specialStr_2 = '86.1.2_2'; - var contentLength_2 = 50; - var content_2 = random.getRandomString(contentLength_2, specialStr_2); + it('86.1.2 fetch two CLOB columns, one as string, another streamed', async function() { + let id = insertID++; + const specialStr_1 = '86.1.2_1'; + const contentLength_1 = 30; + let content_1 = random.getRandomString(contentLength_1, specialStr_1); + const specialStr_2 = '86.1.2_2'; + const contentLength_2 = 50; + let content_2 = random.getRandomString(contentLength_2, specialStr_2); - async.series([ - function(cb) { - insertIntoClobTable2(id, content_1, content_2, cb); - }, - function(cb) { - connection.execute( - "SELECT ID, C1 from nodb_clob2 where ID = :id", - { id: id }, - function(err, result) { - should.not.exist(err); - var specialStrLen_1 = specialStr_1.length; - var resultLen_1 = result.rows[0][1].length; - should.equal(result.rows[0][1].length, contentLength_1); - should.strictEqual(result.rows[0][1].substring(0, specialStrLen_1), specialStr_1); - should.strictEqual(result.rows[0][1].substring(resultLen_1 - specialStrLen_1, resultLen_1), specialStr_1); - cb(); - } - ); - }, - function(cb) { - oracledb.fetchAsString = []; + await insertIntoClobTable2(id, content_1, content_2); - connection.execute( - "SELECT C2 from nodb_clob2 where ID = :id", - { id: id }, - function(err, result) { - should.not.exist(err); - (result.rows.length).should.not.eql(0); - var lob = result.rows[0][0]; - should.exist(lob); + let result = await connection.execute( + "SELECT ID, C1 from nodb_clob2 where ID = :id", + { id: id } + ); + let specialStrLen_1 = specialStr_1.length; + let resultLen_1 = result.rows[0][1].length; + assert.strictEqual(result.rows[0][1].length, contentLength_1); + assert.strictEqual(result.rows[0][1].substring(0, specialStrLen_1), specialStr_1); + assert.strictEqual(result.rows[0][1].substring(resultLen_1 - specialStrLen_1, resultLen_1), specialStr_1); - // set the encoding so we get a 'string' not a 'String' - lob.setEncoding('utf8'); - var clobData = ''; - - lob.on('data', function(chunk) { - clobData += chunk; - }); - - lob.on('error', function(err) { - should.not.exist(err, "lob.on 'error' event."); - }); - - lob.on('end', function() { - should.not.exist(err); - var specialStrLen_2 = specialStr_2.length; - var resultLen_2 = clobData.length; - should.equal(clobData.length, contentLength_2); - should.strictEqual(clobData.substring(0, specialStrLen_2), specialStr_2); - should.strictEqual(clobData.substring(resultLen_2 - specialStrLen_2, resultLen_2), specialStr_2); - - cb(); - }); - } - ); - } - ], done); + oracledb.fetchAsString = []; + result = await connection.execute( + "SELECT C2 from nodb_clob2 where ID = :id", + { id: id } + ); + assert.notStrictEqual(result.rows.length, 0); + let lob = result.rows[0][0]; + assert(lob); + // set the encoding so we get a 'string' not a 'String' + lob.setEncoding('utf8'); + let clobData = await lob.getData(); + let specialStrLen_2 = specialStr_2.length; + let resultLen_2 = clobData.length; + assert.strictEqual(clobData.length, contentLength_2); + assert.strictEqual(clobData.substring(0, specialStrLen_2), specialStr_2); + assert.strictEqual(clobData.substring(resultLen_2 - specialStrLen_2, resultLen_2), specialStr_2); }); // 86.1.2 - it('86.1.3 works with Restult Set', function(done) { - var id = insertID++; - var specialStr_1 = '86.1.3'; - var contentLength_1 = 387; - var content_1 = random.getRandomString(contentLength_1, specialStr_1); + it('86.1.3 works with Restult Set', async function() { + let id = insertID++; + let specialStr_1 = '86.1.3'; + let contentLength_1 = 387; + let content_1 = random.getRandomString(contentLength_1, specialStr_1); - async.series([ - function(cb) { - var sql = "insert into nodb_clob2(id, c1) values (:i, :c)"; - connection.execute( - sql, - { - i: id, - c: content_1 - }, - function(err) { - should.not.exist(err); - cb(); - } + let doClose = async function(rs) { + await rs.close(); + }; + + let fetchOneRowFromRS = async function(rs) { + let row = await rs.getRow(); + if (!row) { + await doClose(rs); + } else { + let specialStrLen_1 = specialStr_1.length; + let resultLen_1 = row[0].length; + assert.strictEqual(row[0].length, contentLength_1); + assert.strictEqual( + row[0].substring(0, specialStrLen_1), + specialStr_1 ); - }, - function(cb) { - connection.execute( - "select c1 from nodb_clob2 where id = :1", - [id], - { resultSet: true }, - function(err, result) { - should.not.exist(err); - fetchOneRowFromRS(result.resultSet, cb); - } + assert.strictEqual( + row[0].substring(resultLen_1 - specialStrLen_1, resultLen_1), + specialStr_1 ); + await fetchOneRowFromRS(rs); } - ], done); - - var fetchOneRowFromRS = function(rs, callback) { - rs.getRow( - function(err, row) { - if (err) { - should.not.exist(err); - doClose(rs, callback); - } else if (!row) { - doClose(rs, callback); - } else { - var specialStrLen_1 = specialStr_1.length; - var resultLen_1 = row[0].length; - should.equal(row[0].length, contentLength_1); - should.strictEqual( - row[0].substring(0, specialStrLen_1), - specialStr_1 - ); - should.strictEqual( - row[0].substring(resultLen_1 - specialStrLen_1, resultLen_1), - specialStr_1 - ); - fetchOneRowFromRS(rs, callback); - } - } - ); }; - var doClose = function(rs, callback) { - rs.close(function(err) { - should.not.exist(err); - callback(); - }); - }; + let sql = "insert into nodb_clob2(id, c1) values (:i, :c)"; + await connection.execute( + sql, + { + i: id, + c: content_1 + } + ); + let result = await connection.execute( + "select c1 from nodb_clob2 where id = :1", + [id], + { resultSet: true } + ); + await fetchOneRowFromRS(result.resultSet); }); // 86.1.3 }); // 86.1 describe('86.2 types support for fetchAsString property', function() { - afterEach ('clear the by-type specification', function(done) { + afterEach ('clear the by-type specification', function() { oracledb.fetchAsString = []; - done (); }); - it('86.2.1 String not supported in fetchAsString', function(done) { - should.throws( + it('86.2.1 String not supported in fetchAsString', function() { + assert.throws( function() { oracledb.fetchAsString = [ oracledb.STRING ]; }, /NJS-021: invalid type for conversion specified/ ); - done(); }); // 86.2.1 - it('86.2.2 BLOB not supported in fetchAsString', function(done) { - should.throws( + it('86.2.2 BLOB not supported in fetchAsString', function() { + assert.throws( function() { oracledb.fetchAsString = [ oracledb.BLOB ]; }, /NJS-021: invalid type for conversion specified/ ); - done(); }); // 86.2.2 - it('86.2.3 Cursor not supported in fetchAsString', function(done) { - should.throws( + it('86.2.3 Cursor not supported in fetchAsString', function() { + assert.throws( function() { oracledb.fetchAsString = [ oracledb.CURSOR ]; }, /NJS-021: invalid type for conversion specified/ ); - done(); }); // 86.2.3 - it('86.2.4 Buffer supported in fetchAsString', function(done) { - should.doesNotThrow( + it('86.2.4 Buffer supported in fetchAsString', function() { + assert.doesNotThrow( function() { oracledb.fetchAsString = [ oracledb.BUFFER ]; } ); - should.strictEqual(oracledb.fetchAsString.length, 1); - should.strictEqual(oracledb.fetchAsString[0], oracledb.BUFFER); - done(); + assert.strictEqual(oracledb.fetchAsString.length, 1); + assert.strictEqual(oracledb.fetchAsString[0], oracledb.BUFFER); }); // 86.2.4 - it('86.2.5 Number supported in fetchAsString', function(done) { - should.doesNotThrow( + it('86.2.5 Number supported in fetchAsString', function() { + assert.doesNotThrow( function() { oracledb.fetchAsString = [ oracledb.NUMBER ]; } ); - should.strictEqual(oracledb.fetchAsString.length, 1); - should.strictEqual(oracledb.fetchAsString[0], oracledb.NUMBER); - done(); + assert.strictEqual(oracledb.fetchAsString.length, 1); + assert.strictEqual(oracledb.fetchAsString[0], oracledb.NUMBER); }); // 86.2.5 - it('86.2.6 Date supported in fetchAsString', function(done) { - should.doesNotThrow( + it('86.2.6 Date supported in fetchAsString', function() { + assert.doesNotThrow( function() { oracledb.fetchAsString = [ oracledb.DATE ]; } ); - should.strictEqual(oracledb.fetchAsString.length, 1); - should.strictEqual(oracledb.fetchAsString[0], oracledb.DATE); - done(); + assert.strictEqual(oracledb.fetchAsString.length, 1); + assert.strictEqual(oracledb.fetchAsString[0], oracledb.DATE); }); // 86.2.6 - it('86.2.7 CLOB supported in fetchAsString', function(done) { - should.doesNotThrow( + it('86.2.7 CLOB supported in fetchAsString', function() { + assert.doesNotThrow( function() { oracledb.fetchAsString = [ oracledb.CLOB ]; } ); - should.strictEqual(oracledb.fetchAsString.length, 1); - should.strictEqual(oracledb.fetchAsString[0], oracledb.CLOB); - done(); + assert.strictEqual(oracledb.fetchAsString.length, 1); + assert.strictEqual(oracledb.fetchAsString[0], oracledb.CLOB); }); // 86.2.7 it('86.2.8 undefined in fetchAsString will throw NJS-021', function() { - should.throws( + assert.throws( function() { oracledb.fetchAsString = [ undefined ]; }, @@ -393,7 +296,7 @@ describe('86. fetchClobAsString3.js', function() { }); // 86.2.8 it('86.2.9 Random string in fetchAsString will throw NJS-021', function() { - should.throws( + assert.throws( function() { oracledb.fetchAsString = [ "foobar" ]; }, @@ -402,7 +305,7 @@ describe('86. fetchClobAsString3.js', function() { }); // 86.2.9 it('86.2.10 Random integer in fetchAsString will throw NJS-021', function() { - should.throws( + assert.throws( function() { oracledb.fetchAsString = [ 31415 ]; }, @@ -411,7 +314,7 @@ describe('86. fetchClobAsString3.js', function() { }); // 86.2.10 it('86.2.11 Negative integer in fetchAsString will throw NJS-021', function() { - should.throws( + assert.throws( function() { oracledb.fetchAsString = [ -1 ]; }, @@ -420,7 +323,7 @@ describe('86. fetchClobAsString3.js', function() { }); // 86.2.11 it('86.2.12 Random float in fetchAsString will throw NJS-021', function() { - should.throws( + assert.throws( function() { oracledb.fetchAsString = [ 3.1415 ]; }, @@ -429,7 +332,7 @@ describe('86. fetchClobAsString3.js', function() { }); // 86.2.12 it('86.2.13 Array in fetchAsString will throw NJS-021', function() { - should.throws( + assert.throws( function() { oracledb.fetchAsString = [ [3] ]; }, @@ -438,7 +341,7 @@ describe('86. fetchClobAsString3.js', function() { }); // 86.2.13 it('86.2.14 Object in fetchAsString will throw NJS-021', function() { - should.throws( + assert.throws( function() { oracledb.fetchAsString = [ {1:1} ]; }, @@ -447,7 +350,7 @@ describe('86. fetchClobAsString3.js', function() { }); // 86.2.14 it('86.2.15 Non-Array as fetchAsString will throw NJS-004', function() { - should.throws( + assert.throws( function() { oracledb.fetchAsString = 1; }, diff --git a/test/fetchClobAsString4.js b/test/fetchClobAsString4.js index 8dd16e6d..ba41bee0 100644 --- a/test/fetchClobAsString4.js +++ b/test/fetchClobAsString4.js @@ -32,16 +32,15 @@ 'use strict'; const oracledb = require('oracledb'); -const should = require('should'); -const async = require('async'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); const random = require('./random.js'); describe('90. fetchClobAsString4.js', function() { let connection = null; - var insertID = 1; // assume id for insert into db starts from 1 - var proc_clob_in_tab = "BEGIN \n" + + let insertID = 1; // assume id for insert into db starts from 1 + const proc_clob_in_tab = "BEGIN \n" + " DECLARE \n" + " e_table_missing EXCEPTION; \n" + " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + @@ -61,579 +60,416 @@ describe('90. fetchClobAsString4.js', function() { " '); \n" + "END; "; - before(function(done) { - async.series([ - function(cb) { - oracledb.getConnection(dbConfig, function(err, conn) { - should.not.exist(err); - connection = conn; - cb(); - }); - }, - function(cb) { - connection.execute( - proc_clob_in_tab, - function(err) { - should.not.exist(err); - cb(); - }); - } - ], done); - + before(async function() { + connection = await oracledb.getConnection(dbConfig); + await connection.execute(proc_clob_in_tab); }); // before - after(function(done) { - async.series([ - function(cb) { - oracledb.fetchAsString = []; - connection.execute( - "DROP TABLE nodb_clob_1 PURGE", - function(err) { - should.not.exist(err); - cb(); - }); - }, - function(cb) { - connection.close(function(err) { - should.not.exist(err); - cb(); - }); - } - ], done); - + after(async function() { + oracledb.fetchAsString = []; + await connection.execute("DROP TABLE nodb_clob_1 PURGE"); + await connection.close(); }); // after - var executeSQL = function(sql, callback) { - connection.execute( - sql, - function(err) { - should.not.exist(err); - return callback(); - } - ); + const insertTable = async function(insertSql, bindVar) { + let result = await connection.execute(insertSql, bindVar); + assert.strictEqual(result.rowsAffected, 1); }; - var insertTable = function(insertSql, bindVar, callback) { - connection.execute( - insertSql, - bindVar, - function(err, result) { - should.not.exist(err); - should.strictEqual(result.rowsAffected, 1); - callback(); - } - ); - }; - - var verifyResult = function(resultVal, specialStr, originalStr) { - var resultLength = resultVal.length; - var specStrLength = specialStr.length; - should.strictEqual(resultLength, originalStr.length); - should.strictEqual(resultVal.substring(0, specStrLength), specialStr); - should.strictEqual(resultVal.substring(resultLength - specStrLength, resultLength), specialStr); + let verifyResult = function(resultVal, specialStr, originalStr) { + let resultLength = resultVal.length; + let specStrLength = specialStr.length; + assert.strictEqual(resultLength, originalStr.length); + assert.strictEqual(resultVal.substring(0, specStrLength), specialStr); + assert.strictEqual(resultVal.substring(resultLength - specStrLength, resultLength), specialStr); }; describe('90.1 PLSQL FUNCTION RETURN CLOB to STRING', function() { - var proc = "CREATE OR REPLACE FUNCTION nodb_clobs_out_94 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN VARCHAR2) RETURN CLOB \n" + + const proc = "CREATE OR REPLACE FUNCTION nodb_clobs_out_94 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN VARCHAR2) RETURN CLOB \n" + "IS \n" + " tmpLOB4 CLOB; \n" + "BEGIN \n" + " select clob into tmpLOB4 from nodb_clob_1 where num_1 = ID_1;\n" + " RETURN tmpLOB4; \n" + "END;"; - var sqlRun = "begin :output := nodb_clobs_out_94 (:i1, :i2, :c); end;"; - var proc_drop = "DROP FUNCTION nodb_clobs_out_94"; + const sqlRun = "begin :output := nodb_clobs_out_94 (:i1, :i2, :c); end;"; + const proc_drop = "DROP FUNCTION nodb_clobs_out_94"; - before(function(done) { - executeSQL(proc, done); + before(async function() { + await connection.execute(proc); }); - after(function(done) { - executeSQL(proc_drop, done); + after(async function() { + await connection.execute(proc_drop); }); - beforeEach('set oracledb.fetchAsString', function(done) { + beforeEach('set oracledb.fetchAsString', function() { oracledb.fetchAsString = [ oracledb.CLOB ]; - done(); }); // beforeEach - afterEach('clear the By type specification', function(done) { + afterEach('clear the By type specification', function() { oracledb.fetchAsString = []; - done(); }); // afterEach - it('90.1.1 bind by position - 1', function(done) { - var len = 400; - var sequence = insertID++; - var specialStr = "90.1.1"; - var clobStr = random.getRandomString(len, specialStr); + it('90.1.1 bind by position - 1', async function() { + const len = 400; + let sequence = insertID++; + const specialStr = "90.1.1"; + let clobStr = random.getRandomString(len, specialStr); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - [ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, clobStr], - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds[0]; - verifyResult(resultVal, specialStr, clobStr); - cb(); - } - ); - } - ], done); + let sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + [ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, clobStr] + ); + let resultVal = result.outBinds[0]; + verifyResult(resultVal, specialStr, clobStr); }); // 90.1.1 - it('90.1.2 bind by name - 1', function(done) { - var len = 400; - var sequence = insertID++; - var specialStr = "90.1.2"; - var clobStr = random.getRandomString(len, specialStr); + it('90.1.2 bind by name - 1', async function() { + const len = 400; + let sequence = insertID++; + const specialStr = "90.1.2"; + let clobStr = random.getRandomString(len, specialStr); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN }, - output: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } - }, - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds.output; - verifyResult(resultVal, specialStr, clobStr); - cb(); - } - ); + let sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + let result = await connection.execute( + sqlRun, + { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN }, + output: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } } - ], done); + ); + let resultVal = result.outBinds.output; + verifyResult(resultVal, specialStr, clobStr); }); // 90.1.2 - it('90.1.3 bind by position - 2', function(done) { - var len = 400; - var sequence = insertID++; - var specialStr = "90.1.2"; - var clobStr = random.getRandomString(len, specialStr); + it('90.1.3 bind by position - 2', async function() { + const len = 400; + let sequence = insertID++; + const specialStr = "90.1.2"; + let clobStr = random.getRandomString(len, specialStr); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - [ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null ], - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds[0]; - verifyResult(resultVal, specialStr, clobStr); - cb(); - } - ); - } - ], done); + let sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + [ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null ] + ); + let resultVal = result.outBinds[0]; + verifyResult(resultVal, specialStr, clobStr); }); // 90.1.3 - it('90.1.4 bind by name - 2', function(done) { - var len = 400; - var sequence = insertID++; - var specialStr = "90.1.4"; - var clobStr = random.getRandomString(len, specialStr); + it('90.1.4 bind by name - 2', async function() { + const len = 400; + let sequence = insertID++; + const specialStr = "90.1.4"; + let clobStr = random.getRandomString(len, specialStr); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c: { val: null, type: oracledb.STRING, dir: oracledb.BIND_IN }, - output: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } - }, - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds.output; - verifyResult(resultVal, specialStr, clobStr); - cb(); - } - ); + let sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c: { val: null, type: oracledb.STRING, dir: oracledb.BIND_IN }, + output: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } } - ], done); + ); + let resultVal = result.outBinds.output; + verifyResult(resultVal, specialStr, clobStr); }); // 90.1.4 }); // 90.1 describe('90.2 PLSQL PROCEDURE BIND OUT CLOB to STRING', function() { - var proc = "CREATE OR REPLACE PROCEDURE nodb_clobs_out_92 (ID_1 IN NUMBER, ID_2 IN NUMBER, C1 IN VARCHAR2, C2 OUT CLOB) \n" + + const proc = "CREATE OR REPLACE PROCEDURE nodb_clobs_out_92 (ID_1 IN NUMBER, ID_2 IN NUMBER, C1 IN VARCHAR2, C2 OUT CLOB) \n" + "AS \n" + "BEGIN \n" + " select clob into C2 from nodb_clob_1 where num_1 = ID_1;\n" + "END;"; - var sqlRun = "begin nodb_clobs_out_92 (:i1, :i2, :c1, :c2); end;"; - var proc_drop = "DROP PROCEDURE nodb_clobs_out_92"; + const sqlRun = "begin nodb_clobs_out_92 (:i1, :i2, :c1, :c2); end;"; + const proc_drop = "DROP PROCEDURE nodb_clobs_out_92"; - before(function(done) { - executeSQL(proc, done); + before(async function() { + await connection.execute(proc); }); - after(function(done) { - executeSQL(proc_drop, done); + after(async function() { + await connection.execute(proc_drop); }); - beforeEach('set oracledb.fetchAsString', function(done) { + beforeEach('set oracledb.fetchAsString', function() { oracledb.fetchAsString = [ oracledb.CLOB ]; - done(); }); // beforeEach - afterEach('clear the By type specification', function(done) { + afterEach('clear the By type specification', function() { oracledb.fetchAsString = []; - done(); }); // afterEach - it('90.2.1 bind by position - 1', function(done) { - var len = 500; - var sequence = insertID++; - var specialStr = "90.2.1"; - var clobStr = random.getRandomString(len, specialStr); + it('90.2.1 bind by position - 1', async function() { + const len = 500; + let sequence = insertID++; + const specialStr = "90.2.1"; + let clobStr = random.getRandomString(len, specialStr); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - [ sequence, null, { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN }, { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } ], - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds[0]; - verifyResult(resultVal, specialStr, clobStr); - cb(); - } - ); - } - ], done); + let sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + [ sequence, null, { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN }, { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } ] + ); + let resultVal = result.outBinds[0]; + verifyResult(resultVal, specialStr, clobStr); }); // 90.2.1 - it('90.2.2 bind by name - 1', function(done) { - var len = 400; - var sequence = insertID++; - var specialStr = "90.2.2"; - var clobStr = random.getRandomString(len, specialStr); + it('90.2.2 bind by name - 1', async function() { + const len = 400; + let sequence = insertID++; + const specialStr = "90.2.2"; + let clobStr = random.getRandomString(len, specialStr); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN }, - c2: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } - }, - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds.c2; - verifyResult(resultVal, specialStr, clobStr); - cb(); - } - ); + let sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN }, + c2: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } } - ], done); + ); + let resultVal = result.outBinds.c2; + verifyResult(resultVal, specialStr, clobStr); }); // 90.2.2 - it('90.2.3 bind by position - 2', function(done) { - var len = 500; - var sequence = insertID++; - var specialStr = "90.2.3"; - var clobStr = random.getRandomString(len, specialStr); + it('90.2.3 bind by position - 2', async function() { + const len = 500; + let sequence = insertID++; + const specialStr = "90.2.3"; + let clobStr = random.getRandomString(len, specialStr); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - [ sequence, sequence, null, { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } ], - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds[0]; - verifyResult(resultVal, specialStr, clobStr); - cb(); - } - ); - } - ], done); + let sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + [ sequence, sequence, null, { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } ] + ); + let resultVal = result.outBinds[0]; + verifyResult(resultVal, specialStr, clobStr); }); // 90.2.3 - it('90.2.4 bind by name - 2', function(done) { - var len = 400; - var sequence = insertID++; - var specialStr = "90.2.4"; - var clobStr = random.getRandomString(len, specialStr); + it('90.2.4 bind by name - 2', async function() { + const len = 400; + let sequence = insertID++; + const specialStr = "90.2.4"; + let clobStr = random.getRandomString(len, specialStr); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: null, type: oracledb.STRING, dir: oracledb.BIND_IN }, - c2: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } - }, - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds.c2; - verifyResult(resultVal, specialStr, clobStr); - cb(); - } - ); + let sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: null, type: oracledb.STRING, dir: oracledb.BIND_IN }, + c2: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } } - ], done); + ); + let resultVal = result.outBinds.c2; + verifyResult(resultVal, specialStr, clobStr); }); // 90.2.4 }); // 90.2 describe('90.3 PLSQL FUNCTION RETURN CLOB to VARCHAR2', function() { - var proc = "CREATE OR REPLACE FUNCTION nodb_clobs_out_92 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN VARCHAR2) RETURN VARCHAR2 \n" + + const proc = "CREATE OR REPLACE FUNCTION nodb_clobs_out_92 (ID_1 IN NUMBER, ID_2 IN NUMBER, C IN VARCHAR2) RETURN VARCHAR2 \n" + "IS \n" + " tmpLOB2 CLOB; \n" + "BEGIN \n" + " select clob into tmpLOB2 from nodb_clob_1 where num_1 = ID_1;\n" + " RETURN tmpLOB2; \n" + "END;"; - var sqlRun = "begin :output := nodb_clobs_out_92 (:i1, :i2, :c); end;"; - var proc_drop = "DROP FUNCTION nodb_clobs_out_92"; + const sqlRun = "begin :output := nodb_clobs_out_92 (:i1, :i2, :c); end;"; + const proc_drop = "DROP FUNCTION nodb_clobs_out_92"; - before(function(done) { - executeSQL(proc, done); + before(async function() { + await connection.execute(proc); }); // before - after(function(done) { - executeSQL(proc_drop, done); + after(async function() { + await connection.execute(proc_drop); }); // after - beforeEach('set oracledb.fetchAsString', function(done) { + beforeEach('set oracledb.fetchAsString', function() { oracledb.fetchAsString = [ oracledb.CLOB ]; - done(); }); // beforeEach - afterEach('clear the By type specification', function(done) { + afterEach('clear the By type specification', function() { oracledb.fetchAsString = []; - done(); }); // afterEach - it('90.3.1 bind by name - 1', function(done) { - var len = 1000; - var sequence = insertID++; - var specialStr = "90.3.1"; - var clobStr = random.getRandomString(len, specialStr); + it('90.3.1 bind by name - 1', async function() { + const len = 1000; + let sequence = insertID++; + const specialStr = "90.3.1"; + let clobStr = random.getRandomString(len, specialStr); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN }, - output: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } - }, - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds.output; - verifyResult(resultVal, specialStr, clobStr); - cb(); - } - ); + let sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: null, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN }, + output: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } } - ], done); + ); + let resultVal = result.outBinds.output; + verifyResult(resultVal, specialStr, clobStr); }); // 90.3.1 - it('90.3.2 bind by position - 1', function(done) { - var len = 1000; - var sequence = insertID++; - var specialStr = "90.3.1"; - var clobStr = random.getRandomString(len, specialStr); + it('90.3.2 bind by position - 1', async function() { + const len = 1000; + let sequence = insertID++; + const specialStr = "90.3.1"; + let clobStr = random.getRandomString(len, specialStr); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - [ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, clobStr ], - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds[0]; - verifyResult(resultVal, specialStr, clobStr); - cb(); - } - ); - } - ], done); + let sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + [ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, null, clobStr ] + ); + let resultVal = result.outBinds[0]; + verifyResult(resultVal, specialStr, clobStr); }); // 90.3.2 - it('90.3.3 bind by name - 2', function(done) { - var len = 1000; - var sequence = insertID++; - var specialStr = "90.3.3"; - var clobStr = random.getRandomString(len, specialStr); + it('90.3.3 bind by name - 2', async function() { + const len = 1000; + let sequence = insertID++; + const specialStr = "90.3.3"; + let clobStr = random.getRandomString(len, specialStr); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c: { val: null, type: oracledb.STRING, dir: oracledb.BIND_IN }, - output: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } - }, - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds.output; - verifyResult(resultVal, specialStr, clobStr); - cb(); - } - ); + let sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c: { val: null, type: oracledb.STRING, dir: oracledb.BIND_IN }, + output: { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len } } - ], done); + ); + let resultVal = result.outBinds.output; + verifyResult(resultVal, specialStr, clobStr); }); // 90.3.3 - it('90.3.4 bind by position - 2', function(done) { - var len = 1000; - var sequence = insertID++; - var specialStr = "90.3.4"; - var clobStr = random.getRandomString(len, specialStr); + it('90.3.4 bind by position - 2', async function() { + const len = 1000; + let sequence = insertID++; + const specialStr = "90.3.4"; + let clobStr = random.getRandomString(len, specialStr); - async.series([ - function(cb) { - var sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; - var bindVar = { - i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, - c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, - c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } - }; - insertTable(sql, bindVar, cb); - }, - function(cb) { - connection.execute( - sqlRun, - [ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null ], - function(err, result) { - should.not.exist(err); - var resultVal = result.outBinds[0]; - verifyResult(resultVal, specialStr, clobStr); - cb(); - } - ); - } - ], done); + let sql = "INSERT INTO nodb_clob_1 (num_1, num_2, content, clob) VALUES (:i1, :i2, :c1, :c2)"; + let bindVar = { + i1: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + i2: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN }, + c1: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len }, + c2: { val: clobStr, type: oracledb.STRING, dir: oracledb.BIND_IN, maxSize: len } + }; + await insertTable(sql, bindVar); + + let result = await connection.execute( + sqlRun, + [ { type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: len }, sequence, sequence, null ] + ); + let resultVal = result.outBinds[0]; + verifyResult(resultVal, specialStr, clobStr); }); // 90.3.4 }); // 90.3 diff --git a/test/fetchLobAsStrBuf.js b/test/fetchLobAsStrBuf.js index 87f4623c..c4cb211c 100644 --- a/test/fetchLobAsStrBuf.js +++ b/test/fetchLobAsStrBuf.js @@ -35,7 +35,6 @@ const oracledb = require('oracledb'); const assert = require('assert'); const dbConfig = require('./dbconfig.js'); const random = require('./random.js'); -const assist = require('./dataTypeAssist.js'); describe('245. fetchLobAsStrBuf.js', function() { let connection = null; @@ -163,13 +162,13 @@ describe('245. fetchLobAsStrBuf.js', function() { lob.on('end', function() { if (originalBuffer == "EMPTY_BLOB") { let nullBuffer = Buffer.from('', "utf-8"); - assert.strictEqual(assist.compare2Buffers(blobData, nullBuffer), true); + assert.deepStrictEqual(blobData, nullBuffer); } else { assert.strictEqual(totalLength, originalBuffer.length); let specStrLength = specialStr.length; assert.strictEqual(blobData.toString('utf8', 0, specStrLength), specialStr); assert.strictEqual(blobData.toString('utf8', (totalLength - specStrLength), totalLength), specialStr); - assert.strictEqual(assist.compare2Buffers(blobData, originalBuffer), true); + assert.deepStrictEqual(blobData, originalBuffer); } resolve(); }); diff --git a/test/fetchUrowidAsString.js b/test/fetchUrowidAsString.js index 3e00db11..545bd34f 100644 --- a/test/fetchUrowidAsString.js +++ b/test/fetchUrowidAsString.js @@ -34,650 +34,472 @@ 'use strict'; const oracledb = require('oracledb'); -const async = require('async'); -const should = require('should'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); const random = require('./random.js'); describe('116. fetchUrowidAsString.js', function() { let connection = null; - var tableName = "nodb_rowid"; - var dataArray = random.getRandomNumArray(30); - var numRows = dataArray.length; // number of rows to return from each call to getRows() + const tableName = "nodb_rowid"; + let dataArray = random.getRandomNumArray(30); + let numRows = dataArray.length; // number of rows to return from each call to getRows() - var proc_create_table = "BEGIN \n" + - " DECLARE \n" + - " e_table_missing EXCEPTION; \n" + - " PRAGMA EXCEPTION_INIT(e_table_missing, -00942);\n" + - " BEGIN \n" + - " EXECUTE IMMEDIATE ('DROP TABLE " + tableName + " PURGE' ); \n" + - " EXCEPTION \n" + - " WHEN e_table_missing \n" + - " THEN NULL; \n" + - " END; \n" + - " EXECUTE IMMEDIATE ( ' \n" + - " CREATE TABLE " + tableName + " ( \n" + - " num NUMBER, \n" + - " content UROWID \n" + - " ) \n" + - " '); \n" + - "END; "; - var drop_table = "DROP TABLE " + tableName + " PURGE"; + const proc_create_table = "BEGIN \n" + + " DECLARE \n" + + " e_table_missing EXCEPTION; \n" + + " PRAGMA EXCEPTION_INIT(e_table_missing, -00942);\n" + + " BEGIN \n" + + " EXECUTE IMMEDIATE ('DROP TABLE " + tableName + " PURGE' ); \n" + + " EXCEPTION \n" + + " WHEN e_table_missing \n" + + " THEN NULL; \n" + + " END; \n" + + " EXECUTE IMMEDIATE ( ' \n" + + " CREATE TABLE " + tableName + " ( \n" + + " num NUMBER, \n" + + " content UROWID \n" + + " ) \n" + + " '); \n" + + "END; "; + const drop_table = "DROP TABLE " + tableName + " PURGE"; - before('get one connection', function(done) { - oracledb.getConnection(dbConfig, function(err, conn) { - should.not.exist(err); - connection = conn; - done(); - }); + before('get one connection', async function() { + connection = await oracledb.getConnection(dbConfig); }); - after('release connection', function(done) { - connection.close(function(err) { - should.not.exist(err); - done(); - }); + after('release connection', async function() { + await connection.close(); }); - var insertData = function(connection, tableName, callback) { - async.eachSeries(dataArray, function(element, cb) { - var sql = "INSERT INTO " + tableName + "(num) VALUES(" + element + ")"; - connection.execute( - sql, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, function(err) { - should.not.exist(err); - callback(); - }); + const insertData = async function(connection, tableName) { + for (let element in dataArray) { + const sql = "INSERT INTO " + tableName + "(num) VALUES(" + element + ")"; + await connection.execute(sql); + } }; - var updateDate = function(connection, tableName, callback) { - async.eachSeries(dataArray, function(element, cb) { - var sql = "UPDATE " + tableName + " T SET content = T.ROWID where num = " + element; - connection.execute( - sql, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, function(err) { - should.not.exist(err); - callback(); - }); + const updateData = async function(connection, tableName) { + for (let element in dataArray) { + const sql = "UPDATE " + tableName + " T SET content = T.ROWID where num = " + element; + await connection.execute(sql); + } }; describe('116.1 works with fetchInfo option', function() { - var maxRowBak = oracledb.maxRows; - var option = { fetchInfo: { "CONTENT": { type: oracledb.STRING } } }; - before(function(done) { - async.series([ - function makeTable(callback) { - connection.execute( - proc_create_table, - function(err) { - should.not.exist(err); - callback(); - } - ); - }, - function insertRow(callback) { - insertData(connection, tableName, callback); - }, - function fillRowid(callback) { - updateDate(connection, tableName, callback); - } - ], done); + let maxRowBak = oracledb.maxRows; + let option = { fetchInfo: { "CONTENT": { type: oracledb.STRING } } }; + before(async function() { + await connection.execute(proc_create_table); + await insertData(connection, tableName); + await updateData(connection, tableName); }); - after(function(done) { + after(async function() { oracledb.maxRows = maxRowBak; - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + await connection.execute(drop_table); }); - it('116.1.1 fetchInfo', function(done) { - test1(option, false, false, done); + it('116.1.1 fetchInfo', async function() { + await test1(option, false); }); - it('116.1.2 fetchInfo, and oracledb.maxRows < actual number of rows', function(done) { + it('116.1.2 fetchInfo, and oracledb.maxRows < actual number of rows', async function() { oracledb.maxRows = numRows - 1; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.1.3 fetchInfo, and oracledb.maxRows = actual number of rows', function(done) { + it('116.1.3 fetchInfo, and oracledb.maxRows = actual number of rows', async function() { oracledb.maxRows = numRows; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.1.4 fetchInfo, and oracledb.maxRows > actual number of rows', function(done) { + it('116.1.4 fetchInfo, and oracledb.maxRows > actual number of rows', async function() { oracledb.maxRows = numRows + 1; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.1.5 fetchInfo, queryStream() and oracledb.maxRows < actual number of rows', function(done) { + it('116.1.5 fetchInfo, queryStream() and oracledb.maxRows < actual number of rows', async function() { oracledb.maxRows = numRows - 1; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.1.6 fetchInfo, queryStream() and oracledb.maxRows = actual number of rows', function(done) { + it('116.1.6 fetchInfo, queryStream() and oracledb.maxRows = actual number of rows', async function() { oracledb.maxRows = numRows; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.1.7 fetchInfo, queryStream() and oracledb.maxRows > actual number of rows', function(done) { + it('116.1.7 fetchInfo, queryStream() and oracledb.maxRows > actual number of rows', async function() { oracledb.maxRows = numRows + 1; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.1.8 fetchInfo, resultSet = true', function(done) { - var option_rs = { + it('116.1.8 fetchInfo, resultSet = true', async function() { + let option_rs = { resultSet: true, fetchInfo: { "CONTENT": { type: oracledb.STRING } } }; - test2(option_rs, false, false, done); + await test2(option_rs, false); }); }); describe('116.2 works with fetchInfo and outFormat = OBJECT', function() { - var maxRowBak = oracledb.maxRows; - var option = { + let maxRowBak = oracledb.maxRows; + let option = { outFormat: oracledb.OUT_FORMAT_OBJECT, fetchInfo: { "CONTENT": { type: oracledb.STRING } } }; - before(function(done) { - async.series([ - function makeTable(callback) { - connection.execute( - proc_create_table, - function(err) { - should.not.exist(err); - callback(); - }); - }, - function insertRow(callback) { - insertData(connection, tableName, callback); - }, - function fillRowid(callback) { - updateDate(connection, tableName, callback); - } - ], done); + before(async function() { + await connection.execute(proc_create_table); + await insertData(connection, tableName); + await updateData(connection, tableName); }); - after(function(done) { + after(async function() { oracledb.maxRows = maxRowBak; - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + await connection.execute(drop_table); }); - it('116.2.1 fetchInfo with outFormat = OBJECT', function(done) { - test1(option, true, false, done); + it('116.2.1 fetchInfo with outFormat = OBJECT', async function() { + await test1(option, true); }); - it('116.2.2 fetchInfo, outFormat = OBJECT, and resultSet = true', function(done) { - var option_rs = { + it('116.2.2 fetchInfo, outFormat = OBJECT, and resultSet = true', async function() { + let option_rs = { resultSet: true, outFormat: oracledb.OUT_FORMAT_OBJECT, fetchInfo: { "CONTENT": { type: oracledb.STRING } } }; - test2(option_rs, true, false, done); + await test2(option_rs, true); }); - it('116.2.3 fetchInfo, outFormat = OBJECT, and oracledb.maxRows < actual number of rows', function(done) { + it('116.2.3 fetchInfo, outFormat = OBJECT, and oracledb.maxRows < actual number of rows', async function() { oracledb.maxRows = numRows - 1; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.2.4 fetchInfo, outFormat = OBJECT, and oracledb.maxRows = actual number of rows', function(done) { + it('116.2.4 fetchInfo, outFormat = OBJECT, and oracledb.maxRows = actual number of rows', async function() { oracledb.maxRows = numRows; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.2.5 fetchInfo, outFormat = OBJECT, and oracledb.maxRows > actual number of rows', function(done) { + it('116.2.5 fetchInfo, outFormat = OBJECT, and oracledb.maxRows > actual number of rows', async function() { oracledb.maxRows = numRows + 1; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.2.6 fetchInfo, outFormat = OBJECT, queryStream() and oracledb.maxRows < actual number of rows', function(done) { + it('116.2.6 fetchInfo, outFormat = OBJECT, queryStream() and oracledb.maxRows < actual number of rows', async function() { oracledb.maxRows = numRows - 1; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.2.7 fetchInfo, outFormat = OBJECT, queryStream() and oracledb.maxRows = actual number of rows', function(done) { + it('116.2.7 fetchInfo, outFormat = OBJECT, queryStream() and oracledb.maxRows = actual number of rows', async function() { oracledb.maxRows = numRows; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.2.8 fetchInfo, outFormat = OBJECT, queryStream() and oracledb.maxRows > actual number of rows', function(done) { + it('116.2.8 fetchInfo, outFormat = OBJECT, queryStream() and oracledb.maxRows > actual number of rows', async function() { oracledb.maxRows = numRows + 1; - testQueryStream(option, done); + await testQueryStream(option); }); }); describe('116.3 works with fetchInfo and outFormat = ARRAY', function() { - var maxRowBak = oracledb.maxRows; - var option = { + let maxRowBak = oracledb.maxRows; + let option = { outFormat: oracledb.OUT_FORMAT_ARRAY, fetchInfo: { "CONTENT": { type: oracledb.STRING } } }; - before(function(done) { - async.series([ - function makeTable(callback) { - connection.execute( - proc_create_table, - function(err) { - should.not.exist(err); - callback(); - }); - }, - function insertRow(callback) { - insertData(connection, tableName, callback); - }, - function fillRowid(callback) { - updateDate(connection, tableName, callback); - } - ], done); + before(async function() { + await connection.execute(proc_create_table); + await insertData(connection, tableName); + await updateData(connection, tableName); }); - after(function(done) { + after(async function() { oracledb.maxRows = maxRowBak; - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + await connection.execute(drop_table); }); - it('116.3.1 fetchInfo', function(done) { - test1(option, false, true, done); + it('116.3.1 fetchInfo', async function() { + await test1(option, false); }); - it('116.3.2 fetchInfo, and oracledb.maxRows < actual number of rows', function(done) { + it('116.3.2 fetchInfo, and oracledb.maxRows < actual number of rows', async function() { oracledb.maxRows = numRows - 1; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.3.3 fetchInfo, and oracledb.maxRows = actual number of rows', function(done) { + it('116.3.3 fetchInfo, and oracledb.maxRows = actual number of rows', async function() { oracledb.maxRows = numRows; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.3.4 fetchInfo, and oracledb.maxRows > actual number of rows', function(done) { + it('116.3.4 fetchInfo, and oracledb.maxRows > actual number of rows', async function() { oracledb.maxRows = numRows + 1; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.3.5 fetchInfo, queryStream() and oracledb.maxRows < actual number of rows', function(done) { + it('116.3.5 fetchInfo, queryStream() and oracledb.maxRows < actual number of rows', async function() { oracledb.maxRows = numRows - 1; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.3.6 fetchInfo, queryStream() and oracledb.maxRows = actual number of rows', function(done) { + it('116.3.6 fetchInfo, queryStream() and oracledb.maxRows = actual number of rows', async function() { oracledb.maxRows = numRows; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.3.7 fetchInfo, queryStream() and oracledb.maxRows > actual number of rows', function(done) { + it('116.3.7 fetchInfo, queryStream() and oracledb.maxRows > actual number of rows', async function() { oracledb.maxRows = numRows + 1; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.3.8 fetchInfo, resultSet = true', function(done) { - var option_rs = { + it('116.3.8 fetchInfo, resultSet = true', async function() { + let option_rs = { resultSet: true, outFormat: oracledb.OUT_FORMAT_ARRAY, fetchInfo: { "CONTENT": { type: oracledb.STRING } } }; - test2(option_rs, false, true, done); + await test2(option_rs, false); }); }); describe('116.4 fetch as string by default', function() { - var maxRowBak = oracledb.maxRows; - var option = {}; - before(function(done) { - async.series([ - function makeTable(callback) { - connection.execute( - proc_create_table, - function(err) { - should.not.exist(err); - callback(); - }); - }, - function insertRow(callback) { - insertData(connection, tableName, callback); - }, - function fillRowid(callback) { - updateDate(connection, tableName, callback); - } - ], done); + let maxRowBak = oracledb.maxRows; + let option = {}; + before(async function() { + await connection.execute(proc_create_table); + await insertData(connection, tableName); + await updateData(connection, tableName); }); - after(function(done) { + after(async function() { oracledb.maxRows = maxRowBak; - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + await connection.execute(drop_table); }); - it('116.4.1 fetch by default', function(done) { - test1(option, false, false, done); + it('116.4.1 fetch by default', async function() { + await test1(option, false); }); - it('116.4.2 oracledb.maxRows < actual number of rows', function(done) { + it('116.4.2 oracledb.maxRows < actual number of rows', async function() { oracledb.maxRows = numRows - 1; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.4.3 oracledb.maxRows = actual number of rows', function(done) { + it('116.4.3 oracledb.maxRows = actual number of rows', async function() { oracledb.maxRows = numRows; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.4.4 oracledb.maxRows > actual number of rows', function(done) { + it('116.4.4 oracledb.maxRows > actual number of rows', async function() { oracledb.maxRows = numRows + 1; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.4.5 queryStream() and oracledb.maxRows < actual number of rows', function(done) { + it('116.4.5 queryStream() and oracledb.maxRows < actual number of rows', async function() { oracledb.maxRows = numRows - 1; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.4.6 queryStream() and oracledb.maxRows = actual number of rows', function(done) { + it('116.4.6 queryStream() and oracledb.maxRows = actual number of rows', async function() { oracledb.maxRows = numRows; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.4.7 queryStream() and oracledb.maxRows > actual number of rows', function(done) { + it('116.4.7 queryStream() and oracledb.maxRows > actual number of rows', async function() { oracledb.maxRows = numRows + 1; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.4.8 resultSet = true', function(done) { - var option_rs = { + it('116.4.8 resultSet = true', async function() { + let option_rs = { resultSet: true, }; - test2(option_rs, false, false, done); + await test2(option_rs, false); }); }); describe('116.5 fetch as string by default with outFormat = OBJECT', function() { - var maxRowBak = oracledb.maxRows; - var option = { outFormat: oracledb.OUT_FORMAT_OBJECT }; - before(function(done) { - async.series([ - function makeTable(callback) { - connection.execute( - proc_create_table, - function(err) { - should.not.exist(err); - callback(); - }); - }, - function insertRow(callback) { - insertData(connection, tableName, callback); - }, - function fillRowid(callback) { - updateDate(connection, tableName, callback); - } - ], done); + let maxRowBak = oracledb.maxRows; + let option = { outFormat: oracledb.OUT_FORMAT_OBJECT }; + before(async function() { + await connection.execute(proc_create_table); + await insertData(connection, tableName); + await updateData(connection, tableName); }); - after(function(done) { + after(async function() { oracledb.maxRows = maxRowBak; - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); + await connection.execute(drop_table); }); - it('116.5.1 fetch by default', function(done) { - test1(option, true, false, done); + it('116.5.1 fetch by default', async function() { + await test1(option, true); }); - it('116.5.2 oracledb.maxRows < actual number of rows', function(done) { + it('116.5.2 oracledb.maxRows < actual number of rows', async function() { oracledb.maxRows = numRows - 1; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.5.3 oracledb.maxRows = actual number of rows', function(done) { + it('116.5.3 oracledb.maxRows = actual number of rows', async function() { oracledb.maxRows = numRows; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.5.4 oracledb.maxRows > actual number of rows', function(done) { + it('116.5.4 oracledb.maxRows > actual number of rows', async function() { oracledb.maxRows = numRows + 1; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.5.5 queryStream() and oracledb.maxRows < actual number of rows', function(done) { + it('116.5.5 queryStream() and oracledb.maxRows < actual number of rows', async function() { oracledb.maxRows = numRows - 1; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.5.6 queryStream() and oracledb.maxRows = actual number of rows', function(done) { + it('116.5.6 queryStream() and oracledb.maxRows = actual number of rows', async function() { oracledb.maxRows = numRows; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.5.7 queryStream() and oracledb.maxRows > actual number of rows', function(done) { + it('116.5.7 queryStream() and oracledb.maxRows > actual number of rows', async function() { oracledb.maxRows = numRows + 1; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.5.8 resultSet = true', function(done) { - var option_rs = { + it('116.5.8 resultSet = true', async function() { + let option_rs = { resultSet: true, outFormat: oracledb.OUT_FORMAT_OBJECT }; - test2(option_rs, true, false, done); + await test2(option_rs, true); }); }); describe('116.6 fetch as string by default with outFormat = ARRAY', function() { - var maxRowBak = oracledb.maxRows; - var option = { outFormat: oracledb.OUT_FORMAT_ARRAY }; - before(function(done) { - async.series([ - function makeTable(callback) { - connection.execute( - proc_create_table, - function(err) { - should.not.exist(err); - callback(); - }); - }, - function insertRow(callback) { - insertData(connection, tableName, callback); - }, - function fillRowid(callback) { - updateDate(connection, tableName, callback); - } - ], done); + let maxRowBak = oracledb.maxRows; + let option = { outFormat: oracledb.OUT_FORMAT_ARRAY }; + before(async function() { + await connection.execute(proc_create_table); + await insertData(connection, tableName); + await updateData(connection, tableName); }); - after(function(done) { + after(async function() { oracledb.maxRows = maxRowBak; - connection.execute( - drop_table, - function(err) { - should.not.exist(err); - done(); - } - ); - + await connection.execute(drop_table); }); - it('116.6.1 fetch by default', function(done) { - test1(option, false, true, done); + it('116.6.1 fetch by default', async function() { + await test1(option, false); }); - it('116.6.2 oracledb.maxRows < actual number of rows', function(done) { + it('116.6.2 oracledb.maxRows < actual number of rows', async function() { oracledb.maxRows = numRows - 1; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.6.3 oracledb.maxRows = actual number of rows', function(done) { + it('116.6.3 oracledb.maxRows = actual number of rows', async function() { oracledb.maxRows = numRows; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.6.4 oracledb.maxRows > actual number of rows', function(done) { + it('116.6.4 oracledb.maxRows > actual number of rows', async function() { oracledb.maxRows = numRows + 1; - testMaxRow(option, done); + await testMaxRow(option); }); - it('116.6.5 queryStream() and oracledb.maxRows < actual number of rows', function(done) { + it('116.6.5 queryStream() and oracledb.maxRows < actual number of rows', async function() { oracledb.maxRows = numRows - 1; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.6.6 queryStream() and oracledb.maxRows = actual number of rows', function(done) { + it('116.6.6 queryStream() and oracledb.maxRows = actual number of rows', async function() { oracledb.maxRows = numRows; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.6.7 queryStream() and oracledb.maxRows > actual number of rows', function(done) { + it('116.6.7 queryStream() and oracledb.maxRows > actual number of rows', async function() { oracledb.maxRows = numRows + 1; - testQueryStream(option, done); + await testQueryStream(option); }); - it('116.6.8 resultSet = true', function(done) { - var option_rs = { + it('116.6.8 resultSet = true', async function() { + let option_rs = { resultSet: true, outFormat: oracledb.OUT_FORMAT_ARRAY, }; - test2(option_rs, false, false, done); + await test2(option_rs, false); }); }); - function test1(option, object, array, callback) { - async.eachSeries(dataArray, function(element, cb) { - var sql = "select content,rowid from " + tableName + " where num = " + element; - connection.execute( - sql, - [], - option, - function(err, result) { - should.not.exist(err); - var resultVal_1 = result.rows[0][0]; - var resultVal_2 = result.rows[0][1]; - if (object === true) { - resultVal_1 = result.rows[0].CONTENT; - resultVal_2 = result.rows[0].ROWID; - } - should.strictEqual(typeof resultVal_1, "string"); - should.strictEqual(resultVal_1, resultVal_2); - cb(); - } - ); - }, function(err) { - should.not.exist(err); - callback(); - }); - } - - function test2(option, object, array, callback) { - async.eachSeries(dataArray, function(element, cb) { - var sql = "select content,rowid from " + tableName + " where num = " + element; - connection.execute( - sql, - [], - option, - function(err, result) { - should.not.exist(err); - result.resultSet.getRow( - function(err, row) { - var resultVal_1 = row[0]; - var resultVal_2 = row[1]; - if (object === true) { - resultVal_1 = row.CONTENT; - resultVal_2 = row.ROWID; - } - should.strictEqual(typeof resultVal_1, "string"); - should.strictEqual(resultVal_1, resultVal_2); - result.resultSet.close(function(err) { - should.not.exist(err); - cb(); - }); - } - ); - } - ); - }, function(err) { - should.not.exist(err); - callback(); - }); - } - - function testMaxRow(option, callback) { - var sql = "select CONTENT from " + tableName; - connection.execute( - sql, - [], - option, - function(err, result) { - should.not.exist(err); - var rowExpected = (oracledb.maxRows >= numRows) ? numRows : oracledb.maxRows; - should.strictEqual(result.rows.length, rowExpected); - callback(); + async function test1(option, object) { + for (let element in dataArray) { + const sql = "select content,rowid from " + tableName + " where num = " + element; + let result = await connection.execute(sql, [], option); + let resultVal_1 = result.rows[0][0]; + let resultVal_2 = result.rows[0][1]; + if (object === true) { + resultVal_1 = result.rows[0].CONTENT; + resultVal_2 = result.rows[0].ROWID; } - ); + assert.strictEqual(typeof resultVal_1, "string"); + assert.strictEqual(resultVal_1, resultVal_2); + + } } - function testQueryStream(option, callback) { - var sql = "select CONTENT from " + tableName; - var stream = connection.queryStream( - sql, - [], - option - ); + async function test2(option, object) { + for (let element in dataArray) { + const sql = "select content,rowid from " + tableName + " where num = " + element; + let result = await connection.execute(sql, [], option); + let row = await result.resultSet.getRow(); + let resultVal_1 = row[0]; + let resultVal_2 = row[1]; - var result = []; - stream.on('data', function(data) { - should.exist(data); - result.push(data); + if (object === true) { + resultVal_1 = row.CONTENT; + resultVal_2 = row.ROWID; + } + assert.strictEqual(typeof resultVal_1, "string"); + assert.strictEqual(resultVal_1, resultVal_2); + + await result.resultSet.close(); + } + } + + async function testMaxRow(option) { + let sql = "select CONTENT from " + tableName; + let result = await connection.execute(sql, [], option); + let rowExpected = (oracledb.maxRows >= numRows) ? numRows : oracledb.maxRows; + assert.strictEqual(result.rows.length, rowExpected); + } + + async function testQueryStream(option) { + const sql = "select CONTENT from " + tableName; + const stream = await connection.queryStream(sql, [], option); + + let result = []; + await new Promise((resolve, reject) => { + stream.on('error', reject); + stream.on('end', function() { + assert.strictEqual(result.length, numRows); + stream.destroy(); + }); + stream.on('close', resolve); + stream.on('data', function(data) { + assert(data); + result.push(data); + }); }); - stream.on('end', function() { - should.strictEqual(result.length, numRows); - stream.destroy(); - }); - - stream.on('close', function() { - callback(); - }); } }); diff --git a/test/implicitResults.js b/test/implicitResults.js index 8710dced..be41ec7d 100644 --- a/test/implicitResults.js +++ b/test/implicitResults.js @@ -1,4 +1,4 @@ -/* Copyright (c) 2019, 2022, Oracle and/or its affiliates. */ +/* Copyright (c) 2019, 2023, Oracle and/or its affiliates. */ /****************************************************************************** * @@ -63,7 +63,6 @@ describe('192. implicitResults.js', function() { if (!isRunnable) { this.skip(); - return; } else { try { const conn = await oracledb.getConnection(dbConfig); diff --git a/test/insertAll.js b/test/insertAll.js index 8a836ef3..9ae3f833 100644 --- a/test/insertAll.js +++ b/test/insertAll.js @@ -33,37 +33,26 @@ 'use strict'; const oracledb = require('oracledb'); -const should = require('should'); -const async = require('async'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); describe('158. insertAll.js', function() { let conn; - before(function(done) { - oracledb.getConnection( - dbConfig, - function(err, connection) { - should.not.exist(err); - conn = connection; - done(); - } - ); + before(async function() { + conn = await oracledb.getConnection(dbConfig); }); - after(function(done) { - conn.close(function(err) { - should.not.exist(err); - done(); - }); + after(async function() { + await conn.close(); }); - it('158.1 original case from the issue', function(done) { + it('158.1 original case from the issue', async function() { - var dataLength = 35000; - var doCreate = function(cb) { - var proc = "BEGIN \n" + + let dataLength = 35000; + //Create the table + const proc = "BEGIN \n" + " DECLARE \n" + " e_table_missing EXCEPTION; \n" + " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + @@ -80,228 +69,132 @@ describe('158. insertAll.js', function() { " ) \n" + " '); \n" + "END; "; - conn.execute( - proc, - function(err) { - should.not.exist(err); - cb(); - } - ); - }; + await conn.execute(proc); - var doDrop = function(cb) { - var sql = "DROP TABLE nodb_tab_insertall PURGE"; - conn.execute( - sql, - function(err) { - should.not.exist(err); - cb(); - } - ); - }; + // insert data (including LOB) into the table + const myval = 'a'.repeat(dataLength); + let sql = "INSERT ALL INTO nodb_tab_insertall \n" + + " WITH nt AS (SELECT 1, :C FROM DUAL) \n" + + " SELECT * FROM nt"; + let result = await conn.execute( + sql, + { c: { val: myval, type: oracledb.CLOB } } + ); + assert.strictEqual(result.rowsAffected, 1); - var doInsert = function(cb) { - var myval = 'a'.repeat(dataLength); - var sql = "INSERT ALL INTO nodb_tab_insertall \n" + - " WITH nt AS (SELECT 1, :C FROM DUAL) \n" + - " SELECT * FROM nt"; - conn.execute( - sql, - { c: { val: myval, type: oracledb.CLOB } }, - function(err, result) { - should.not.exist(err); - (result.rowsAffected).should.be.exactly(1); - cb(); - } - ); - }; + // Run a select query to get the inserted LOB's length + sql = "select dbms_lob.getlength(val) from nodb_tab_insertall"; + result = await conn.execute(sql); + let buf = result.rows[0][0]; + assert.strictEqual(buf, dataLength); - var doQuery = function(cb) { - var sql = "select dbms_lob.getlength(val) from nodb_tab_insertall"; - conn.execute( - sql, - function(err, result) { - should.not.exist(err); - var buf = result.rows[0][0]; - should.strictEqual(buf, dataLength); - cb(); - } - ); - }; - - async.series([ - doCreate, - doInsert, - doQuery, - doDrop - ], done); + // Drop the table + sql = "DROP TABLE nodb_tab_insertall PURGE"; + await conn.execute(sql); }); // 158.1 - it('158.2 inserts into one table', function(done) { - async.series([ - makeTab1, - function dotest(cb) { - var sql = "INSERT ALL \n" + - " INTO nodb_tab_ia1 (id, content) VALUES (100, :a) \n" + - " INTO nodb_tab_ia1 (id, content) VALUES (200, :b) \n" + - " INTO nodb_tab_ia1 (id, content) VALUES (300, :c) \n" + - "SELECT * FROM DUAL"; - conn.execute( - sql, - ['Changjie', 'Shelly', 'Chris'], - function(err, result) { - should.not.exist(err); - should.strictEqual(result.rowsAffected, 3); - cb(); - } - ); - }, - function doverify(cb) { - var sql = "select content from nodb_tab_ia1 order by id"; - conn.execute( - sql, - function(err, result) { - should.not.exist(err); - should.deepEqual( - result.rows, - [ [ 'Changjie' ], [ 'Shelly' ], [ 'Chris' ] ] - ); - cb(); - } - ); - }, - dropTab1 - ], done); + it('158.2 inserts into one table', async function() { + await makeTab1(); + let sql = "INSERT ALL \n" + + " INTO nodb_tab_ia1 (id, content) VALUES (100, :a) \n" + + " INTO nodb_tab_ia1 (id, content) VALUES (200, :b) \n" + + " INTO nodb_tab_ia1 (id, content) VALUES (300, :c) \n" + + "SELECT * FROM DUAL"; + let result = await conn.execute( + sql, + ['Changjie', 'Shelly', 'Chris'] + ); + assert.strictEqual(result.rowsAffected, 3); + + sql = "select content from nodb_tab_ia1 order by id"; + result = await conn.execute(sql); + assert.deepStrictEqual( + result.rows, + [ [ 'Changjie' ], [ 'Shelly' ], [ 'Chris' ] ] + ); + + //Drop the table + sql = "DROP TABLE nodb_tab_ia1 PURGE"; + await conn.execute(sql); }); // 158.2 - it('158.3 inserts into multiple tables', function(done) { - async.series([ - makeTab1, - makeTab2, - function dotest(cb) { - var sql = "INSERT ALL \n" + - " INTO nodb_tab_ia1 (id, content) VALUES (100, :a) \n" + - " INTO nodb_tab_ia1 (id, content) VALUES (200, :b) \n" + - " INTO nodb_tab_ia2 (id, content) VALUES (300, :c) \n" + - "SELECT * FROM DUAL"; - conn.execute( - sql, - ['Redwood city', 'Sydney', 'Shenzhen'], - function(err, result) { - should.not.exist(err); - should.strictEqual(result.rowsAffected, 3); - cb(); - } - ); - }, - function doverify1(cb) { - var sql = "select content from nodb_tab_ia1 order by id"; - conn.execute( - sql, - function(err, result) { - should.not.exist(err); - should.deepEqual( - result.rows, - [ [ 'Redwood city' ], [ 'Sydney' ]] - ); - cb(); - } - ); - }, - function doverify2(cb) { - var sql = "select content from nodb_tab_ia2 order by id"; - conn.execute( - sql, - function(err, result) { - should.not.exist(err); - should.deepEqual( - result.rows, - [ [ 'Shenzhen' ]] - ); - cb(); - } - ); - }, - dropTab1, - dropTab2 - ], done); + it('158.3 inserts into multiple tables', async function() { + await makeTab1(); + await makeTab2(); + + let sql = "INSERT ALL \n" + + " INTO nodb_tab_ia1 (id, content) VALUES (100, :a) \n" + + " INTO nodb_tab_ia1 (id, content) VALUES (200, :b) \n" + + " INTO nodb_tab_ia2 (id, content) VALUES (300, :c) \n" + + "SELECT * FROM DUAL"; + let result = await conn.execute( + sql, + ['Redwood city', 'Sydney', 'Shenzhen'] + ); + assert.strictEqual(result.rowsAffected, 3); + + sql = "select content from nodb_tab_ia1 order by id"; + result = await conn.execute(sql); + assert.deepStrictEqual( + result.rows, + [ [ 'Redwood city' ], [ 'Sydney' ]] + ); + + sql = "select content from nodb_tab_ia2 order by id"; + result = await conn.execute(sql); + assert.deepStrictEqual( + result.rows, + [ [ 'Shenzhen' ]] + ); + + //Drop the tables + sql = "DROP TABLE nodb_tab_ia1 PURGE"; + await conn.execute(sql); + sql = "DROP TABLE nodb_tab_ia2 PURGE"; + await conn.execute(sql); }); // 158.3 - var makeTab1 = function(cb) { - var proc = "BEGIN \n" + - " DECLARE \n" + - " e_table_missing EXCEPTION; \n" + - " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + - " BEGIN \n" + - " EXECUTE IMMEDIATE('DROP TABLE nodb_tab_ia1 PURGE'); \n" + - " EXCEPTION \n" + - " WHEN e_table_missing \n" + - " THEN NULL; \n" + - " END; \n" + - " EXECUTE IMMEDIATE (' \n" + - " CREATE TABLE nodb_tab_ia1 ( \n" + - " id NUMBER, \n" + - " content VARCHAR2(100) \n" + - " ) \n" + - " '); \n" + - "END; "; - conn.execute( - proc, - function(err) { - should.not.exist(err); - cb(); - } - ); + const makeTab1 = async function() { + const proc = "BEGIN \n" + + " DECLARE \n" + + " e_table_missing EXCEPTION; \n" + + " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + + " BEGIN \n" + + " EXECUTE IMMEDIATE('DROP TABLE nodb_tab_ia1 PURGE'); \n" + + " EXCEPTION \n" + + " WHEN e_table_missing \n" + + " THEN NULL; \n" + + " END; \n" + + " EXECUTE IMMEDIATE (' \n" + + " CREATE TABLE nodb_tab_ia1 ( \n" + + " id NUMBER, \n" + + " content VARCHAR2(100) \n" + + " ) \n" + + " '); \n" + + "END; "; + await conn.execute(proc); }; // makeTab1 - var dropTab1 = function(cb) { - var sql = "DROP TABLE nodb_tab_ia1 PURGE"; - conn.execute( - sql, - function(err) { - should.not.exist(err); - cb(); - } - ); - }; - - var makeTab2 = function(cb) { - var proc = "BEGIN \n" + - " DECLARE \n" + - " e_table_missing EXCEPTION; \n" + - " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + - " BEGIN \n" + - " EXECUTE IMMEDIATE('DROP TABLE nodb_tab_ia2 PURGE'); \n" + - " EXCEPTION \n" + - " WHEN e_table_missing \n" + - " THEN NULL; \n" + - " END; \n" + - " EXECUTE IMMEDIATE (' \n" + - " CREATE TABLE nodb_tab_ia2 ( \n" + - " id NUMBER, \n" + - " content VARCHAR2(50) " + - " ) \n" + - " '); \n" + - "END; "; - conn.execute( - proc, - function(err) { - should.not.exist(err); - cb(); - } - ); - }; - - var dropTab2 = function(cb) { - var sql = "DROP TABLE nodb_tab_ia2 PURGE"; - conn.execute( - sql, - function(err) { - should.not.exist(err); - cb(); - } - ); + const makeTab2 = async function() { + const proc = "BEGIN \n" + + " DECLARE \n" + + " e_table_missing EXCEPTION; \n" + + " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + + " BEGIN \n" + + " EXECUTE IMMEDIATE('DROP TABLE nodb_tab_ia2 PURGE'); \n" + + " EXCEPTION \n" + + " WHEN e_table_missing \n" + + " THEN NULL; \n" + + " END; \n" + + " EXECUTE IMMEDIATE (' \n" + + " CREATE TABLE nodb_tab_ia2 ( \n" + + " id NUMBER, \n" + + " content VARCHAR2(50) " + + " ) \n" + + " '); \n" + + "END; "; + await conn.execute(proc); }; }); diff --git a/test/lobClose.js b/test/lobClose.js index a6684a57..681f373f 100644 --- a/test/lobClose.js +++ b/test/lobClose.js @@ -105,4 +105,35 @@ describe('54. lobClose.js', function() { ); }); // 54.4 + it('54.5 temp LOBs should be freed in next rpc', async function() { + const conn2 = await oracledb.getConnection(dbConfig); + let tempLOBArray = []; + const numLOBs = 20; + const query = "select cache_lobs+nocache_lobs from v$temporary_lobs where sid = sys_context('USERENV','SID')"; + + // Create multiple temp LOB's + for (let i = 0; i < numLOBs; i++) { + tempLOBArray[i] = await conn2.createLob(oracledb.CLOB); + } + + // Check number of opened temp LOB's + let result = await conn2.execute(query); + let numTempLOBs = result.rows[0][0]; + assert.strictEqual(numTempLOBs, numLOBs); + + // Destroy multiple temp LOB's + for (let i = 0; i < numLOBs; i++) { + await new Promise((resolve) => { + tempLOBArray[i].once('close', resolve); + tempLOBArray[i].destroy(); + }); + } + + // temp LOB's should be freed on roundtrip (like execute) as piggybacks are sent for closing temp LOB's + result = await conn2.execute(query); + numTempLOBs = result.rows[0][0]; + assert.strictEqual(numTempLOBs, 0); + await conn2.close(); + }); // 54.5 + }); diff --git a/test/longrawProcedureBind_in.js b/test/longrawProcedureBind_in.js index 816653fb..79331363 100755 --- a/test/longrawProcedureBind_in.js +++ b/test/longrawProcedureBind_in.js @@ -38,7 +38,6 @@ const assert = require('assert'); const dbConfig = require('./dbconfig.js'); const random = require('./random.js'); const testsUtil = require('./testsUtil.js'); -const assist = require('./dataTypeAssist.js'); describe('132. longrawProcedureBind_in.js', function() { @@ -228,7 +227,7 @@ describe('132. longrawProcedureBind_in.js', function() { if (expected == null) { assert.strictEqual(result.rows[0][1], expected); } else { - assist.compare2Buffers(result.rows[0][1], expected); + assert.deepStrictEqual(result.rows[0][1], expected); } }; diff --git a/test/longrawProcedureBind_inout.js b/test/longrawProcedureBind_inout.js index 0aecfe8f..2f973b14 100755 --- a/test/longrawProcedureBind_inout.js +++ b/test/longrawProcedureBind_inout.js @@ -37,7 +37,6 @@ const assert = require('assert'); const dbConfig = require('./dbconfig.js'); const random = require('./random.js'); const testsUtil = require('./testsUtil.js'); -const assist = require('./dataTypeAssist.js'); describe('133. longrawProcedureBind_inout.js', function() { @@ -182,7 +181,7 @@ describe('133. longrawProcedureBind_inout.js', function() { if (expectedBuf == null) { assert.strictEqual(result.outBinds.c, expectedBuf); } else { - assist.compare2Buffers(result.outBinds.c, expectedBuf); + assert.deepStrictEqual(result.outBinds.c, expectedBuf); } }; @@ -204,7 +203,7 @@ describe('133. longrawProcedureBind_inout.js', function() { if (expectedBuf == null) { assert.strictEqual(result.outBinds.c, expectedBuf); } else { - assist.compare2Buffers(result.outBinds.c, expectedBuf); + assert.deepStrictEqual(result.outBinds.c, expectedBuf); } }; diff --git a/test/longrawProcedureBind_out.js b/test/longrawProcedureBind_out.js index cd64e921..5340fc0a 100755 --- a/test/longrawProcedureBind_out.js +++ b/test/longrawProcedureBind_out.js @@ -37,7 +37,6 @@ const assert = require('assert'); const dbConfig = require('./dbconfig.js'); const random = require('./random.js'); const testsUtil = require('./testsUtil.js'); -const assist = require('./dataTypeAssist.js'); describe('134. longrawProcedureBind_out.js', function() { @@ -214,7 +213,7 @@ describe('134. longrawProcedureBind_out.js', function() { if (expectedBuf == null) { assert.strictEqual(result.outBinds.c, expectedBuf); } else { - assist.compare2Buffers(result.outBinds.c, expectedBuf); + assert.deepStrictEqual(result.outBinds.c, expectedBuf); } }; diff --git a/test/maxRows.js b/test/maxRows.js index df14d4b3..80d90214 100644 --- a/test/maxRows.js +++ b/test/maxRows.js @@ -32,192 +32,121 @@ 'use strict'; const oracledb = require('oracledb'); -const should = require('should'); -const async = require('async'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); describe('157. maxRows.js', function() { let connection = null; - var totalAmount = 107; + let totalAmount = 107; - before(function(done) { - async.series([ - function getConn(cb) { - oracledb.getConnection(dbConfig, function(err, conn) { - should.not.exist(err); - connection = conn; - cb(); - }); - }, - function createTab(cb) { - var proc = "BEGIN \n" + - " DECLARE \n" + - " e_table_missing EXCEPTION; \n" + - " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + - " BEGIN \n" + - " EXECUTE IMMEDIATE('DROP TABLE nodb_tab_conn_emp2 PURGE'); \n" + - " EXCEPTION \n" + - " WHEN e_table_missing \n" + - " THEN NULL; \n" + - " END; \n" + - " EXECUTE IMMEDIATE (' \n" + - " CREATE TABLE nodb_tab_conn_emp2 ( \n" + - " id NUMBER NOT NULL, \n" + - " name VARCHAR2(20) \n" + - " ) \n" + - " '); \n" + - "END; "; + before(async function() { + connection = await oracledb.getConnection(dbConfig); + let proc = "BEGIN \n" + + " DECLARE \n" + + " e_table_missing EXCEPTION; \n" + + " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + + " BEGIN \n" + + " EXECUTE IMMEDIATE('DROP TABLE nodb_tab_conn_emp2 PURGE'); \n" + + " EXCEPTION \n" + + " WHEN e_table_missing \n" + + " THEN NULL; \n" + + " END; \n" + + " EXECUTE IMMEDIATE (' \n" + + " CREATE TABLE nodb_tab_conn_emp2 ( \n" + + " id NUMBER NOT NULL, \n" + + " name VARCHAR2(20) \n" + + " ) \n" + + " '); \n" + + "END; "; + await connection.execute(proc); - connection.execute( - proc, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function insertData(cb) { - var proc = "DECLARE \n" + - " x NUMBER := 0; \n" + - " n VARCHAR2(20); \n" + - "BEGIN \n" + - " FOR i IN 1..107 LOOP \n" + - " x := x + 1; \n" + - " n := 'staff ' || x; \n" + - " INSERT INTO nodb_tab_conn_emp2 VALUES (x, n); \n" + - " END LOOP; \n" + - "END; "; - - connection.execute( - proc, - function(err) { - should.not.exist(err); - cb(); - } - ); - } - ], done); + proc = "DECLARE \n" + + " x NUMBER := 0; \n" + + " n VARCHAR2(20); \n" + + "BEGIN \n" + + " FOR i IN 1..107 LOOP \n" + + " x := x + 1; \n" + + " n := 'staff ' || x; \n" + + " INSERT INTO nodb_tab_conn_emp2 VALUES (x, n); \n" + + " END LOOP; \n" + + "END; "; + await connection.execute(proc); }); // before() - after(function(done) { - async.series([ - function(cb) { - connection.execute( - "DROP TABLE nodb_tab_conn_emp2 PURGE", - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.close(function(err) { - should.not.exist(err); - cb(); - }); - } - ], done); + after(async function() { + await connection.execute("DROP TABLE nodb_tab_conn_emp2 PURGE"); + await connection.close(); }); // after() // restore oracledb.maxRows to its default value - afterEach(function(done) { - var defaultValue = 0; + afterEach(function() { + let defaultValue = 0; oracledb.maxRows = defaultValue; - done(); }); - var verifyRows = function(rows, amount) { - for (var i = 0; i < amount; i++) { - should.strictEqual(rows[i][0], (i + 1)); - should.strictEqual(rows[i][1], ("staff " + String(i + 1))); + let verifyRows = function(rows, amount) { + for (let i = 0; i < amount; i++) { + assert.strictEqual(rows[i][0], (i + 1)); + assert.strictEqual(rows[i][1], ("staff " + String(i + 1))); } }; - var sqlQuery = "SELECT * FROM nodb_tab_conn_emp2 ORDER BY id"; + let sqlQuery = "SELECT * FROM nodb_tab_conn_emp2 ORDER BY id"; - it('157.1 Default maxRows == 0, which means unlimited', function(done) { - should.strictEqual(oracledb.maxRows, 0); + it('157.1 Default maxRows == 0, which means unlimited', async function() { + assert.strictEqual(oracledb.maxRows, 0); - connection.execute( - sqlQuery, - function(err, result) { - should.not.exist(err); - should.exist(result); - should.strictEqual(result.rows.length, totalAmount); - verifyRows(result.rows, totalAmount); - done(); - } - ); + const result = await connection.execute(sqlQuery); + assert(result); + assert.strictEqual(result.rows.length, totalAmount); + verifyRows(result.rows, totalAmount); }); - it("157.2 specify the value at execution", function(done) { - var fetchAmount = 25; - connection.execute( + it("157.2 specify the value at execution", async function() { + let fetchAmount = 25; + const result = await connection.execute( sqlQuery, {}, - { maxRows: fetchAmount }, - function(err, result) { - should.not.exist(err); - should.exist(result); - should.strictEqual(result.rows.length, fetchAmount); - verifyRows(result.rows, fetchAmount); - done(); - } + { maxRows: fetchAmount } ); + assert(result); + assert.strictEqual(result.rows.length, fetchAmount); + verifyRows(result.rows, fetchAmount); }); - it('157.3 equals to the total amount of rows', function(done) { - connection.execute( + it('157.3 equals to the total amount of rows', async function() { + const result = await connection.execute( sqlQuery, {}, - { maxRows: totalAmount }, - function(err, result) { - should.not.exist(err); - should.exist(result); - should.strictEqual(result.rows.length, totalAmount); - verifyRows(result.rows, totalAmount); - done(); - } + { maxRows: totalAmount } + ); + assert(result); + assert.strictEqual(result.rows.length, totalAmount); + verifyRows(result.rows, totalAmount); + }); + + it('157.4 cannot set it to be a negative number', async function() { + await assert.rejects( + async () => { + await connection.execute(sqlQuery, {}, { maxRows: -5 }); + }, + // NJS-007: invalid value for "maxRows" in parameter 3 + /NJS-007:/ ); }); - it('157.4 cannot set it to be a negative number', function(done) { - connection.execute( - sqlQuery, - {}, - { maxRows: -5 }, - function(err, result) { - should.exist(err); - should.not.exist(result); - should.strictEqual( - err.message, - 'NJS-007: invalid value for "maxRows" in parameter 3' - ); - done(); - } - ); + it('157.5 sets it to be large value', async function() { + const result = await connection.execute(sqlQuery, {}, { maxRows: 500000 }); + assert(result); + verifyRows(result.rows, totalAmount); }); - it('157.5 sets it to be large value', function(done) { - connection.execute( - sqlQuery, - {}, - { maxRows: 500000 }, - function(err, result) { - should.not.exist(err); - should.exist(result); - verifyRows(result.rows, totalAmount); - done(); - } - ); - }); + it('157.6 shows 12c new way to limit the number of records fetched by queries', async function() { - it('157.6 shows 12c new way to limit the number of records fetched by queries', function(done) { - - var myoffset = 2; // number of rows to skip - var mymaxnumrows = 6; // number of rows to fetch - var sql = "SELECT * FROM nodb_tab_conn_emp2 ORDER BY id"; + let myoffset = 2; // number of rows to skip + let mymaxnumrows = 6; // number of rows to fetch + let sql = "SELECT * FROM nodb_tab_conn_emp2 ORDER BY id"; if (connection.oracleServerVersion >= 1201000000) { // 12c row-limiting syntax @@ -229,47 +158,29 @@ describe('157. maxRows.js', function() { + "WHERE ROWNUM <= :maxnumrows + :offset) WHERE MY_RNUM > :offset"; } - connection.execute( + const result = await connection.execute( sql, { offset: myoffset, maxnumrows: mymaxnumrows }, - { maxRows: 150 }, - function(err, result) { - should.not.exist(err); - (result.rows.length).should.eql(mymaxnumrows); - done(); - } + { maxRows: 150 } ); + assert.strictEqual(result.rows.length, mymaxnumrows); }); // 157.6 - it('157.7 oracledb.maxRows > 0 && oracledb.maxRows < totalAmount', function(done) { + it('157.7 oracledb.maxRows > 0 && oracledb.maxRows < totalAmount', async function() { - var testValue = 100; + let testValue = 100; oracledb.maxRows = testValue; - connection.execute( - sqlQuery, - function(err, result) { - should.not.exist(err); - var expectedAmount = testValue; - verifyRows(result.rows, expectedAmount); - done(); - } - ); + let result = await connection.execute(sqlQuery); + let expectedAmount = testValue; + verifyRows(result.rows, expectedAmount); }); // 157.7 - it('157.8 oracledb.maxRows > 0, execute() with maxRows=0', function(done) { + it('157.8 oracledb.maxRows > 0, execute() with maxRows=0', async function() { oracledb.maxRows = 100; - connection.execute( - sqlQuery, - {}, - { maxRows: 0 }, - function(err, result) { - should.not.exist(err); - var expectedAmount = totalAmount; - verifyRows(result.rows, expectedAmount); - done(); - } - ); + let result = await connection.execute(sqlQuery, {}, { maxRows: 0 }); + let expectedAmount = totalAmount; + verifyRows(result.rows, expectedAmount); }); // 157.8 }); diff --git a/test/multipleLobInsertion.js b/test/multipleLobInsertion.js index d9ca018e..272f9fff 100644 --- a/test/multipleLobInsertion.js +++ b/test/multipleLobInsertion.js @@ -26,191 +26,99 @@ * 68. multipleLobInsertion.js * * DESCRIPTION - * Testing external authentication functionality. - * - * Note that enabling the externalAuth feature requires configuration on the - * database besides setting "externalAuth" attribute to be true. Please refer - * to API documentation about configuration. - * https://node-oracledb.readthedocs.io/en/latest/user_guide/connection_handling.html#extauth + * Testing multiple insertions of Large Objects including BLOB and CLOB * *****************************************************************************/ 'use strict'; const oracledb = require('oracledb'); -const should = require('should'); -const async = require('async'); const fs = require('fs'); const dbConfig = require('./dbconfig.js'); describe('68. multipleLobInsertion.js', function() { let connection = null; - before(function(done) { + before(async function() { - async.series([ - function getConn(cb) { - oracledb.getConnection( - dbConfig, - function(err, conn) { - should.not.exist(err); - connection = conn; - cb(); - } - ); - }, - function createTabBLOB(cb) { - var proc = "BEGIN \n" + - " DECLARE \n" + - " e_table_missing EXCEPTION; \n" + - " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + - " BEGIN \n" + - " EXECUTE IMMEDIATE('DROP TABLE nodb_multi_blob PURGE'); \n" + - " EXCEPTION \n" + - " WHEN e_table_missing \n" + - " THEN NULL; \n" + - " END; \n" + - " EXECUTE IMMEDIATE (' \n" + - " CREATE TABLE nodb_multi_blob ( \n" + - " id NUMBER, \n" + - " b1 BLOB, \n" + - " b2 BLOB, \n" + - " b3 BLOB, \n" + - " b4 BLOB, \n" + - " b5 BLOB \n" + - " ) \n" + - " '); \n" + - "END; "; + connection = await oracledb.getConnection(dbConfig); - connection.execute( - proc, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function createTabCLOB(cb) { - var proc = "BEGIN \n" + - " DECLARE \n" + - " e_table_missing EXCEPTION; \n" + - " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + - " BEGIN \n" + - " EXECUTE IMMEDIATE('DROP TABLE nodb_multi_clob PURGE'); \n" + - " EXCEPTION \n" + - " WHEN e_table_missing \n" + - " THEN NULL; \n" + - " END; \n" + - " EXECUTE IMMEDIATE (' \n" + - " CREATE TABLE nodb_multi_clob ( \n" + - " id NUMBER, \n" + - " c1 CLOB, \n" + - " c2 CLOB, \n" + - " c3 CLOB, \n" + - " c4 CLOB, \n" + - " c5 CLOB \n" + - " ) \n" + - " '); \n" + - "END; "; - - connection.execute( - proc, - function(err) { - should.not.exist(err); - cb(); - } - ); - } - ], done); + // create the BLOB table + let proc = "BEGIN \n" + + " DECLARE \n" + + " e_table_missing EXCEPTION; \n" + + " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + + " BEGIN \n" + + " EXECUTE IMMEDIATE('DROP TABLE nodb_multi_blob PURGE'); \n" + + " EXCEPTION \n" + + " WHEN e_table_missing \n" + + " THEN NULL; \n" + + " END; \n" + + " EXECUTE IMMEDIATE (' \n" + + " CREATE TABLE nodb_multi_blob ( \n" + + " id NUMBER, \n" + + " b1 BLOB, \n" + + " b2 BLOB, \n" + + " b3 BLOB, \n" + + " b4 BLOB, \n" + + " b5 BLOB \n" + + " ) \n" + + " '); \n" + + "END; "; + await connection.execute(proc); + // create the CLOB table + proc = "BEGIN \n" + + " DECLARE \n" + + " e_table_missing EXCEPTION; \n" + + " PRAGMA EXCEPTION_INIT(e_table_missing, -00942); \n" + + " BEGIN \n" + + " EXECUTE IMMEDIATE('DROP TABLE nodb_multi_clob PURGE'); \n" + + " EXCEPTION \n" + + " WHEN e_table_missing \n" + + " THEN NULL; \n" + + " END; \n" + + " EXECUTE IMMEDIATE (' \n" + + " CREATE TABLE nodb_multi_clob ( \n" + + " id NUMBER, \n" + + " c1 CLOB, \n" + + " c2 CLOB, \n" + + " c3 CLOB, \n" + + " c4 CLOB, \n" + + " c5 CLOB \n" + + " ) \n" + + " '); \n" + + "END; "; + await connection.execute(proc); }); // before - after(function(done) { - async.series([ - function(cb) { - connection.execute( - "DROP TABLE nodb_multi_clob PURGE", - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.execute( - "DROP TABLE nodb_multi_blob PURGE", - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.close(function(err) { - should.not.exist(err); - cb(); - }); - } - ], done); + after(async function() { + await connection.execute("DROP TABLE nodb_multi_clob PURGE"); + await connection.execute("DROP TABLE nodb_multi_blob PURGE"); + await connection.close(); }); // after - var lobInsert = function(sql, bindv, inFileName, cb) { - - connection.execute( - sql, - bindv, - { autoCommit: false }, - function(err, result) { - should.not.exist(err); - - var lobArr = new Array(); - - // put lobbv1..5 to lobArr - for (var item in result.outBinds) { - lobArr.push(result.outBinds[item][0]); - } - - async.eachSeries( - lobArr, - function(lob, callback) { - var inStream = fs.createReadStream(inFileName); - - inStream.pipe(lob); - - // one task completes - lob.on('finish', function() { - return callback(); - }); - - lob.on('error', function(err) { - return callback(err); - }); - - inStream.on('error', function(err) { - return callback(err); - }); - }, - function(err) { - should.not.exist(err); - - connection.commit(function(err) { - should.not.exist(err); - return cb(); - }); - } - ); // async.eachSeries - - } - ); - + const lobInsert = async function(sql, bindv, inFileName) { + const result = await connection.execute(sql, bindv, { autoCommit: false }); + for (let item in result.outBinds) { + const lob = result.outBinds[item][0]; + const inStream = fs.createReadStream(inFileName); + await new Promise((resolve, reject) => { + inStream.on('error', reject); + lob.on('error', reject); + lob.on('finish', resolve); + inStream.pipe(lob); + }); + } + await connection.commit(); }; - it('68.1 inserts multiple BLOBs', function(done) { + it('68.1 inserts multiple BLOBs', async function() { - var sql = "insert into nodb_multi_blob values(1, " + + const sql = "insert into nodb_multi_blob values(1, " + " EMPTY_BLOB(), EMPTY_BLOB(), EMPTY_BLOB(), EMPTY_BLOB(), EMPTY_BLOB() ) " + " returning b1, b2, b3, b4, b5 into :lobbv1, :lobbv2, :lobbv3, :lobbv4, :lobbv5"; - var bindvars = { + const bindvars = { lobbv1: { type: oracledb.BLOB, dir: oracledb.BIND_OUT }, lobbv2: { type: oracledb.BLOB, dir: oracledb.BIND_OUT }, lobbv3: { type: oracledb.BLOB, dir: oracledb.BIND_OUT }, @@ -218,19 +126,19 @@ describe('68. multipleLobInsertion.js', function() { lobbv5: { type: oracledb.BLOB, dir: oracledb.BIND_OUT } }; - var inFileName = './test/fuzzydinosaur.jpg'; + const inFileName = './test/fuzzydinosaur.jpg'; - lobInsert(sql, bindvars, inFileName, done); + await lobInsert(sql, bindvars, inFileName); }); // 68.1 - it('68.2 inserts multiple CLOBs', function(done) { + it('68.2 inserts multiple CLOBs', async function() { - var sql = "insert into nodb_multi_clob values(1, " + + const sql = "insert into nodb_multi_clob values(1, " + " EMPTY_CLOB(), EMPTY_CLOB(), EMPTY_CLOB(), EMPTY_CLOB(), EMPTY_CLOB() ) " + " returning c1, c2, c3, c4, c5 into :lobbv1, :lobbv2, :lobbv3, :lobbv4, :lobbv5"; - var bindvars = { + const bindvars = { lobbv1: { type: oracledb.CLOB, dir: oracledb.BIND_OUT }, lobbv2: { type: oracledb.CLOB, dir: oracledb.BIND_OUT }, lobbv3: { type: oracledb.CLOB, dir: oracledb.BIND_OUT }, @@ -238,10 +146,10 @@ describe('68. multipleLobInsertion.js', function() { lobbv5: { type: oracledb.CLOB, dir: oracledb.BIND_OUT } }; - var inFileName = './test/clobexample.txt'; + const inFileName = './test/clobexample.txt'; - lobInsert(sql, bindvars, inFileName, done); + await lobInsert(sql, bindvars, inFileName); - }); + }); // 68.2 }); diff --git a/test/opts/.mocharc.yaml b/test/opts/.mocharc.yaml index 37fffbce..abe2ee7c 100644 --- a/test/opts/.mocharc.yaml +++ b/test/opts/.mocharc.yaml @@ -252,3 +252,4 @@ spec: - test/aq4.js - test/procAndFuncs.js - test/poolTimeout.js + - test/binding_buffer_string.js diff --git a/test/resultsetToStream.js b/test/resultsetToStream.js index 19f4b529..1002ec11 100644 --- a/test/resultsetToStream.js +++ b/test/resultsetToStream.js @@ -32,138 +32,86 @@ 'use strict'; const oracledb = require('oracledb'); -const should = require('should'); -const async = require('async'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); describe('15. resultsetToStream.js', function() { let connection = null; - var rowsAmount = 217; - before(function(done) { - async.series([ - function getConn(cb) { - oracledb.getConnection( - dbConfig, - function(err, conn) { - should.not.exist(err); - connection = conn; - cb(); - } - ); - }, - function createTab(cb) { - var proc = "BEGIN \n" + - " DECLARE \n" + - " e_table_missing EXCEPTION; \n" + - " PRAGMA EXCEPTION_INIT(e_table_missing, -00942);\n " + - " BEGIN \n" + - " EXECUTE IMMEDIATE ('DROP TABLE nodb_rs2stream PURGE'); \n" + - " EXCEPTION \n" + - " WHEN e_table_missing \n" + - " THEN NULL; \n" + - " END; \n" + - " EXECUTE IMMEDIATE (' \n" + - " CREATE TABLE nodb_rs2stream ( \n" + - " employees_id NUMBER, \n" + - " employees_name VARCHAR2(20), \n" + - " employees_history CLOB \n" + - " ) \n" + - " '); \n" + - "END; "; + const rowsAmount = 217; - connection.execute( - proc, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function insertRows(cb) { - var proc = "DECLARE \n" + - " x NUMBER := 0; \n" + - " n VARCHAR2(20); \n" + - " clobData CLOB; \n" + - "BEGIN \n" + - " FOR i IN 1..217 LOOP \n" + - " x := x + 1; \n" + - " n := 'staff ' || x; \n" + - " INSERT INTO nodb_rs2stream VALUES (x, n, EMPTY_CLOB()) RETURNING employees_history INTO clobData; \n" + - " DBMS_LOB.WRITE(clobData, 20, 1, '12345678901234567890'); \n" + - " END LOOP; \n" + - "end; "; + before(async function() { + connection = await oracledb.getConnection(dbConfig); - connection.execute( - proc, - function(err) { - should.not.exist(err); - cb(); - } - ); - } - ], done); + let proc = "BEGIN \n" + + " DECLARE \n" + + " e_table_missing EXCEPTION; \n" + + " PRAGMA EXCEPTION_INIT(e_table_missing, -00942);\n " + + " BEGIN \n" + + " EXECUTE IMMEDIATE ('DROP TABLE nodb_rs2stream PURGE'); \n" + + " EXCEPTION \n" + + " WHEN e_table_missing \n" + + " THEN NULL; \n" + + " END; \n" + + " EXECUTE IMMEDIATE (' \n" + + " CREATE TABLE nodb_rs2stream ( \n" + + " employees_id NUMBER, \n" + + " employees_name VARCHAR2(20), \n" + + " employees_history CLOB \n" + + " ) \n" + + " '); \n" + + "END; "; + await connection.execute(proc); + + proc = "DECLARE \n" + + " x NUMBER := 0; \n" + + " n VARCHAR2(20); \n" + + " clobData CLOB; \n" + + "BEGIN \n" + + " FOR i IN 1..217 LOOP \n" + + " x := x + 1; \n" + + " n := 'staff ' || x; \n" + + " INSERT INTO nodb_rs2stream VALUES (x, n, EMPTY_CLOB()) RETURNING employees_history INTO clobData; \n" + + " DBMS_LOB.WRITE(clobData, 20, 1, '12345678901234567890'); \n" + + " END LOOP; \n" + + "end; "; + await connection.execute(proc); }); // before - after(function(done) { - async.series([ - function(callback) { - connection.execute( - "DROP TABLE nodb_rs2stream PURGE", - function(err) { - should.not.exist(err); - callback(); - } - ); - }, - function(callback) { - connection.close(function(err) { - should.not.exist(err); - callback(); - }); - }, - ], done); + after(async function() { + await connection.execute("DROP TABLE nodb_rs2stream PURGE"); + await connection.close(); }); // after describe('15.1 Testing ResultSet.toQueryStream', function() { - it('15.1.1 should allow resultsets to be converted to streams', function(done) { - connection.execute( + + it('15.1.1 should allow resultsets to be converted to streams', async function() { + const result = await connection.execute( 'begin \n' + ' open :cursor for select employees_name from nodb_rs2stream; \n' + 'end;', { cursor: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } - }, - function(err, result) { - should.not.exist(err); - - var stream = result.outBinds.cursor.toQueryStream(); - - stream.on('error', function(error) { - console.log(error); - should.fail(error, null, 'Error event should not be triggered'); - }); - - var counter = 0; - stream.on('data', function(data) { - should.exist(data); - counter++; - }); - - stream.on('end', function() { - should.equal(counter, rowsAmount); - stream.destroy(); - }); - - stream.on('close', function() { - done(); - }); } ); - }); - }); + const stream = result.outBinds.cursor.toQueryStream(); + let counter = 0; + await new Promise((resolve, reject) => { + stream.on('error', reject); + stream.on('end', stream.destroy); + stream.on('close', resolve); + stream.on('data', function(data) { + assert(data); + counter++; + }); + }); + assert.strictEqual(counter, rowsAmount); + }); // 15.1.1 + + }); // 15.1 describe('15.2 Testing ResultSet/QueryStream conversion errors', function() { + it('15.2.1 should prevent conversion to stream after getRow is invoked', async function() { const sql = ` begin @@ -175,15 +123,13 @@ describe('15. resultsetToStream.js', function() { const result = await connection.execute(sql, binds); const cursor = result.outBinds.cursor; await cursor.getRow(); - try { - const stream = cursor.toQueryStream(); - should.not.exist(stream); - } catch (err) { - (err.message).should.startWith('NJS-041:'); + await assert.throws( + () => cursor.toQueryStream(), // NJS-041: cannot convert to stream after invoking methods - } + /NJS-041:/ + ); await cursor.close(); - }); + }); // 15.2.1 it('15.2.2 should prevent conversion to stream after getRows is invoked', async function() { const sql = ` @@ -196,14 +142,13 @@ describe('15. resultsetToStream.js', function() { const result = await connection.execute(sql, binds); const cursor = result.outBinds.cursor; await cursor.getRows(5); - try { - const stream = cursor.toQueryStream(); - should.not.exist(stream); - } catch (err) { - (err.message).should.startWith('NJS-041:'); - } + assert.throws( + () => cursor.toQueryStream(), + // NJS-041: cannot convert to stream after invoking methods + /NJS-041:/ + ); await cursor.close(); - }); + }); // 15.2.2 it('15.2.3 should prevent conversion to stream after close is invoked', async function() { const sql = ` @@ -216,126 +161,86 @@ describe('15. resultsetToStream.js', function() { const result = await connection.execute(sql, binds); const cursor = result.outBinds.cursor; await cursor.close(); - try { - const stream = cursor.toQueryStream(); - should.not.exist(stream); - } catch (err) { - (err.message).should.startWith('NJS-041:'); - } - }); - - it('15.2.4 should prevent invoking getRow after conversion to stream', function(done) { - connection.execute( - 'begin \n' + - ' open :cursor for select employees_name from nodb_rs2stream; \n' + - 'end;', - { - cursor: { type: oracledb.CURSOR, dir : oracledb.BIND_OUT } - }, - function(err, result) { - should.not.exist(err); - - var cursor = result.outBinds.cursor; - var stream = cursor.toQueryStream(); - - stream.on('close', done); - stream.on('error', function(err) { - should.not.exist(err); - }); - - cursor.getRow(function(err) { - (err.message).should.startWith('NJS-042:'); - // NJS-042: cannot invoke methods after converting to stream - stream.destroy(); - }); - } + assert.throws( + () => cursor.toQueryStream(), + // NJS-041: cannot convert to stream after invoking methods + /NJS-041:/ ); - }); + }); // 15.2.3 - it('15.2.5 should prevent invoking getRows after conversion to stream', function(done) { - connection.execute( - 'begin \n' + - ' open :cursor for select employees_name from nodb_rs2stream; \n' + - 'end;', - { - cursor: { type: oracledb.CURSOR, dir : oracledb.BIND_OUT } - }, - function(err, result) { - should.not.exist(err); - - var cursor = result.outBinds.cursor; - var stream = cursor.toQueryStream(); - - stream.on('close', done); - stream.on('error', function(err) { - should.not.exist(err); - }); - - cursor.getRows(5, function(err) { - (err.message).should.startWith('NJS-042:'); - stream.destroy(); - }); - } + it('15.2.4 should prevent invoking getRow after conversion to stream', async function() { + const sql = ` + begin + open :cursor for select employees_name from nodb_rs2stream; + end;`; + const binds = { + cursor: { type: oracledb.CURSOR, dir : oracledb.BIND_OUT } + }; + const result = await connection.execute(sql, binds); + const cursor = result.outBinds.cursor; + const stream = cursor.toQueryStream(); + await assert.rejects( + async () => await cursor.getRow(), + // NJS-042: cannot invoke methods after converting to stream + /NJS-042:/ ); - }); + stream.destroy(); + }); // 15.2.4 - it('15.2.6 should prevent invoking close after conversion to stream', function(done) { - connection.execute( - 'begin \n' + - ' open :cursor for select employees_name from nodb_rs2stream; \n' + - 'end;', - { - cursor: { type: oracledb.CURSOR, dir : oracledb.BIND_OUT } - }, - function(err, result) { - should.not.exist(err); - - var cursor = result.outBinds.cursor; - var stream = cursor.toQueryStream(); - - stream.on('close', done); - stream.on('error', function(err) { - should.not.exist(err); - }); - - cursor.close(function(err) { - (err.message).should.startWith('NJS-042:'); - stream.destroy(); - }); - } + it('15.2.5 should prevent invoking getRows after conversion to stream', async function() { + const sql = ` + begin + open :cursor for select employees_name from nodb_rs2stream; + end;`; + const binds = { + cursor: { type: oracledb.CURSOR, dir : oracledb.BIND_OUT } + }; + const result = await connection.execute(sql, binds); + const cursor = result.outBinds.cursor; + const stream = cursor.toQueryStream(); + await assert.rejects( + async () => await cursor.getRows(5), + // NJS-042: cannot invoke methods after converting to stream + /NJS-042:/ ); - }); + stream.destroy(); + }); // 15.2.5 - it('15.2.7 should prevent calling toQueryStream more than once', function(done) { - connection.execute( - 'begin \n' + - ' open :cursor for select employees_name from nodb_rs2stream; \n' + - 'end;', - { - cursor: { type: oracledb.CURSOR, dir : oracledb.BIND_OUT } - }, - function(err, result) { - should.not.exist(err); - - var cursor = result.outBinds.cursor; - - // First conversion to stream - var stream = cursor.toQueryStream(); - - stream.on('close', done); - stream.on('error', function(err) { - should.not.exist(err); - }); - - try { - // Second conversion to stream - stream = cursor.toQueryStream(); - } catch (err) { - (err.message).should.startWith('NJS-043:'); - stream.destroy(); - } - } + it('15.2.6 should prevent invoking close after conversion to stream', async function() { + const sql = ` + begin + open :cursor for select employees_name from nodb_rs2stream; + end;`; + const binds = { + cursor: { type: oracledb.CURSOR, dir : oracledb.BIND_OUT } + }; + const result = await connection.execute(sql, binds); + const cursor = result.outBinds.cursor; + const stream = cursor.toQueryStream(); + await assert.rejects( + async () => await cursor.close(), + // NJS-042: cannot invoke methods after converting to stream + /NJS-042:/ ); + stream.destroy(); + }); // 15.2.6 + + it('15.2.7 should prevent calling toQueryStream more than once', async function() { + const sql = ` + begin + open :cursor for select employees_name from nodb_rs2stream; + end;`; + const binds = { + cursor: { type: oracledb.CURSOR, dir : oracledb.BIND_OUT } + }; + const result = await connection.execute(sql, binds); + const cursor = result.outBinds.cursor; + const stream = cursor.toQueryStream(); + assert.throws( + () => cursor.toQueryStream(), + /NJS-043:/ + ); + stream.destroy(); }); // 15.2.7 }); // 15.2 diff --git a/test/sql.js b/test/sql.js index 2a2a0dba..f9031828 100644 --- a/test/sql.js +++ b/test/sql.js @@ -1,4 +1,4 @@ -/* Copyright (c) 2017, 2022, Oracle and/or its affiliates. */ +/* Copyright (c) 2017, 2023, Oracle and/or its affiliates. */ /****************************************************************************** * @@ -30,9 +30,6 @@ *****************************************************************************/ 'use strict'; -const should = require('should'); -const async = require('async'); - const sql = exports; module.exports = sql; @@ -71,95 +68,3 @@ sql.createTable = function(tableName, dataType) { END;`; return sql; }; - -sql.createAllTable = function(tableName, dataTypeArray) { - let sql = `BEGIN - DECLARE - e_table_missing EXCEPTION; - PRAGMA EXCEPTION_INIT(e_table_missing, -00942); - BEGIN - EXECUTE IMMEDIATE ('DROP TABLE ` + tableName + ` PURGE' ); - EXCEPTION - WHEN e_table_missing - THEN NULL; - END; - EXECUTE IMMEDIATE ( ' - CREATE TABLE ` + tableName + ` ( - id NUMBER, `; - - async.eachSeries(dataTypeArray, function(element, cb) { - const index = dataTypeArray.indexOf(element); - const length = dataTypeArray.length; - const col_name = "col_" + (index + 1); - let col_type = element; - let isLast; - - if (col_type === "CHAR") { - element = element + "(2000)"; - } - if (col_type === "NCHAR") { - element = element + "(1000)"; - } - if (col_type === "VARCHAR2") { - element = element + "(4000)"; - } - if (col_type === "RAW") { - element = element + "(2000)"; - } - isLast = (index == (length - 1)) ? true : false; - sql = appendSql(sql, col_name, element, isLast); - cb(); - }, function(err) { - should.not.exist(err); - }); - sql = sql + - ` ) - '); - END;`; - return sql; -}; - -sql.executeSql = function(connection, sql, bindVar, option, callback) { - connection.execute( - sql, - bindVar, - option, - function(err) { - if (err) { - let stack = new Error().stack; - console.error(err); - console.error(stack); - } - should.not.exist(err); - callback(err); - } - ); -}; - -sql.createRowid = function(connection, rowid_type, object_number, relative_fno, block_number, row_number, callback) { -// Parameter Description -// rowid_type Type (restricted or extended), set the rowid_type parameter to 0 for a restricted ROWID. Set it to 1 to create an extended ROWID. -// If you specify rowid_type as 0, then the required object_number parameter is ignored, and ROWID_CREATE returns a restricted ROWID. -// object_number The data object number for the ROWID. For a restricted ROWID, use the ROWID_OBJECT_UNDEFINED constant. -// relative_fno The relative file number for the ROWID. -// block_number The block number for the ROWID. -// row_number The row number for the ROWID. - let myRowid = ""; - connection.execute( - "select DBMS_ROWID.ROWID_CREATE(" + rowid_type + ", " + object_number + ", " + relative_fno + ", " + block_number + ", " + row_number + ") create_rowid from dual", - function(err, result) { - should.not.exist(err); - myRowid = result.rows[0][0]; - callback(myRowid); - } - ); -}; - -const appendSql = function(sql, col_name, col_type, isLast) { - if (isLast === true) { - sql = sql + " " + col_name + " " + col_type + " \n"; - } else { - sql = sql + " " + col_name + " " + col_type + ", \n"; - } - return sql; -}; diff --git a/test/sqlClone.js b/test/sqlClone.js deleted file mode 100644 index 4f2bf277..00000000 --- a/test/sqlClone.js +++ /dev/null @@ -1,172 +0,0 @@ -/* Copyright (c) 2017, 2022, Oracle and/or its affiliates. */ - -/****************************************************************************** - * - * This software is dual-licensed to you under the Universal Permissive License - * (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License - * 2.0 as shown at https://www.apache.org/licenses/LICENSE-2.0. You may choose - * either license. - * - * If you elect to accept the software under the Apache License, Version 2.0, - * the following applies: - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * NAME - * sql.js - * - * DESCRIPTION - * generate sql - *****************************************************************************/ -'use strict'; - -const should = require('should'); -const async = require('async'); - -const sql = exports; -module.exports = sql; - -sql.createTable = function(tableName, dataType) { - let element = dataType; - - if (dataType === "CHAR") { - element = element + "(1000)"; - } - if (dataType === "NCHAR") { - element = element + "(1000)"; - } - if (dataType === "VARCHAR2") { - element = element + "(1000)"; - } - if (dataType === "RAW") { - element = element + "(1000)"; - } - - const sql = `BEGIN - DECLARE - e_table_missing EXCEPTION; - PRAGMA EXCEPTION_INIT(e_table_missing, -00942); - BEGIN - EXECUTE IMMEDIATE ('DROP TABLE ` + tableName + ` PURGE' ); - EXCEPTION - WHEN e_table_missing - THEN NULL; - END; - EXECUTE IMMEDIATE ( ' - CREATE TABLE ` + tableName + ` ( - id NUMBER, - content ` + element + ` - ) - '); - END;`; - return sql; -}; - -sql.createAllTable = function(tableName, dataTypeArray) { - let sql = `BEGIN - DECLARE - e_table_missing EXCEPTION; - PRAGMA EXCEPTION_INIT(e_table_missing, -00942); - BEGIN - EXECUTE IMMEDIATE ('DROP TABLE ` + tableName + ` PURGE' ); - EXCEPTION - WHEN e_table_missing - THEN NULL; - END; - EXECUTE IMMEDIATE ( ' - CREATE TABLE ` + tableName + ` ( - id NUMBER, `; - - async.eachSeries(dataTypeArray, function(element, cb) { - const index = dataTypeArray.indexOf(element); - const length = dataTypeArray.length; - const col_name = "col_" + (index + 1); - let col_type = element; - let isLast; - - if (col_type === "CHAR") { - element = element + "(2000)"; - } - if (col_type === "NCHAR") { - element = element + "(1000)"; - } - if (col_type === "VARCHAR2") { - element = element + "(4000)"; - } - if (col_type === "RAW") { - element = element + "(2000)"; - } - isLast = (index == (length - 1)) ? true : false; - sql = appendSql(sql, col_name, element, isLast); - cb(); - }, function(err) { - should.not.exist(err); - }); - sql = sql + - ` ) - '); - END;`; - return sql; -}; - -// sql.executeSql = function(connection, sql, bindVar, option, callback) { -// connection.execute(sql, -// bindVar, -// option, -// function(err) { -// if (err) { -// let stack = new Error().stack; -// console.error(err); -// console.error(stack); -// } -// should.not.exist(err); -// callback(err); -// } -// ); -// }; - -sql.executeSql = async function(connection, sql, bindVar, option) { - try { - await connection.execute(sql, bindVar, option); - } catch (err) { - should.not.exist(err); - } -}; - -sql.createRowid = function(connection, rowid_type, object_number, relative_fno, block_number, row_number, callback) { -// Parameter Description -// rowid_type Type (restricted or extended), set the rowid_type parameter to 0 for a restricted ROWID. Set it to 1 to create an extended ROWID. -// If you specify rowid_type as 0, then the required object_number parameter is ignored, and ROWID_CREATE returns a restricted ROWID. -// object_number The data object number for the ROWID. For a restricted ROWID, use the ROWID_OBJECT_UNDEFINED constant. -// relative_fno The relative file number for the ROWID. -// block_number The block number for the ROWID. -// row_number The row number for the ROWID. - let myRowid = ""; - connection.execute( - "select DBMS_ROWID.ROWID_CREATE(" + rowid_type + ", " + object_number + ", " + relative_fno + ", " + block_number + ", " + row_number + ") create_rowid from dual", - function(err, result) { - should.not.exist(err); - myRowid = result.rows[0][0]; - callback(myRowid); - } - ); -}; - -const appendSql = function(sql, col_name, col_type, isLast) { - if (isLast === true) { - sql = sql + " " + col_name + " " + col_type + " \n"; - } else { - sql = sql + " " + col_name + " " + col_type + ", \n"; - } - return sql; -}; diff --git a/test/sqlWithWarnings.js b/test/sqlWithWarnings.js index 2377fab6..742d3862 100644 --- a/test/sqlWithWarnings.js +++ b/test/sqlWithWarnings.js @@ -34,36 +34,26 @@ "use strict"; const oracledb = require('oracledb'); -const should = require('should'); -const async = require('async'); +const assert = require('assert'); const dbConfig = require('./dbconfig.js'); describe('64. sqlWithWarnings.js', function() { let connection = null; - before('get one connection', function(done) { - oracledb.getConnection(dbConfig, - function(err, conn) { - should.not.exist(err); - connection = conn; - done(); - } - ); + before('get one connection', async function() { + connection = await oracledb.getConnection(dbConfig); }); - after('release connection', function(done) { - connection.close(function(err) { - should.not.exist(err); - done(); - }); + after('release connection', async function() { + await connection.close(); }); describe('64.1 test case offered by GitHub user', function() { - var tableName = "nodb_aggregate"; + const tableName = "nodb_aggregate"; - before('prepare table', function(done) { - var sqlCreateTab = + before('prepare table', async function() { + const sqlCreateTab = "BEGIN " + " DECLARE " + " e_table_missing EXCEPTION; " + @@ -81,86 +71,39 @@ describe('64. sqlWithWarnings.js', function() { " '); " + "END; "; - async.series([ - function(cb) { - connection.execute( - sqlCreateTab, - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.execute( - "INSERT INTO " + tableName + " VALUES(1)", - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.execute( - "INSERT INTO " + tableName + " VALUES(null)", - function(err) { - should.not.exist(err); - cb(); - } - ); - }, - function(cb) { - connection.commit(function(err) { - should.not.exist(err); - cb(); - }); - } - ], done); + await connection.execute(sqlCreateTab); + await connection.execute("INSERT INTO " + tableName + " VALUES(1)"); + await connection.execute("INSERT INTO " + tableName + " VALUES(null)"); + await connection.commit(); }); // before - after(function(done) { - connection.execute( - "DROP TABLE " + tableName + " PURGE", - function(err) { - should.not.exist(err); - done(); - } - ); + after(async function() { + await connection.execute("DROP TABLE " + tableName + " PURGE"); }); - it('64.1.1 Executes an aggregate query which causes warnings', function(done) { - connection.execute( + it('64.1.1 Executes an aggregate query which causes warnings', async function() { + await connection.execute( "SELECT MAX(NUM_COL) AS NUM_COL FROM " + tableName, [], - { maxRows: 1 }, - function(err) { - should.not.exist(err); - done(); - } + { maxRows: 1 } ); - }); + }); // 64.1.1 }); // 64.1 describe('64.2 PL/SQL - Success With Info', function() { - var plsqlWithWarning = + const plsqlWithWarning = " CREATE OR REPLACE PROCEDURE get_emp_rs_inout " + " (p_in IN NUMBER, p_out OUT SYS_REFCURSOR ) AS " + " BEGIN " + " OPEN p_out FOR SELECT * FROM nodb_sql_emp " + " END;"; - it('64.2.1 Execute SQL Statement to create PLSQL procedure with warnings', function(done) { - connection.should.be.an.Object; - connection.execute ( - plsqlWithWarning, - function(err) { - should.not.exist (err); - done(); - } - ); - }); + it('64.2.1 Execute SQL Statement to create PLSQL procedure with warnings', async function() { + assert.strictEqual(typeof connection, "object"); + await connection.execute (plsqlWithWarning); + }); // 64.2.1 }); // 64.2