UNPKG

quickpostgres

Version:

An easy, beginner-friendly PostgreSQL database wrapper similar to quick.db.

106 lines (84 loc) 2.82 kB
/* eslint-disable @typescript-eslint/no-var-requires */ // Please add a reasonable test scenario if you add a method. // For each method added, a test scenario must be added too. // Note: QUICKPOSTGRES_DEV_POSTGRES_URL should never be present except when developing or in CI. const { Client } = require("../dist/index"); require("dotenv").config(); const db = new Client(process.env.QUICKPOSTGRES_DEV_POSTGRES_URL); let count = 0; let errored = false; class Test { value; constructor(value) { this.value = value; count++; } test(expected) { if (this.value === expected) console.log(`✅ Test ${count} passed.`); else { errored = true; console.error( `\n❌ Test ${count} failed.\nReceived: ${this.value}\nExpected: ${expected}\n` ); } } } db.on("ready", () => console.log("ℹ️ Database connected")); db.on("end", () => console.log("ℹ️ Database connection ended")); (async () => { await db.connect(); console.time("⏱ Time to test (excludes connection & end)"); await db.set("users.0", { username: "Zero", email: "zero@quickpostgres.com", points: 50, inventory: ["Item 1", "Item 2"], nested: { object: "Hello world!", }, }); // Test 1 new Test(await db.get("users.0.username")).test("Zero"); // Test 2 new Test(await db.get("users.0.email")).test("zero@quickpostgres.com"); // Test 3 new Test((await db.get("users.0.inventory")).includes("Item 2")).test(true); // Test 4 new Test(await db.get("users.0.nested.object")).test("Hello world!"); await db.push("users.0.inventory", "Item 3"); // Test 5 new Test((await db.get("users.0.inventory")).includes("Item 3")).test(true); await db.add("users.0.points", 10); // Test 6 new Test(await db.get("users.0.points")).test(60); await db.subtract("users.0.points", 50); // Test 7 new Test(await db.get("users.0.points")).test(10); await db.delete("users.0.email"); // Test 8 new Test(!!(await db.get("users.0.email"))).test(false); // Test 9 new Test(await db.has("users.0.email")).test(false); // Test 10 new Test(await db.get("users.0.nonExistentElement")).test(undefined); // Test 11 new Test(await db.has("users.0.nonExistentElement")).test(false); // Test 12 new Test(await db.has("users.0.nested")).test(true); // Test 13 new Test(await db.type("users.0.points")).test("number"); await db.set("users.0", { username: "One" }); // Test 14 new Test(await db.get("users.0.username")).test("One"); // Test 15 try { await db.set("users.0.points", Infinity); new Test(false).test(false); } catch { new Test(true).test(true); } console.timeEnd("⏱ Time to test (excludes connection & end)"); await db.drop(); await db.end(); if (errored) process.exit(1); })();