inceptum
Version:
hipages take on the foundational library for enterprise-grade apps written in NodeJS
50 lines • 1.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const LogManager_1 = require("../log/LogManager");
const DBClient_1 = require("./DBClient");
const DBTransaction_1 = require("./DBTransaction");
const logger = LogManager_1.LogManager.getLogger(__filename);
class MockDBTransaction extends DBTransaction_1.DBTransaction {
constructor(mockClient) {
super(null);
this.mockClient = mockClient;
}
query(sql, ...bindArrs) {
const resp = this.mockClient.hasQuery(sql, bindArrs);
if (!resp) {
logger.warn(`Unknown sql query called: ${sql} with params: ${JSON.stringify(bindArrs)}`);
return Promise.resolve([]);
}
if (resp instanceof Error) {
return Promise.reject(resp);
}
return Promise.resolve(resp);
}
// tslint:disable-next-line:prefer-function-over-method
runQueryPrivate(sql, bindArrs) {
throw new Error('Method not implemented.');
}
// tslint:disable-next-line:prefer-function-over-method
runQueryAssocPrivate(sql, bindObj) {
throw new Error('Method not implemented.');
}
// tslint:disable-next-line:prefer-function-over-method
doTransactionEnd() {
throw new Error('Method not implemented.');
}
}
exports.MockDBTransaction = MockDBTransaction;
class MockDBClient extends DBClient_1.DBClient {
runInTransaction(readonly, func) {
return func(new MockDBTransaction(this));
}
registerQuery(sql, resp, ...bindArrs) {
this.registeredQueries.push({ sql, resp, bindArrs: bindArrs || [] });
}
hasQuery(sql, params) {
const query = this.registeredQueries.find((sq) => (sq.sql === sql) && params.length === sq.bindArrs.length && sq.bindArrs.findIndex((expected, idx) => expected !== params[idx]) >= 0);
return query ? query.resp : null;
}
}
exports.MockDBClient = MockDBClient;
//# sourceMappingURL=DBTestUtil.js.map