Skip to content

Commit 5c27016

Browse files
committed
Add test for bigint casting
1 parent 6d5e44c commit 5c27016

File tree

5 files changed

+71
-36
lines changed

5 files changed

+71
-36
lines changed

test/cleanup.sql

+3
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ if exists (select * from sys.tables where name = 'bulk_table5')
5252
if exists (select * from sys.tables where name = 'rowsaffected_test')
5353
exec('drop table [dbo].[rowsaffected_test]')
5454

55+
if exists (select * from sys.tables where name = 'bignumbers')
56+
exec('drop table [dbo].[bignumbers]')
57+
5558
if exists (select * from sys.tables where name = 'streaming')
5659
exec('drop table [dbo].[streaming]')
5760

test/common/tests.js

+24
Original file line numberDiff line numberDiff line change
@@ -1250,6 +1250,30 @@ module.exports = (sql, driver) => {
12501250
}).catch(done)
12511251
},
12521252

1253+
'BigInt parameters' (done) {
1254+
const req = new TestRequest()
1255+
req.input('bignumber', sql.BigInt, '9223372036854775807')
1256+
req.query('INSERT INTO [dbo].[bignumbers] (bignumber) VALUES (@bignumber)')
1257+
.then(() => {
1258+
const req2 = new TestRequest()
1259+
return req2.query('SELECT * FROM [dbo].[bignumbers]')
1260+
})
1261+
.then((result) => {
1262+
assert.strictEqual(result.recordsets.length, 1)
1263+
assert.strictEqual(result.recordset[0].bignumber, '9223372036854775807')
1264+
done()
1265+
})
1266+
.catch(done)
1267+
},
1268+
1269+
'BigInt casted types' (done) {
1270+
const req = new TestRequest()
1271+
req.query('SELECT cast(9223372036854775807 AS BigInt) as bignumber').then(result => {
1272+
assert.strictEqual(result.recordset[0].bignumber, '9223372036854775807')
1273+
done()
1274+
}).catch(done)
1275+
},
1276+
12531277
'dataLength type correction' (done) {
12541278
sql.on('error', err => console.error(err))
12551279
const req = new TestRequest()

test/msnodesqlv8/msnodesqlv8.js

+20-18
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ const sql = require('../../msnodesqlv8')
88
const TESTS = require('../common/tests.js')(sql, 'msnodesqlv8')
99
const TIMES = require('../common/times.js')(sql, 'msnodesqlv8')
1010
const versionHelper = require('../common/versionhelper')
11+
const { readFileSync } = require('fs')
1112

1213
const config = function () {
13-
const cfg = JSON.parse(require('fs').readFileSync(join(__dirname, '../.mssql.json')))
14+
const cfg = JSON.parse(readFileSync(join(__dirname, '../.mssql.json')))
1415
cfg.driver = 'msnodesqlv8'
1516
return cfg
1617
}
@@ -19,23 +20,22 @@ let connection1 = null
1920
let connection2 = null
2021

2122
describe('msnodesqlv8', function () {
22-
before(done =>
23-
sql.connect(config(), function (err) {
24-
if (err) return done(err)
25-
26-
let req = new sql.Request()
27-
req.batch(require('fs').readFileSync(join(__dirname, '../cleanup.sql'), 'utf8'), function (err) {
28-
if (err) return done(err)
29-
30-
req = new sql.Request()
31-
req.batch(require('fs').readFileSync(join(__dirname, '../prepare.sql'), 'utf8'), function (err) {
32-
if (err) return done(err)
33-
34-
sql.close(done)
23+
before(done => {
24+
try {
25+
sql.connect(config())
26+
.then(() => {
27+
return new sql.Request().query(readFileSync(join(__dirname, '../cleanup.sql'), 'utf8'))
3528
})
36-
})
37-
})
38-
)
29+
.then(() => {
30+
return new sql.Request().query(readFileSync(join(__dirname, '../prepare.sql'), 'utf8'))
31+
})
32+
.catch(done)
33+
.then(() => sql.close())
34+
.then(() => done())
35+
} catch (e) {
36+
done(e)
37+
}
38+
})
3939
afterEach(() => sql.valueHandler.clear())
4040

4141
describe('basic test suite', function () {
@@ -90,6 +90,8 @@ describe('msnodesqlv8', function () {
9090
it('connection healthy works', done => TESTS['connection healthy works'](config(), done))
9191
it('healthy connection goes bad', done => TESTS['healthy connection goes bad'](config(), done))
9292
it('request timeout', done => TESTS['request timeout'](done))
93+
it('BigInt parameters', done => TESTS['BigInt parameters'](done))
94+
it('BigInt casted types', done => TESTS['BigInt casted types'](done))
9395
it('dataLength type correction', done => TESTS['dataLength type correction'](done))
9496
it('chunked xml support', done => TESTS['chunked xml support'](done))
9597

@@ -244,7 +246,7 @@ describe('msnodesqlv8', function () {
244246
if (err) return done(err)
245247

246248
const req = new sql.Request()
247-
req.query(require('fs').readFileSync(join(__dirname, '../cleanup.sql'), 'utf8'), function (err) {
249+
req.query(readFileSync(join(__dirname, '../cleanup.sql'), 'utf8'), function (err) {
248250
if (err) return done(err)
249251

250252
sql.close(done)

test/prepare.sql

+4
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,10 @@ exec('create table [dbo].[rowsaffected_test] (
145145
a int not null
146146
)')
147147

148+
exec('create table [dbo].[bignumbers] (
149+
bignumber bigint
150+
)')
151+
148152
;with nums as
149153
(
150154
select 0 AS n

test/tedious/tedious.js

+20-18
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
const sql = require('../../tedious.js')
66
const assert = require('assert')
77
const { join } = require('path')
8+
const { readFileSync } = require('fs')
89

910
const TESTS = require('../common/tests.js')(sql, 'tedious')
1011
const TIMES = require('../common/times.js')(sql, 'tedious')
@@ -16,7 +17,7 @@ if (parseInt(process.version.match(/^v(\d+)\./)[1]) > 0) {
1617
}
1718

1819
const config = function () {
19-
const cfg = JSON.parse(require('fs').readFileSync(join(__dirname, '../.mssql.json')))
20+
const cfg = JSON.parse(readFileSync(join(__dirname, '../.mssql.json')))
2021
cfg.driver = 'tedious'
2122
return cfg
2223
}
@@ -25,23 +26,22 @@ let connection1 = null
2526
let connection2 = null
2627

2728
describe('tedious', () => {
28-
before(done =>
29-
sql.connect(config(), err => {
30-
if (err) return done(err)
31-
32-
let req = new sql.Request()
33-
req.query(require('fs').readFileSync(join(__dirname, '../cleanup.sql'), 'utf8'), err => {
34-
if (err) return done(err)
35-
36-
req = new sql.Request()
37-
req.query(require('fs').readFileSync(join(__dirname, '../prepare.sql'), 'utf8'), err => {
38-
if (err) return done(err)
39-
40-
sql.close(done)
29+
before(done => {
30+
try {
31+
sql.connect(config())
32+
.then(() => {
33+
return new sql.Request().query(readFileSync(join(__dirname, '../cleanup.sql'), 'utf8'))
4134
})
42-
})
43-
})
44-
)
35+
.then(() => {
36+
return new sql.Request().query(readFileSync(join(__dirname, '../prepare.sql'), 'utf8'))
37+
})
38+
.catch(done)
39+
.then(() => sql.close())
40+
.then(() => done())
41+
} catch (e) {
42+
done(e)
43+
}
44+
})
4545
afterEach(() => sql.valueHandler.clear())
4646

4747
describe('basic test suite', () => {
@@ -99,6 +99,8 @@ describe('tedious', () => {
9999
it('connection healthy works', done => TESTS['connection healthy works'](config(), done))
100100
it('healthy connection goes bad', done => TESTS['healthy connection goes bad'](config(), done))
101101
it('request timeout', done => TESTS['request timeout'](done, 'tedious', /Timeout: Request failed to complete in 1000ms/))
102+
it('BigInt parameters', done => TESTS['BigInt parameters'](done))
103+
it('BigInt casted types', done => TESTS['BigInt casted types'](done))
102104
it('dataLength type correction', done => TESTS['dataLength type correction'](done))
103105
it('type validation', done => TESTS['type validation']('query', done))
104106
it('type validation (batch)', done => TESTS['type validation']('batch', done))
@@ -344,7 +346,7 @@ describe('tedious', () => {
344346
if (err) return done(err)
345347

346348
const req = new sql.Request()
347-
req.query(require('fs').readFileSync(join(__dirname, '../cleanup.sql'), 'utf8'), function (err) {
349+
req.query(readFileSync(join(__dirname, '../cleanup.sql'), 'utf8'), function (err) {
348350
if (err) return done(err)
349351

350352
sql.close(done)

0 commit comments

Comments
 (0)