mariastream
Version:
Simplified stream interface for mariaDB
171 lines (154 loc) • 4.4 kB
JavaScript
var mariastream = require('../../lib/mariastream.js');
var test = require('tap').test;
var setup = require('../setup.js');
var client = mariastream();
test('connect and create test database', function (t) {
client.connect(setup.connectObject(), function () {
setup.createDatabase(client, function () {
t.end();
});
});
});
test('simple execute with no parameters using array', function (t) {
client.statement('SELECT 1 + 1 AS solution', { useArray: true })
.execute(function (err, rows, info) {
t.equal(err, null);
t.deepEqual(rows, [[ '2' ]]);
t.deepEqual(info, {
queries: 1,
insertId: 0,
affectedRows: 0,
numRows: 1
});
t.end();
});
});
test('simple execute with no parameters using object', function (t) {
client.statement('SELECT 1 + 1 AS solution')
.execute(function (err, rows, info) {
t.equal(err, null);
t.deepEqual(rows, [{solution: '2'}]);
t.deepEqual(info, {
queries: 1,
insertId: 0,
affectedRows: 0,
numRows: 1
});
t.end();
});
});
test('simple execute error', function (t) {
client.statement('SHOW TABLES')
.execute(function (err, rows, info) {
t.equal(err.message, 'No database selected');
t.deepEqual(rows, []);
t.deepEqual(info, {
queries: 0,
insertId: 0,
affectedRows: 0,
numRows: 0
});
t.end();
});
});
test('multiply query on same statement', function (t) {
client.statement('SELECT 1 + 1 AS solution;SELECT 2 + 2 AS solution;')
.execute(function (err, rows, info) {
t.equal(err, null);
t.deepEqual(rows, [
{solution: '2'},
{solution: '4'}
]);
t.deepEqual(info, {
queries: 2,
insertId: 0,
affectedRows: 0,
numRows: 2
});
t.end();
});
});
test('reset temporary table', function (t) {
setup.createTable(client, function (err) {
t.equal(err, null);
t.end();
});
});
test('execute with array parameters', function (t) {
client.statement('INSERT INTO mariastream.test (value) VALUES(?)')
.execute(['test-array'], function (err, rows, info) {
t.equal(err, null);
t.deepEqual(rows, []);
t.deepEqual(info, {
queries: 1,
insertId: 1,
affectedRows: 1,
numRows: 0
});
client.statement('SELECT * FROM mariastream.test WHERE id = ?')
.execute([info.insertId], function (err, rows, info) {
t.equal(err, null);
t.deepEqual(rows, [{id: '1', value: 'test-array'}]);
t.deepEqual(info, {
queries: 1,
insertId: 1,
affectedRows: 0,
numRows: 1
});
t.end();
});
});
});
test('execute with object parameters', function (t) {
client.statement('INSERT INTO mariastream.test (value) VALUES(:value)')
.execute({value: 'test-object'}, function (err, rows, info) {
t.equal(err, null);
t.deepEqual(rows, []);
t.deepEqual(info, {
queries: 1,
insertId: 2,
affectedRows: 1,
numRows: 0
});
client.statement('SELECT * FROM mariastream.test WHERE id = :id')
.execute({id: info.insertId}, function (err, rows, info) {
t.equal(err, null);
t.deepEqual(rows, [{id: '2', value: 'test-object'}]);
t.deepEqual(info, {
queries: 1,
insertId: 2,
affectedRows: 0,
numRows: 1
});
t.end();
});
});
});
test('multiply execute on same statement', function (t) {
var done = 0;
var query = client.statement('INSERT INTO mariastream.test (value) VALUES(?)');
query.execute(['test-multiply'], function (err) {
t.equal(err, null);
if (++done === 2) next();
});
query.execute(['test-multiply'], function (err) {
t.equal(err, null);
if (++done === 2) next();
});
function next() {
client.statement('SELECT value FROM mariastream.test WHERE value = ?')
.execute(['test-multiply'], function (err, rows) {
t.equal(err, null);
t.deepEqual(rows, [
{value: 'test-multiply'},
{value: 'test-multiply'}
]);
t.end();
});
}
});
test('close client', function (t) {
client.close(function () {
t.end();
});
});