ndbc-mysql
Version:
The ndbc connector to connect mysql database.
219 lines (218 loc) • 9.14 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const ndbc_connector_1 = require("ndbc-connector");
const __1 = require("..");
const chai_1 = require("chai");
function getString(value, size, defaultValue = " ") {
let str = "";
let count = value === undefined || value == null ? 0 : value.length;
for (let index = 0; index < size; index++) {
if (index < count) {
const element = value[index];
str += element;
}
else {
str += defaultValue;
}
}
return str;
}
function printResult(result, size = 50) {
let columns = result.getMetadata();
let count = columns.length;
let columnLine = "";
for (let i = 0; i < columns.length; i++) {
const element = columns[i];
columnLine += getString(element.getColumnName(), size) + "|";
}
console.log(columnLine);
columnLine = "";
for (let i = 0; i < columns.length; i++) {
columnLine += getString("", size, "=") + "|";
}
console.log(columnLine);
while (result.next()) {
columnLine = "";
for (let i = 0; i < columns.length; i++) {
columnLine += getString(result.getValue(i), size) + "|";
}
console.log(columnLine);
}
}
function initProperties() {
let properties = new Map();
properties.set("host", "localhost");
properties.set("database", "sakila");
properties.set("user", "test");
properties.set("password", "test");
return properties;
}
beforeEach(function () {
ndbc_connector_1.DriverManager.register("mysql", new __1.MySQLDriver());
});
describe('init', function () {
it('Invalid Driver Name', function () {
return __awaiter(this, void 0, void 0, function* () {
try {
let properties = new Map();
yield ndbc_connector_1.DriverManager.connect("mysqla", properties).then((value) => {
chai_1.expect(value).null;
return value;
});
}
catch (err) {
chai_1.expect(err).to.equal("The mysqla does not found.");
}
});
});
it('Requirement Check', function () {
return __awaiter(this, void 0, void 0, function* () {
try {
let properties = new Map();
yield ndbc_connector_1.DriverManager.connect("mysql", properties).then((value) => {
chai_1.expect(value).null;
return value;
});
}
catch (err) {
chai_1.expect(err.toString()).to.equal("Error: The user is required.");
}
});
});
it('Simple Query', function () {
return __awaiter(this, void 0, void 0, function* () {
let connection;
try {
connection = yield ndbc_connector_1.DriverManager.connect("mysql", initProperties());
let statement = yield connection.createStatement("SELECT * FROM actor");
let resultSet = yield statement.execute(new Map());
chai_1.expect(resultSet.next()).true;
chai_1.expect(resultSet.getValue("actor_id")).to.equal(1);
chai_1.expect(resultSet.getValue("first_name")).to.equal('PENELOPE');
chai_1.expect(resultSet.getValue("last_name")).to.equal('GUINESS');
chai_1.expect(resultSet.getValue("last_update").getTime()).to.equal(new Date(2006, 1, 15, 4, 34, 33).getTime());
let rowCount = 0;
while (resultSet.next()) {
rowCount++;
}
chai_1.expect(rowCount).greaterThan(100);
}
finally {
if (connection !== undefined) {
connection.close();
}
}
});
});
it('Meta Query', function () {
return __awaiter(this, void 0, void 0, function* () {
let connection;
try {
connection = yield ndbc_connector_1.DriverManager.connect("mysql", initProperties());
let statement = yield connection.createStatement("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='sakila'");
let resultSet = yield statement.execute(new Map());
chai_1.expect(resultSet.next()).true;
chai_1.expect(resultSet.getValue("TABLE_NAME")).to.equal('actor');
let rowCount = 0;
while (resultSet.next()) {
rowCount++;
}
chai_1.expect(rowCount).greaterThan(10);
}
finally {
if (connection !== undefined) {
connection.close();
}
}
});
});
it('GetCatalogs', function () {
return __awaiter(this, void 0, void 0, function* () {
let connection;
try {
connection = yield ndbc_connector_1.DriverManager.connect("mysql", initProperties());
let resultSet = yield connection.getMetadata().getCatalogs("");
chai_1.expect(resultSet.next()).false;
}
finally {
if (connection !== undefined) {
connection.close();
}
}
});
});
it('GetSchemas', function () {
return __awaiter(this, void 0, void 0, function* () {
let connection;
try {
connection = yield ndbc_connector_1.DriverManager.connect("mysql", initProperties());
let resultSet = yield connection.getMetadata().getSchemas("", "sakila");
chai_1.expect(resultSet.next()).true;
let rowCount = 0;
while (resultSet.next()) {
rowCount++;
}
chai_1.expect(rowCount).greaterThan(6);
}
finally {
if (connection !== undefined) {
connection.close();
}
}
});
});
it('GetTables', function () {
return __awaiter(this, void 0, void 0, function* () {
let connection;
try {
connection = yield ndbc_connector_1.DriverManager.connect("mysql", initProperties());
let resultSet = yield connection.getMetadata().getTables("", "sakila", "", ["TABLE"]);
chai_1.expect(resultSet.next()).true;
chai_1.expect(resultSet.getValue("TABLE_NAME")).to.equal("actor");
let rowCount = 0;
while (resultSet.next()) {
rowCount++;
}
chai_1.expect(rowCount).greaterThan(6);
}
finally {
if (connection !== undefined) {
connection.close();
}
}
});
});
it('GetColumns', function () {
return __awaiter(this, void 0, void 0, function* () {
let connection;
try {
connection = yield ndbc_connector_1.DriverManager.connect("mysql", initProperties());
let resultSet = yield connection.getMetadata().getColumns("", "sakila", "actor");
chai_1.expect(resultSet.next()).true;
chai_1.expect(resultSet.getValue("TABLE_NAME")).to.equal("actor");
chai_1.expect(resultSet.getValue("COLUMN_NAME")).to.equal("actor_id");
chai_1.expect(resultSet.next()).true;
chai_1.expect(resultSet.getValue("COLUMN_NAME")).to.equal("first_name");
chai_1.expect(resultSet.next()).true;
chai_1.expect(resultSet.getValue("COLUMN_NAME")).to.equal("last_name");
chai_1.expect(resultSet.next()).true;
chai_1.expect(resultSet.getValue("COLUMN_NAME")).to.equal("last_update");
chai_1.expect(resultSet.next()).false;
}
finally {
if (connection !== undefined) {
connection.close();
}
}
});
});
});