From f615e1be3fda586ba7c782ed6f667acd7c141599 Mon Sep 17 00:00:00 2001 From: Priyansh Narang <145008344+priyansh-narang2308@users.noreply.github.com> Date: Wed, 7 Jan 2026 23:07:41 +0530 Subject: [PATCH 1/3] test: add unit tests and opt express_pg_sequelize template --- templates/express_pg_sequelize/.gitignore | 3 ++ templates/express_pg_sequelize/app.test.js | 31 +++++++++++++++++++++ templates/express_pg_sequelize/index.js | 12 +++++--- templates/express_pg_sequelize/package.json | 7 +++-- 4 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 templates/express_pg_sequelize/.gitignore create mode 100644 templates/express_pg_sequelize/app.test.js diff --git a/templates/express_pg_sequelize/.gitignore b/templates/express_pg_sequelize/.gitignore new file mode 100644 index 00000000..ba920d3a --- /dev/null +++ b/templates/express_pg_sequelize/.gitignore @@ -0,0 +1,3 @@ +node_modules +.env +coverage diff --git a/templates/express_pg_sequelize/app.test.js b/templates/express_pg_sequelize/app.test.js new file mode 100644 index 00000000..bf2d9780 --- /dev/null +++ b/templates/express_pg_sequelize/app.test.js @@ -0,0 +1,31 @@ +import request from "supertest"; +import { jest } from "@jest/globals"; +import app from "./index.js"; +import db from "./db.js"; +jest.mock("./db.js", () => ({ + authenticate: jest.fn(() => Promise.resolve()), + query: jest.fn(() => Promise.resolve([[{ "now()": new Date() }], {}])), +})); +describe("express_pg_sequelize API Endpoints", () => { + it("should return welcome message on GET /", async () => { + const res = await request(app).get("/"); + expect(res.statusCode).toEqual(200); + expect(res.text).toBe("Hello, Express with PostgreSQL!"); + }); + + it("should return DB query results on GET /db-test", async () => { + const res = await request(app).get("/db-test"); + expect(res.statusCode).toEqual(200); + expect(res.body.message).toBe("DB Query Successful!"); + expect(res.body.data).toBeDefined(); + }); + + it("should handle DB errors on GET /db-test", async () => { + db.query.mockImplementationOnce(() => + Promise.reject(new Error("DB Error")), + ); + const res = await request(app).get("/db-test"); + expect(res.statusCode).toEqual(500); + expect(res.body.message).toBe("Error querying the database"); + }); +}); diff --git a/templates/express_pg_sequelize/index.js b/templates/express_pg_sequelize/index.js index 8cda3f95..eca9f27d 100644 --- a/templates/express_pg_sequelize/index.js +++ b/templates/express_pg_sequelize/index.js @@ -27,7 +27,7 @@ app.get("/db-test", async (req, res) => { const [results, metadata] = await db.query("SELECT NOW()"); return res .status(200) - .json({ message: "DB query successful!", data: results }); + .json({ message: "DB Query Successful!", data: results }); } catch (error) { return res .status(500) @@ -36,6 +36,10 @@ app.get("/db-test", async (req, res) => { }); // Start the server -app.listen(appConfig.PORT, () => { - console.log(`Server is running on http://localhost:${appConfig.PORT}`); -}); +if (process.env.NODE_ENV !== "test") { + app.listen(appConfig.PORT, () => { + console.log(`Server is running on http://localhost:${appConfig.PORT}`); + }); +} + +export default app; diff --git a/templates/express_pg_sequelize/package.json b/templates/express_pg_sequelize/package.json index 950f7ade..12a12c7a 100644 --- a/templates/express_pg_sequelize/package.json +++ b/templates/express_pg_sequelize/package.json @@ -4,7 +4,8 @@ "main": "index.js", "scripts": { "start": "node index.js", - "dev": "nodemon index.js" + "dev": "nodemon index.js", + "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js" }, "dependencies": { "express": "^4.17.1", @@ -14,6 +15,8 @@ "dotenv": "^16.4.7" }, "devDependencies": { - "nodemon": "^3.1.9" + "nodemon": "^3.1.9", + "jest": "^29.7.0", + "supertest": "^7.0.0" } } From 4aad91f72d7c68767ad6dd1ada323a82debb78a8 Mon Sep 17 00:00:00 2001 From: Priyansh Narang <145008344+priyansh-narang2308@users.noreply.github.com> Date: Wed, 7 Jan 2026 23:23:57 +0530 Subject: [PATCH 2/3] test: add express_pg_sequelize unit tests and fix ES module config --- package.json | 3 +++ templates/express_pg_sequelize/app.test.js | 17 +++++++++++------ templates/express_pg_sequelize/package.json | 1 + 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 28f0922d..0370af01 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,10 @@ "dotenv": "^16.4.7", "express": "^4.21.2", "jest": "^29.7.0", + "pg": "^8.16.3", + "pg-hstore": "^2.3.4", "prettier": "3.4.2", + "sequelize": "^6.37.7", "supertest": "^7.0.0", "vitepress": "^1.5.0" }, diff --git a/templates/express_pg_sequelize/app.test.js b/templates/express_pg_sequelize/app.test.js index bf2d9780..a8dabc3f 100644 --- a/templates/express_pg_sequelize/app.test.js +++ b/templates/express_pg_sequelize/app.test.js @@ -1,11 +1,16 @@ -import request from "supertest"; import { jest } from "@jest/globals"; -import app from "./index.js"; -import db from "./db.js"; -jest.mock("./db.js", () => ({ - authenticate: jest.fn(() => Promise.resolve()), - query: jest.fn(() => Promise.resolve([[{ "now()": new Date() }], {}])), +import request from "supertest"; + +jest.unstable_mockModule("./db.js", () => ({ + default: { + authenticate: jest.fn(() => Promise.resolve()), + query: jest.fn(() => Promise.resolve([[{ "now()": new Date() }], {}])), + }, })); + +const { default: app } = await import("./index.js"); +const { default: db } = await import("./db.js"); + describe("express_pg_sequelize API Endpoints", () => { it("should return welcome message on GET /", async () => { const res = await request(app).get("/"); diff --git a/templates/express_pg_sequelize/package.json b/templates/express_pg_sequelize/package.json index 12a12c7a..902e3a43 100644 --- a/templates/express_pg_sequelize/package.json +++ b/templates/express_pg_sequelize/package.json @@ -7,6 +7,7 @@ "dev": "nodemon index.js", "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js" }, + "type": "module", "dependencies": { "express": "^4.17.1", "pg": "^8.6.0", From caf3efbb162d1a053982493d1af9c9b89cff8db6 Mon Sep 17 00:00:00 2001 From: Priyansh Narang <145008344+priyansh-narang2308@users.noreply.github.com> Date: Thu, 8 Jan 2026 00:21:23 +0530 Subject: [PATCH 3/3] test: rename express_pg_sequelize test file to index.test.js for readability --- templates/express_pg_sequelize/{app.test.js => index.test.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename templates/express_pg_sequelize/{app.test.js => index.test.js} (100%) diff --git a/templates/express_pg_sequelize/app.test.js b/templates/express_pg_sequelize/index.test.js similarity index 100% rename from templates/express_pg_sequelize/app.test.js rename to templates/express_pg_sequelize/index.test.js