@smallprod/models
Version:
61 lines (60 loc) • 2.03 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const __1 = require("../..");
const chai_1 = require("chai");
const query_1 = __importDefault(require("../_utils/query"));
describe.each([
['MariaDB', 'maria'],
['MySql', 'mysql'],
['PostgresSql', 'postgres'],
])('Text query tests with %s', (dbName, name) => {
let dbManager;
let model;
beforeAll(async (done) => {
dbManager = __1.DbManager.getInstance();
const m = dbManager.get(name);
if (m) {
model = m;
}
else {
throw new Error(`Database connection not found ${name}`);
}
await query_1.default.create(model, name);
done();
});
beforeEach(async (done) => {
await model.startTransaction();
done();
});
test('An insert query should add a row in the database', async () => {
await model.query(`INSERT INTO categories (label) VALUES ('test');`);
const res = await model.query(`SELECT * FROM categories`);
if (res instanceof Array) {
chai_1.expect(res.length).to.be.equal(1);
}
else {
chai_1.expect(res.rows.length).to.be.equal(1);
}
});
test('Query with parameters', async () => {
await model.query(`INSERT INTO categories (label) VALUES ('toast'), ('toto'), ('titi')`);
const res = await model.query(`SELECT * FROM categories WHERE label LIKE ${name === 'postgres' ? '$1' : '?'}`, ['to%']);
if (res instanceof Array) {
chai_1.expect(res.length).to.be.equal(2);
}
else {
chai_1.expect(res.rows.length).to.be.equal(2);
}
});
afterEach(async (done) => {
await model.rollback();
done();
});
afterAll(async (done) => {
await query_1.default.delete(model);
done();
});
});