sharp-db
Version:
Classes for running SQL and building select queries for MySQL in Node
69 lines (65 loc) • 1.31 kB
JavaScript
const realMysql2 = jest.requireActual('mysql2');
const nextResponses = [];
const nextConnects = [];
const nextEnds = [];
class Connection {
connect(oncomplete) {
setTimeout(() => {
if (nextConnects.length === 0) {
oncomplete(null);
} else {
oncomplete(nextConnects.shift());
}
}, 0);
}
end(oncomplete) {
setTimeout(() => {
if (nextEnds.length === 0) {
oncomplete(null);
} else {
oncomplete(nextEnds.shift());
}
}, 0);
}
destroy() {}
query(options, resultHandler) {
setTimeout(() => {
if (nextResponses.length === 0) {
resultHandler(null, [], []);
} else {
const resp = nextResponses.shift();
resultHandler(resp.error, resp.results, resp.fields);
}
}, 0);
return typeof options === 'object' ? options.sql : options;
}
}
const mysql2 = {
createConnection() {
return new Connection();
},
escape(value) {
return realMysql2.escape(value);
},
escapeId(identifier) {
return realMysql2.escapeId(identifier);
},
pushResponse(resp) {
nextResponses.push(resp);
return this;
},
pushConnect(resp) {
nextConnects.push(resp);
return this;
},
pushEnd(resp) {
nextEnds.push(resp);
return this;
},
reset() {
nextResponses.length = 0;
nextEnds.length = 0;
nextConnects.length = 0;
},
};
module.exports = mysql2;