-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathdb-e2e.ts
More file actions
69 lines (57 loc) · 1.69 KB
/
Copy pathdb-e2e.ts
File metadata and controls
69 lines (57 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import { config } from "dotenv";
import mongoose from "mongoose";
config({ path: ".env.test" });
const MONGODB_URI = process.env.MONGODB_URI as string;
export function isE2EDBConnected() {
return mongoose.connection.readyState === 1;
}
export async function connectE2EDB() {
if (!MONGODB_URI) {
throw new Error("🔑 Please define the MONGODB_URI environment variable ");
}
if (isE2EDBConnected()) {
console.log("🗄️ Already connected to E2E test database");
return;
}
try {
await mongoose.connect(MONGODB_URI, { dbName: "devflow" });
console.log("🗄️ Connected to E2E test database");
} catch (error) {
console.error("🔴 Connection to E2E test database failed:", error);
throw error;
}
}
export async function disconnectE2EDB() {
if (!isE2EDBConnected()) {
console.log("🗄️ Already disconnected from E2E test database");
return;
}
try {
await mongoose.disconnect();
console.log("🔌 Disconnected from E2E test database");
} catch (error) {
console.error("🔴 Disconnection from E2E test database failed:", error);
throw error;
}
}
export async function cleanupE2EData() {
if (!isE2EDBConnected()) {
console.log("🗄️ E2E test database is not connected");
return;
}
try {
await mongoose.connection.dropDatabase();
console.log("🟢 Dropped entire E2E test database");
} catch (err) {
console.error("🔴 Cleanup E2E test data failed:", err);
}
}
export function getE2EConnectionInfo() {
const { connection } = mongoose;
return {
dbName: connection.db?.databaseName || null,
host: connection.host || null,
port: connection.port || null,
isConnected: isE2EDBConnected(),
};
}