153 lines
5.8 KiB
JavaScript
153 lines
5.8 KiB
JavaScript
var sqlite3 = require('..');
|
|
var assert = require('assert');
|
|
|
|
describe('error handling', function() {
|
|
var db;
|
|
before(function(done) {
|
|
db = new sqlite3.Database(':memory:', done);
|
|
});
|
|
|
|
it('throw when calling Database() without new', function() {
|
|
assert.throws(function() {
|
|
sqlite3.Database(':memory:');
|
|
}, (/Class constructors cannot be invoked without 'new'/));
|
|
|
|
assert.throws(function() {
|
|
sqlite3.Statement();
|
|
}, (/Class constructors cannot be invoked without 'new'/));
|
|
});
|
|
|
|
it('should error when calling Database#get on a missing table', function(done) {
|
|
db.get('SELECT id, txt FROM foo', function(err, row) {
|
|
if (err) {
|
|
assert.equal(err.message, 'SQLITE_ERROR: no such table: foo');
|
|
assert.equal(err.errno, sqlite3.ERROR);
|
|
assert.equal(err.code, 'SQLITE_ERROR');
|
|
done();
|
|
} else {
|
|
done(new Error('Completed query without error, but expected error'));
|
|
}
|
|
});
|
|
});
|
|
|
|
it('Database#all prepare fail', function(done) {
|
|
db.all('SELECT id, txt FROM foo', function(err, row) {
|
|
if (err) {
|
|
assert.equal(err.message, 'SQLITE_ERROR: no such table: foo');
|
|
assert.equal(err.errno, sqlite3.ERROR);
|
|
assert.equal(err.code, 'SQLITE_ERROR');
|
|
done();
|
|
} else {
|
|
done(new Error('Completed query without error, but expected error'));
|
|
}
|
|
});
|
|
});
|
|
|
|
it('Database#run prepare fail', function(done) {
|
|
db.run('SELECT id, txt FROM foo', function(err, row) {
|
|
if (err) {
|
|
assert.equal(err.message, 'SQLITE_ERROR: no such table: foo');
|
|
assert.equal(err.errno, sqlite3.ERROR);
|
|
assert.equal(err.code, 'SQLITE_ERROR');
|
|
done();
|
|
} else {
|
|
done(new Error('Completed query without error, but expected error'));
|
|
}
|
|
});
|
|
});
|
|
|
|
it('Database#each prepare fail', function(done) {
|
|
db.each('SELECT id, txt FROM foo', function(err, row) {
|
|
assert.ok(false, "this should not be called");
|
|
}, function(err, num) {
|
|
if (err) {
|
|
assert.equal(err.message, 'SQLITE_ERROR: no such table: foo');
|
|
assert.equal(err.errno, sqlite3.ERROR);
|
|
assert.equal(err.code, 'SQLITE_ERROR');
|
|
done();
|
|
} else {
|
|
done(new Error('Completed query without error, but expected error'));
|
|
}
|
|
});
|
|
});
|
|
|
|
it('Database#each prepare fail without completion handler', function(done) {
|
|
db.each('SELECT id, txt FROM foo', function(err, row) {
|
|
if (err) {
|
|
assert.equal(err.message, 'SQLITE_ERROR: no such table: foo');
|
|
assert.equal(err.errno, sqlite3.ERROR);
|
|
assert.equal(err.code, 'SQLITE_ERROR');
|
|
done();
|
|
} else {
|
|
done(new Error('Completed query without error, but expected error'));
|
|
}
|
|
});
|
|
});
|
|
|
|
it('Database#get prepare fail with param binding', function(done) {
|
|
db.get('SELECT id, txt FROM foo WHERE id = ?', 1, function(err, row) {
|
|
if (err) {
|
|
assert.equal(err.message, 'SQLITE_ERROR: no such table: foo');
|
|
assert.equal(err.errno, sqlite3.ERROR);
|
|
assert.equal(err.code, 'SQLITE_ERROR');
|
|
done();
|
|
} else {
|
|
done(new Error('Completed query without error, but expected error'));
|
|
}
|
|
});
|
|
});
|
|
|
|
it('Database#all prepare fail with param binding', function(done) {
|
|
db.all('SELECT id, txt FROM foo WHERE id = ?', 1, function(err, row) {
|
|
if (err) {
|
|
assert.equal(err.message, 'SQLITE_ERROR: no such table: foo');
|
|
assert.equal(err.errno, sqlite3.ERROR);
|
|
assert.equal(err.code, 'SQLITE_ERROR');
|
|
done();
|
|
} else {
|
|
done(new Error('Completed query without error, but expected error'));
|
|
}
|
|
});
|
|
});
|
|
|
|
it('Database#run prepare fail with param binding', function(done) {
|
|
db.run('SELECT id, txt FROM foo WHERE id = ?', 1, function(err, row) {
|
|
if (err) {
|
|
assert.equal(err.message, 'SQLITE_ERROR: no such table: foo');
|
|
assert.equal(err.errno, sqlite3.ERROR);
|
|
assert.equal(err.code, 'SQLITE_ERROR');
|
|
done();
|
|
} else {
|
|
done(new Error('Completed query without error, but expected error'));
|
|
}
|
|
});
|
|
});
|
|
|
|
it('Database#each prepare fail with param binding', function(done) {
|
|
db.each('SELECT id, txt FROM foo WHERE id = ?', 1, function(err, row) {
|
|
assert.ok(false, "this should not be called");
|
|
}, function(err, num) {
|
|
if (err) {
|
|
assert.equal(err.message, 'SQLITE_ERROR: no such table: foo');
|
|
assert.equal(err.errno, sqlite3.ERROR);
|
|
assert.equal(err.code, 'SQLITE_ERROR');
|
|
done();
|
|
} else {
|
|
done(new Error('Completed query without error, but expected error'));
|
|
}
|
|
});
|
|
});
|
|
|
|
it('Database#each prepare fail with param binding without completion handler', function(done) {
|
|
db.each('SELECT id, txt FROM foo WHERE id = ?', 1, function(err, row) {
|
|
if (err) {
|
|
assert.equal(err.message, 'SQLITE_ERROR: no such table: foo');
|
|
assert.equal(err.errno, sqlite3.ERROR);
|
|
assert.equal(err.code, 'SQLITE_ERROR');
|
|
done();
|
|
} else {
|
|
done(new Error('Completed query without error, but expected error'));
|
|
}
|
|
});
|
|
});
|
|
});
|