trying stuff to mock mysql
This commit is contained in:
parent
de94bd4bab
commit
9c16e06446
@ -2,12 +2,11 @@ import mysql from "mysql";
|
|||||||
import logger from "../system/Logger";
|
import logger from "../system/Logger";
|
||||||
require("dotenv").config();
|
require("dotenv").config();
|
||||||
|
|
||||||
// todo remove export
|
const db = mysql.createConnection({
|
||||||
export const db = mysql.createConnection({
|
|
||||||
host: process.env.HOST_DB,
|
host: process.env.HOST_DB,
|
||||||
user: process.env.USER_DB,
|
user: process.env.USER_DB,
|
||||||
password: process.env.PASSWORD_DB,
|
password: process.env.PASSWORD_DB,
|
||||||
database: process.env.NAME_DB,
|
database: (process.env.NODE_ENV === "test") ? process.env.NAME_DB_TEST : process.env.NAME_DB,
|
||||||
});
|
});
|
||||||
|
|
||||||
db.connect(function (err) {
|
db.connect(function (err) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { transformEmojis } from "../utils/string";
|
import { transformEmojis } from "../utils/string";
|
||||||
import { db, execQueryAsync, execQueryAsyncWithId, execQuery } from "./db";
|
import { execQueryAsync, execQueryAsyncWithId, execQuery } from "./db";
|
||||||
import { queryFromId, queryToId, queryCcId } from "./utils/addressQueries";
|
import { queryFromId, queryToId, queryCcId } from "./utils/addressQueries";
|
||||||
|
|
||||||
export async function getAllMembers(messageId: number) {
|
export async function getAllMembers(messageId: number) {
|
||||||
@ -85,11 +85,10 @@ export async function registerThread(roomId: number, parentId: number, rootId: n
|
|||||||
|
|
||||||
export async function isRoomGroup(roomId: number): Promise<boolean> {
|
export async function isRoomGroup(roomId: number): Promise<boolean> {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const query = `SELECT isGroup FROM app_room WHERE room_id = '${roomId}'`;
|
const query = `SELECT isGroup FROM app_room WHERE room_id = ?`;
|
||||||
db.query(query, (err, results, fields) => {
|
const values = [roomId];
|
||||||
if (err) reject(err);
|
const results = execQueryAsync(query, values);
|
||||||
resolve(results[0].isGroup);
|
return results[0].isGroup;
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2102
back/package-lock.json
generated
2102
back/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -29,15 +29,21 @@
|
|||||||
"@types/node": "^18.15.11",
|
"@types/node": "^18.15.11",
|
||||||
"concurrently": "^8.0.1",
|
"concurrently": "^8.0.1",
|
||||||
"jest": "^29.5.0",
|
"jest": "^29.5.0",
|
||||||
|
"sql-mysql": "^1.2.0",
|
||||||
|
"sqlite3": "^5.1.6",
|
||||||
|
"sqlparser": "^0.1.7",
|
||||||
"ts-jest": "^29.0.5",
|
"ts-jest": "^29.0.5",
|
||||||
"ts-node": "^10.9.1",
|
"ts-node": "^10.9.1",
|
||||||
"typescript": "^4.9.5"
|
"typescript": "^4.9.5"
|
||||||
},
|
},
|
||||||
"jest": {
|
"jest": {
|
||||||
"preset": "ts-jest",
|
"preset": "ts-jest",
|
||||||
|
"setupFiles": [
|
||||||
|
"<rootDir>/test/.jest/setEnvVars.js"
|
||||||
|
],
|
||||||
"testEnvironment": "node",
|
"testEnvironment": "node",
|
||||||
"testMatch": [
|
"testMatch": [
|
||||||
"<rootDir>/test//**/*-test.[jt]s?(x)"
|
"<rootDir>/test//**/*-test.[jt]s?(x)"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
1
back/test/.jest/setEnvVars.js
Normal file
1
back/test/.jest/setEnvVars.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
process.env.NODE_ENV = "test";
|
@ -1,3 +1,11 @@
|
|||||||
|
import mysql from "mysql";
|
||||||
|
|
||||||
|
jest.mock("mysql");
|
||||||
|
mysql.createConnection = jest.fn();
|
||||||
|
mysql.createConnection.mockImplementation(() => {
|
||||||
|
return { connect: () => new Promise((resolve, rejects) => resolve(true)) };
|
||||||
|
});
|
||||||
|
|
||||||
import { generateAttrs, generateUsers } from "../test-utils/test-attrsUtils";
|
import { generateAttrs, generateUsers } from "../test-utils/test-attrsUtils";
|
||||||
import registerMessageInApp, { roomType } from "../../mails/saveMessage";
|
import registerMessageInApp, { roomType } from "../../mails/saveMessage";
|
||||||
import { jest, describe, it, expect } from "@jest/globals";
|
import { jest, describe, it, expect } from "@jest/globals";
|
||||||
@ -5,7 +13,6 @@ import { jest, describe, it, expect } from "@jest/globals";
|
|||||||
import { getAddresseId, getUserIdOfMailbox } from "../../db/utils/mail";
|
import { getAddresseId, getUserIdOfMailbox } from "../../db/utils/mail";
|
||||||
// todo esbuild
|
// todo esbuild
|
||||||
// todo mock db
|
// todo mock db
|
||||||
|
|
||||||
// new message from us
|
// new message from us
|
||||||
// to multiple people -> room
|
// to multiple people -> room
|
||||||
// if response has same member => group
|
// if response has same member => group
|
||||||
@ -20,13 +27,12 @@ import { getAddresseId, getUserIdOfMailbox } from "../../db/utils/mail";
|
|||||||
// // make it better
|
// // make it better
|
||||||
// if multiple members reply -> group
|
// if multiple members reply -> group
|
||||||
// if only me reply -> channel
|
// if only me reply -> channel
|
||||||
|
|
||||||
const users = generateUsers(5);
|
const users = generateUsers(5);
|
||||||
const ownUser = users[0];
|
const ownUser = users[0];
|
||||||
const messageId = 1;
|
const messageId = 1;
|
||||||
const boxId = 1;
|
const boxId = 1;
|
||||||
|
|
||||||
jest.mock("../../db/mail", () => ({
|
jest.mock("../../db/utils/mail", () => ({
|
||||||
getAddresseId: jest.fn().mockImplementation((email) => {
|
getAddresseId: jest.fn().mockImplementation((email) => {
|
||||||
const match = users.find((user) => user.user.mailbox + "@" + user.user.host == email);
|
const match = users.find((user) => user.user.mailbox + "@" + user.user.host == email);
|
||||||
return new Promise((resolve, reject) => resolve(match?.id));
|
return new Promise((resolve, reject) => resolve(match?.id));
|
||||||
@ -36,6 +42,10 @@ jest.mock("../../db/mail", () => ({
|
|||||||
}),
|
}),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
describe("saveMessage", () => {
|
describe("saveMessage", () => {
|
||||||
describe("functions", () => {
|
describe("functions", () => {
|
||||||
it("isFromUs", async () => {
|
it("isFromUs", async () => {
|
||||||
|
@ -1,5 +1,35 @@
|
|||||||
export default class DB {
|
const sqlite3 = require("sqlite3").verbose();
|
||||||
constructor() {
|
const sqlMysql = require("sql-mysql");
|
||||||
|
export const db = new sqlite3.Database(":memory:");
|
||||||
}
|
var Parser = require("sqlparser");
|
||||||
}
|
import fs from "fs";
|
||||||
|
// const mysqlQuery = 'SELECT * FROM users WHERE age > 18';
|
||||||
|
// const sqliteQuery = sqlMysql.toSqlite(mysqlQuery);
|
||||||
|
// console.log(sqliteQuery)
|
||||||
|
export function initDatabase() {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const pathSQL = __dirname + "/../../../db/structureV2.sql";
|
||||||
|
// fs.readdir(__dirname + "/../../../db/structureV2.sql", (err, files) => {
|
||||||
|
// if (err) console.log(err);
|
||||||
|
// else {
|
||||||
|
// console.log("\nCurrent directory filenames:");
|
||||||
|
// files.forEach((file) => {
|
||||||
|
// console.log(file);
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
const sqlTables = fs.readFileSync(pathSQL, "utf8");
|
||||||
|
// const sqliteTables = sqlMysql.toSqlite(sqlTables);
|
||||||
|
var sqliteTables = Parser.parse(sqlTables);
|
||||||
|
|
||||||
|
db.serialize(() => {
|
||||||
|
db.run(sqliteTables, (error) => {
|
||||||
|
if (error) {
|
||||||
|
reject(error);
|
||||||
|
} else {
|
||||||
|
resolve(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user